Redo readme in better-looking rst form
This commit is contained in:
90
README.rst
Normal file
90
README.rst
Normal file
@@ -0,0 +1,90 @@
|
|||||||
|
==============================
|
||||||
|
Intel(r) SPMD Program Compiler
|
||||||
|
==============================
|
||||||
|
|
||||||
|
``ispc`` is a compiler for a variant of the C programming language, with
|
||||||
|
extensions for `single program, multiple data
|
||||||
|
<http://en.wikipedia.org/wiki/SPMD>`_ 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 <http://llvm.org>`_ for back-end
|
||||||
|
code generation and optimization and is `hosted on
|
||||||
|
github <http://github.com/ispc/ispc/>`_. It supports Windows, Mac, and
|
||||||
|
Linux, with both x86 and x86-64 targets. It currently supports the SSE2,
|
||||||
|
SSE4, and AVX 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 <http://ispc.github.com/downloads.html>`_.
|
||||||
|
See also additional
|
||||||
|
`documentation <http://ispc.github.com/documentation.html>`_ and additional
|
||||||
|
`performance information <http://ispc.github.com/perf.html>`_.
|
||||||
22
README.txt
22
README.txt
@@ -1,22 +0,0 @@
|
|||||||
==============================
|
|
||||||
Intel(r) SPMD Program Compiler
|
|
||||||
==============================
|
|
||||||
|
|
||||||
Welcome to the Intel(r) SPMD Program Compiler (ispc)!
|
|
||||||
|
|
||||||
ispc is a new compiler for "single program, multiple data" (SPMD)
|
|
||||||
programs. Under the SPMD model, the programmer writes a program that mostly
|
|
||||||
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. ispc compiles a C-based SPMD programming language to run on the
|
|
||||||
SIMD units of CPUs; it frequently provides a a 3x or more speedup on CPUs
|
|
||||||
with 4-wide SSE units, without any of the difficulty of writing intrinsics
|
|
||||||
code.
|
|
||||||
|
|
||||||
ispc is an open source compiler under the BSD license; see the file
|
|
||||||
LICENSE.txt. ispc supports Windows, Mac, and Linux, with both x86 and
|
|
||||||
x86-64 targets. It currently supports the SSE2, SSE4, and AVX instruction
|
|
||||||
sets.
|
|
||||||
|
|
||||||
For more information and examples, as well as a wiki and the bug database,
|
|
||||||
see the ispc distribution site, http://ispc.github.com.
|
|
||||||
Reference in New Issue
Block a user