Skip to content

schets/ispc

This branch is 3440 commits behind ispc/ispc:main.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

a789c10 · Jan 9, 2018
Jan 9, 2018
May 4, 2016
Nov 10, 2017
Jan 9, 2018
Jun 3, 2017
Nov 8, 2017
Apr 22, 2015
Aug 7, 2017
Jul 24, 2013
Nov 5, 2013
Jan 9, 2018
Jan 9, 2018
Jan 22, 2012
Jan 9, 2018
Aug 21, 2015
Jul 10, 2015
Oct 3, 2015
Dec 15, 2011
May 1, 2013
May 14, 2017
Apr 22, 2015
Nov 8, 2017
Sep 23, 2013
May 28, 2015
Aug 6, 2014
Jun 12, 2017
Feb 5, 2016
Jul 9, 2015
Mar 12, 2014
Nov 10, 2017
May 16, 2017
Jul 10, 2015
Feb 24, 2016
May 4, 2017
Mar 12, 2014
Jan 9, 2018
Jan 9, 2018
Mar 11, 2015
Jul 12, 2017
Jan 9, 2018
Jul 4, 2016
Nov 10, 2015
Mar 1, 2017
Jul 4, 2016
Nov 8, 2017
Jun 17, 2015
Jun 12, 2017
Mar 12, 2014
Jul 9, 2015
Dec 10, 2013
Feb 25, 2016
Nov 4, 2017
Oct 9, 2011
Nov 7, 2017
Jan 10, 2012
Nov 4, 2017
Jul 10, 2015
Mar 12, 2014
Mar 12, 2014
Apr 22, 2015
Jul 8, 2014
Jul 8, 2014
Jul 21, 2014
Nov 4, 2017
Aug 7, 2017
Jun 17, 2015
Mar 12, 2014

Repository files navigation

Intel(r) SPMD Program Compiler

ispc is a compiler for a variant of the C programming language, with extensions for single program, multiple data programming. Under the SPMD model, the programmer writes a program that generally appears to be a regular serial program, though the execution model is actually that a number of program instances execute in parallel on the hardware.

Overview

ispc compiles a C-based SPMD programming language to run on the SIMD units of CPUs; it frequently provides a 3x or more speedup on CPUs with 4-wide vector SSE units and 5x-6x on CPUs with 8-wide AVX vector units, without any of the difficulty of writing intrinsics code. Parallelization across multiple cores is also supported by ispc, making it possible to write programs that achieve performance improvement that scales by both number of cores and vector unit size.

There are a few key principles in the design of ispc:

  • To build a small set of extensions to the C language that would deliver excellent performance to performance-oriented programmers who want to run SPMD programs on the CPU.
  • To provide a thin abstraction layer between the programmer and the hardware--in particular, to have an execution and data model where the programmer can cleanly reason about the mapping of their source program to compiled assembly language and the underlying hardware.
  • To make it possible to harness the computational power of SIMD vector units without the extremely low-programmer-productivity activity of directly writing intrinsics.
  • To explore opportunities from close coupling between C/C++ application code and SPMD ispc code running on the same processor--to have lightweight function calls between the two languages and to share data directly via pointers without copying or reformatting.

ispc is an open source compiler with the BSD license. It uses the remarkable LLVM Compiler Infrastructure for back-end code generation and optimization and is hosted on github. It supports Windows, Mac, and Linux, with both x86 and x86-64 targets. It currently supports the SSE2, SSE4, AVX1, and AVX2 instruction sets.

Features

ispc provides a number of key features to developers:

  • Familiarity as an extension of the C programming language: ispc supports familiar C syntax and programming idioms, while adding the ability to write SPMD programs.
  • High-quality SIMD code generation: the performance of code generated by ispc is often close to that of hand-written intrinsics code.
  • Ease of adoption with existing software systems: functions written in ispc directly interoperate with application functions written in C/C++ and with application data structures.
  • Portability across over a decade of CPU generations: ispc has targets for SSE2, SSE4, AVX (and soon, AVX2).
  • Portability across operating systems: Microsoft Windows, Mac OS X, and Linux are all supported by ispc.
  • Debugging with standard tools: ispc programs can be debugged with standard debuggers (OS X and Linux only).

Additional Resources

Prebuilt ispc binaries for Windows, OS X and Linux can be downloaded from the ispc downloads page. See also additional documentation and additional performance information.

About

Intel SPMD Program Compiler

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++ 61.3%
  • LLVM 18.9%
  • M4 11.5%
  • Python 4.4%
  • Yacc 2.5%
  • C 0.6%
  • Other 0.8%