You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
An ISPC release with massive update of Xe targets, including support for forthcoming XeHPG GPUs, improvements for double type on AVX512 targets, and multiple standard library improvements. Windows and Linux binaries in this release support both CPU and GPU targets, while macOS binary supports only CPU. This release is based on patched LLVM 12.0.1.
Improvements for CPU targets:
Performance improvements for double type on AVX512 targets - better use of gather/scatter instructions, 2-5x improvements for rsqrt() and rcp() standard library functions.
New avx512skx-i32x4 target.
aos_to_soa and soa_to_aos performance improvements for -x8 and -x16 targets on CPU.
--math-lib=svml mode was fixed and extended - it requires Intel® C++ Compiler (icc or icx) to link the binary.
zen1, zen2, and zen3 CPU definitions were added.
Added experimental support for PS5 platform.
ISPC language got experimental support for IEEE 754 half-precision data type - float16. Not all library functions are supported yet with this type. The key focus in this release was on hardware natively supporting this type.
This update includes breaking changes in compiler switches for Xe targets:
Graphics targets genx-x8 and genx-x16 were renamed to gen9-x8 and gen9-x16.
Compiler architectures for graphics target were renamed from genx32 and genx64 to xe32 and xe64.
Xe targets were renamed from uppercase to lowercase (so instead of SKL/TGLLP it is now skl/tgllp).
A new --device switch (which is an alias for the existing --cpu switch) was introduced. Now the recommended way to specify the required platform for CPU and GPU is: --device=<platform>
Also this release changes export and task functions definition on GPU.
Now GPU kernel is ISPC task function only, export functions cannot be invoked from host (i.e. called from ISPC Runtime/L0 Runtime) anymore. export functions are ready to be linked with and called from other GPU modules. Currently, ISPC experimentally supports such interoperability with Explicit SIMD SYCL* Extension (ESIMD).
New Xe targets were added:
xelp-x8 and xelp-x16. XeLP refers to XeLP generation of hardware (TigerLake chips and alike).
xehpg-x8 and xehpg-x16. XeHPG is the architecture name for the forthcoming Intel® Arc™ GPUs codename Alchemist..
GPU part has a bunch of stability, performance, and usability improvements including but not limited to alloca() with constant parameter support, assume() support, improved performance for double math functions and integer division.
ISPC Runtime performance was improved several times by fixing the setting of local group size for kernels, using events as a synchronization mechanism, and utilizing HW compute and copy engines. There is also a new structure ISPCRTModuleOptions to pass additional options to VC backend if needed. Currently, ISPCRTModuleOptions allows setting of stack size for VC backend which is used to compile SPIR-V.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
-
An ISPC release with massive update of Xe targets, including support for forthcoming XeHPG GPUs, improvements for
double
type on AVX512 targets, and multiple standard library improvements. Windows and Linux binaries in this release support both CPU and GPU targets, while macOS binary supports only CPU. This release is based on patched LLVM 12.0.1.Improvements for CPU targets:
double
type on AVX512 targets - better use of gather/scatter instructions, 2-5x improvements forrsqrt()
andrcp()
standard library functions.avx512skx-i32x4
target.aos_to_soa
andsoa_to_aos
performance improvements for-x8
and-x16
targets on CPU.--math-lib=svml
mode was fixed and extended - it requires Intel® C++ Compiler (icc
oricx
) to link the binary.zen1
,zen2
, andzen3
CPU definitions were added.ISPC language got experimental support for IEEE 754 half-precision data type -
float16
. Not all library functions are supported yet with this type. The key focus in this release was on hardware natively supporting this type.This update includes breaking changes in compiler switches for Xe targets:
genx-x8
andgenx-x16
were renamed togen9-x8
andgen9-x16
.genx32
andgenx64
toxe32
andxe64
.--device
switch (which is an alias for the existing--cpu
switch) was introduced. Now the recommended way to specify the required platform for CPU and GPU is:--device=<platform>
Also this release changes
export
andtask
functions definition on GPU.Now GPU kernel is ISPC
task
function only,export
functions cannot be invoked from host (i.e. called from ISPC Runtime/L0 Runtime) anymore.export
functions are ready to be linked with and called from other GPU modules. Currently, ISPC experimentally supports such interoperability with Explicit SIMD SYCL* Extension (ESIMD).New Xe targets were added:
xelp-x8
andxelp-x16
. XeLP refers to XeLP generation of hardware (TigerLake chips and alike).xehpg-x8
andxehpg-x16
. XeHPG is the architecture name for the forthcoming Intel® Arc™ GPUs codename Alchemist..GPU part has a bunch of stability, performance, and usability improvements including but not limited to
alloca()
with constant parameter support,assume()
support, improved performance for double math functions and integer division.ISPC Runtime
performance was improved several times by fixing the setting of local group size for kernels, using events as a synchronization mechanism, and utilizing HW compute and copy engines. There is also a new structureISPCRTModuleOptions
to pass additional options to VC backend if needed. Currently,ISPCRTModuleOptions
allows setting of stack size for VC backend which is used to compile SPIR-V.Runtime Dependencies when targeting GPU:
Linux:
Windows:
Components revisions used in GPU-enabled build:
KhronosGroup/SPIRV-LLVM-Translator@ed25f1b
intel/vc-intrinsics@3a5f4b4
oneapi-src/level-zero@2824c1f (v1.7.4)
llvm/llvm-project@fed4134 (llvmorg-12.0.1) + patches from llvm_patches folder
This discussion was created from the release === v1.17.0 === (14 January 2022).
Beta Was this translation helpful? Give feedback.
All reactions