General-Purpose Computation on Graphics Hardware

A major new release of the Intel SPMD Program Compiler (ispc) was posted on December 5, 2011. ispc is an extended version of the C programming language with support for “single program, multiple data” (SPMD) programming on the CPU; the SPMD model makes it easy to harness the full power of both the SIMD vector units and multiple cores on modern CPUs. The major features added in the 1.1 release include:

Full support for pointers, including pointer arithmetic, function pointers, and all other features of pointers in C.

A new parallel “foreach” statement, for more easily mapping computation to data.

Substantially revised documentation, including a new Performance Guide.

Many other small bug fixes and improvements.

ispc is open-source and is licensed under the BSD license. Source and binaries are available from http://ispc.github.com.

This is starting to get close to what’s needed for high performance general-purpose GPU programming. Unfortunately:
(a) it lacks any GPU back ends; it only targets Intel CPUs (vector units and minimal multicore support). Because of this I’m not even sure why this article was posted here.
(b) it doesn’t have any N-dimensional scan (reduce), send, get or array shift primitives; basically totally lacking runtime N-d array support. These will be necessary to transparently target CPUs and GPUs (e.g. constant and texture hardware).

So unfortunately we still have a long way to go before we can use a C* or HPF-like language to program across CPUs, clusters and GPUs.

http://www.preciolandia.com/br/ Loja

Any other similar open-source and BSD licensed solutions available? Thanks.