Announcing ispc: a SPMD-on-SIMD compiler built on top of LLVM

Today Intel launched ispc, the Intel SPMD Program Compiler, an open-source compiler built on top of LLVM. It is available in both source and binary form from, under a BSD license.

The goal of ispc is to provide a high-performance implementation of a C-based SPMD language for CPUs. The SPMD model has of course been quite successful for high-performance programming of GPUs, and ispc brings similar benefits to CPUs by mapping an SPMD execution model to their SIMD units. It regularly delivers 3-4+x speedups on the 4-wide SSE target, for example. (Running in SPMD on one core’s SIMD units is of course orthogonal to parallelizing across cores, and ispc has flexible support for multi-core task parallelism as well.)

LLVM’s excellent x86 code generation was very helpful to being able to build this system so (relatively) quickly; I’m regularly delighted by the quality of the code that comes out at the end. Working with LLVM has been a spectacular experience, and I’d like to thank everyone involved with the project for building such a great system.


PS: I’m very much looking forward to David Greene’s AVX work landing in the development branch–I expect that ispc will deliver interesting results on AVX very quickly at that point as well!