Compiling Python to a hybrid execution environment

April 12th, 2010

Abstract:

A new compilation framework enables the execution of numerical-intensive applications, written in Python, on a hybrid execution environment formed by a CPU and a GPU. This compiler automatically computes the set of memory locations that need to be transferred to the GPU, and produces the correct mapping between the CPU and the GPU address spaces. Thus, the programming model implements a virtual shared address space. This framework is implemented as a combination of unPython, an ahead-of-time compiler from Python/NumPy to the C++ programming language, and jit4GPU, a just-in-time compiler to the AMD CAL interface using CAL pixel shaders. Jit4GPU includes an optimizer that performs several loop transformations and reduces the number of texture instructions. Experimental evaluation was done on a Radeon 4850 and demonstrates that for some benchmarks the generated GPU code is 50 times faster than generated OpenMP code. The GPU performance also compares favorably with optimized CPU BLAS code for single-precision computations in most cases. Code transformations performed by Jit4GPU on GPU code were also shown to produce considerable speedup compared to unoptimized GPU code.

(Rahul Garg and José Nelson Amaral: “Compiling Python to a Hybrid Execution Environment”. Third Workshop on General-Purpose Computation on Graphics Processing Units, held in conjunction with ASPLOS XV, Pittsburgh, PA, March, 2010. [DOI])

Brook+ Now Available on SourceForge

August 6th, 2009

Brook+, AMD’s extension of the BrookGPU programming environment, has been released in full source code to SourceForge. Brook+ supports an ATI CAL and x86 CPU backend, and allows developers to program GPUs in a C-like stream computing language.

CAL.NET 1.0 and CUDA.NET 2.0.3 Released

November 18th, 2008

CAL.NET is an effort to create a library to allow existing .NET applications access ATI/AMD GPU hardware for computational and graphical purposes. Programmers are able to manage the GPU hardware and execute kernels on it transparently. It is currently supported on Windows and Linux platforms with the latest drivers.

The latest release of CUDA.NET, 2.0.3, addresses issues with the previous release and adds many features including CUDA runtime API support and Direct3D/OpenGL interoperability. It is now possible to create hybrid applications with Tao and SlimDX, and an issue with copying vector data from device memory was fixed on Windows.