CGiS is a data-parallel programming language
with explicit parallelism. This thesis examines SIMD code generation for the most popular SIMD instruction sets.
CGiS is a data-parallel programming language providing a unified abstraction for two parallel
processing units in today's desktop PCs: graphics processing units (GPUs) and the vector
processing units of CPUs. The CGiS compiler framework fully virtualizes the differences in
capability and accessibility by mapping an abstract data-parallel programming model on those targets.
The underlying work focuses on applying this model to CPUs with SIMD instruction sets. We have
identified, adapted and implemented a set of program analyses to expose and access the available
parallelism. The code generation phase is based on selected optimization algorithms tailored to SIMD
code generation. Three backends have been implemented to assess the effectiveness of our approach:
Intel's SSE, Freescale's AltiVec and - as an example for multicore architectures - IBM's Cell BE.
Our experimental results show excellent average performance gains and underline the viability of this approach.
Nicolas Fritz
CGiS SIMD data-parallelprogramming