[code-reflection] RFR: Support for Generalized Buffer Type in Hat SPIR-V Backend

Paul Sandoz psandoz at openjdk.org
Thu Dec 19 18:50:46 UTC 2024


On Mon, 16 Dec 2024 22:02:23 GMT, hanklo6 <duke at openjdk.org> wrote:

> This PR introduces support for generalized buffer by creating SPIRV type structure and arrays in the generated module. Most of the implementation references the OpenCL Hat builder. The SPIR-V module assumes the same memory layout as the java buffer object, provided there is not additional customized padding between fields. Also, generated dependent functions from callgraph instead of using code model to resolve the issue where private functions can't be accessed.
> 
> The blackscholes, mandel, and violajones examples now run successfully. However, the violajones example still gets wrong value when accessing `threshold` from `stage` inside `isAFaceStage` function, so I currently update the condition to `sumOfThisStage > threshold`.
> 
> For machines that don't have `float64` capability, enable `FP64` emulation by setting the environment variable: `OverrideDefaultFP64Settings=1` and `IGC_EnableDPEmulation=1` before running. For more details: https://github.com/intel/compute-runtime/blob/master/opencl/doc/FAQ.md#feature-double-precision-emulation-fp64

Nice work. Do the changes you made to the violajones example suggest that there is a mismatch between the layout of the buffer interfaces described by `MemoryLayout` and the SPIRV type structure?

-------------

PR Comment: https://git.openjdk.org/babylon/pull/298#issuecomment-2555546993


More information about the babylon-dev mailing list