[code-reflection] RFR: Support for Generalized Buffer Type in Hat SPIR-V Backend
hanklo6
duke at openjdk.org
Mon Dec 16 22:24:27 UTC 2024
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
-------------
Commit messages:
- Remove whitespace
- Support iface buffer
- Print log during building module
Changes: https://git.openjdk.org/babylon/pull/298/files
Webrev: https://webrevs.openjdk.org/?repo=babylon&pr=298&range=00
Stats: 518 lines in 5 files changed: 462 ins; 16 del; 40 mod
Patch: https://git.openjdk.org/babylon/pull/298.diff
Fetch: git fetch https://git.openjdk.org/babylon.git pull/298/head:pull/298
PR: https://git.openjdk.org/babylon/pull/298
More information about the babylon-dev
mailing list