Alán Aspuru-Guzik | Associate Professor
Harvard University | Department of Chemistry and Chemical Biology
12 Oxford Street, Room M113 | Cambridge, MA 02138
(617)-384-8188 |
http://aspuru.chem.harvard.edu |
http://about.me/aspuru
---------- Forwarded message ----------
From: Hanspeter Pfister <pfister(a)seas.harvard.edu>
Date: Tue, Jul 12, 2011 at 11:14 AM
Subject: Intel ISPC
To: scigpu(a)googlegroups.com, CDI Grant PI Private Discussion <
seas-gpu-cdi(a)seas.harvard.edu>gt;, gv <gv(a)seas.harvard.edu>
Cc: Matt Pharr <matt.pharr(a)intel.com>
Here is an interesting presentation by Matt Pharr about Intel's new ispc
compiler. Matt has offered to help anyone out with getting started,
answering questions, etc. You can reach him at <matt.pharr(a)intel.com>
- HP
spc: A Compiler for SPMD on the CPU
Today’s CPUs provide significant amounts of performance through both
multi-core parallelism and through SIMD parallelism in the vector unit of
each core. Server CPUs may have as many as 8-10 cores, each of which with
8-wide AVX vector units. Hundreds of gigaflops of performance are available
from these processors, if their full computational capacity can be brought
to bear. Unfortunately, compilers and programming models to program CPUs
haven’t kept up with hardware changes. Serial C/C++ code on a modern CPU
will run at only 1/64th-1/80th of the CPU’s potential performance, and even
multi-threaded code generally only runs at 1/8th of the CPU’s potential
performance due to poor vector unit utilization.
In this talk, I will discuss ispc, the Intel SPMD Program Compiler. (The
SPMD model (Single Program, Multiple Data) is the one that underlies GPU
programming models like Compute Shader and CUDA.) The ispc compiler
compiles a C-based language to highly efficient vector code; it’s not
unusual for it to provide speedups of over 4x on complex workloads due to
highly efficient vector unit utilization. Coupled with multi-threading, it
provides a programming model that can efficiently fill the CPU with
computation while remaining similar enough to C that it’s easy for
programmers to adopt.
ispc has been released in open-source form under a BSD license and is
available from
http://ispc.github.com.