diff --git a/README.rst b/README.rst new file mode 100644 index 00000000..c9ae1512 --- /dev/null +++ b/README.rst @@ -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 +`_ 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, 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 `_. +See also additional +`documentation `_ and additional +`performance information `_. diff --git a/README.txt b/README.txt deleted file mode 100644 index f8f3952a..00000000 --- a/README.txt +++ /dev/null @@ -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.