1. ISPC简介
ISPC为Intel的一款C程序编译器,是SPMD(Single program, multiple data)编程的扩展。
在SPMD模式下,程序员可仍以常规的串行思维编写串行程序,但在执行时,是由多个程序实例(program instances)在硬件上并行执行。
ISPC编译器可将基于C语言编写的SPMD程序编译到可在支持SIMD的CPU和Intel Xeon Phi架构上运行。 通过ISPC,在支持4-wide vector SSE指令的CPU上,通常可实现3倍以上的性能提升;在支持8-wide AVX vector指令的CPU上,可有5~6倍的性能提升。
ISPC编译器支持多核间的并行,从而可通过增加核数或vector unit size来提升性能。
ISPC的后台代码编译采用LLVM编译架构,目前支持X86/X86-64架构,支持SSE2,SSE4,AVX1,AVX2,AVX512和Xeon Phi的Knight’s Corner指令集。
2. ISPC example编译cmake版本要求大于3.12。
git clone https://github.com/ispc/ispc
cd ispc/examples
mkdir build
cd build
#生成各个项目相应的make文件
cmake ..
#编译指定的项目
cmake --build simple
./simple/simple
cmake --build mandelbrot
./mandelbrot/mandelbrot
若修改mandelbrot_tasks.cpp中的width=768,height=512,与mandelbrot.cpp中的一样,则其运行性能更快:
参考资料: [1] https://ispc.github.io/ [2] https://github.com/ispc/ispc/