ISPC release with template operators support; improved debugging experience of ISPC code on Windows; multiple stability and performance fixes and more. The release is based on patched LLVM 16.0.6.
ISPC distribution changes:
- ISPC binaries were compiled with LTO by Clang/LLVM toolchain on all supported platforms and architectures using superbuild. ISPC binaries got faster a few percent in average.
- Examples were excluded from ISPC archives. They are placed alongside as separate archives
ispc-examples-v1.22.0.zip
andispc-examples-v1.22.0.tar.gz
.
Language changes:
- Added support for template operators.
- Revised the usage of function specifiers with templates. For more details please refer to Function Templates section of documentation.
Infrastructure changes:
- Release built with LTO (except
aarch64
Linux). - Supported building ISPC with LLVM 17 although GPU support wasn't tested.
New compiler switches:
--dwarf-version
switch accepts DWARF 5 version.--dwarf-version
switch forces DWARF format debug info generation on Windows. It allows to debug ISPC code linked with MinGW generated code (#2129).
Bug fixes:
- Fixed performance regression on GPU caused by missed memory effects for genx intrinsics declarations.
- Fixed performance regression caused by change in the loop unswitch LLVM pass.
- Fixed C compatibility of ISPC generated headers (#2650, #2652).
- Added unwind table to ISPC generated functions for Windows targets. It fixed issues with incorrect backtrace during debugging and profiling (#2345, #1318).
- Fixed emitted code for negate of short float vectors (#2628).
- Fixed several issues that were related to the usage of bool in different cases (#2272, #2333, #2367, #2689).
Recommended versions of Runtime Dependencies when targeting GPU:
Linux:
- Intel(R) Graphics Compute Runtime https://github.com/intel/compute-runtime/releases/tag/23.30.26918.9
- Level Zero Loader https://github.com/oneapi-src/level-zero/releases/tag/v1.14.0
- Threading Building Blocks (TBB)
Alternatively, you can use a validated gfx driver stack supporting Intel® Arc™ available at https://dgpu-docs.intel.com/driver/installation.html
Windows:
- Intel(R) Graphics Windows(R) DCH Drivers 31.0.101.4826 https://www.intel.com/content/www/us/en/download/785597/788440/intel-arc-iris-xe-graphics-windows.html
- Level Zero Loader https://github.com/oneapi-src/level-zero/releases/tag/v1.14.0
- OpenCL™ Offline Compiler (OCLOC) https://www.intel.com/content/www/us/en/developer/articles/tool/oneapi-standalone-components.html (this is needed for AoT compilation on Windows only)
- Supported GPU platforms: Intel(R) Arc Graphics, 11th-13th Gen Intel(R) Core processor graphics
Components revisions used in GPU-enabled build:
- KhronosGroup/SPIRV-LLVM-Translator@8ac46249
- intel/vc-intrinsics@77f069b7
- oneapi-src/level-zero@37363a45 (v1.14.0)
- llvm/llvm-project@7cbf1a25 (llvmorg-16.0.6) + patches from llvm_patches folder