Intel's ISPC Compiler Adds Alder Lake + Sapphire Rapids Support And Apple Arm Chips
On Friday afternoon Intel released a new version of their ISPC compiler, the Implicit SPMD Program Compiler, that supports a variant of the C programming language with extensions around single-program, multiple-data programming for CPU and GPU execution. Not only does this release prepare support for upcoming Intel CPUs but also adds support now for Apple's Arm processors.
While this C-based SPMD programming language and compiler are tailored to Intel's architecture and exploiting the performance especially with SSE and AVX vectorization, the new ISPC 1.16 release adds support for Apple's Arm chips. There are CPU definitions added for Apple's Arm chips going back to the A7. Additionally, support for macOS ARM targets were added to this build as well. With the ISPC compiler being based on the LLVM compiler stack, adding Arm support isn't much of a challenge but will be interesting to see how well this SPMD programming compiler can perform for Arm.
In addition to the Apple Arm bring-up, the ISPC 1.16 compiler brings support for Intel's forthcoming Alder Lake and Sapphire Rapids processors too. The GPU support for ISPC remains in a beta stage for ISPC 1.16, which in turn is leveraging a patched version of LLVM 12. On the GPU front, ISPC 1.16 adds initial multi-GPU support and unified shared memory support as well as preliminary Windows support for GPU computing.
Also notable with ISPC 1.16 is the language now allowing for calling directly LLVM intrinsics from the ISPC source. By being able to call LLVM intrinsics directly from the code, this should allow more performance tuning for areas where new hardware instructions aren't yet used by the ISPC standard library. ISPC 1.16 also adds an assume() optimization hit for communicating code assumptions to the optimizer.
More details on the Intel ISPC 1.16 compiler release via GitHub that beyond having the BSD-licensed open-source code also has reference binaries for Linux, macOS, and Windows.
While this C-based SPMD programming language and compiler are tailored to Intel's architecture and exploiting the performance especially with SSE and AVX vectorization, the new ISPC 1.16 release adds support for Apple's Arm chips. There are CPU definitions added for Apple's Arm chips going back to the A7. Additionally, support for macOS ARM targets were added to this build as well. With the ISPC compiler being based on the LLVM compiler stack, adding Arm support isn't much of a challenge but will be interesting to see how well this SPMD programming compiler can perform for Arm.
In addition to the Apple Arm bring-up, the ISPC 1.16 compiler brings support for Intel's forthcoming Alder Lake and Sapphire Rapids processors too. The GPU support for ISPC remains in a beta stage for ISPC 1.16, which in turn is leveraging a patched version of LLVM 12. On the GPU front, ISPC 1.16 adds initial multi-GPU support and unified shared memory support as well as preliminary Windows support for GPU computing.
Also notable with ISPC 1.16 is the language now allowing for calling directly LLVM intrinsics from the ISPC source. By being able to call LLVM intrinsics directly from the code, this should allow more performance tuning for areas where new hardware instructions aren't yet used by the ISPC standard library. ISPC 1.16 also adds an assume() optimization hit for communicating code assumptions to the optimizer.
More details on the Intel ISPC 1.16 compiler release via GitHub that beyond having the BSD-licensed open-source code also has reference binaries for Linux, macOS, and Windows.
8 Comments