Marc PIC & François Bodin
CT++ is a programmation language based on C++ including both data-parallelism and task-parallelism. It allows the programmation of parallel architectures of various types: SIMD, MIMD or Multi-SIMD. Data-Parallelism in CT++ is achieved trhough parallel objects describing a collection of elements to be processed simultaneously. The expression of this parallelism is directly inspired by A++, FORTRAN-90, HPF and DPCE. Task-Parallelism appeared like an extension of data-parallelism thanks to the paradigm of "Tasks Tables". Some additional features come from HPC++. Data-parallellism could be embedded in task-parallelism.
CT++ is a general purpose style language with strong dedication to Image Processing Algorithms. Directives allow to tune the compilation of an algorithm to a specific architectural target. A benchmark of image processing routines have been written in CT++ containing low-level routines (like Correlation,Histogram Equalisation, Wavelet Transform, FFT, etc...) and geometric operations (like Projections, Rotations, Decimation,...).
// declare an image (fill it yourself)
// declare a table to receive the histogram
TENSOR<short> HISTO(256) = 0;
// computation of the histogram
Implementation of CT++ on a specific target is insured thanks to a preprocessing mechanism using the Sage++ tool from the University of Indiana. This mechanism increase the portability of the compiler through various parallel and scalar architectures and it avoids the intrinsic limitations of library programming style.
This langage is dedicated mainly to the family of parallel architectures (both SIMD and Multi-SIMD) developped in the LETI (Commissariat à l'Energie Atomique, Direction des Technologies Avancées) called SYMPHONIE. A version for scalar computers is also under developpement and versions for others parallel architectures and multimedia processors are programmed.