|
|
CT++ est un langage de programmation à parallélisme de données et de tâches hierarchisé. Il permet la programmation d'architecture SIMD, MIMD et Multi-SIMD(ensemble de neouds SIMD travailllant les uns par rapport aux autres en mode MIMD). Il est basé sur la syntaxe de C++. Le parallélisme de données s'exprime au moyen d'objets décrivant des ensembles de valeurs régulières à traiter simultanément, dans l'esprit de FORTRAN-90, HPF et DPCE. Le parallélisme de tâches apparait comme une extension du parallélisme de données grâce au paradigme du tableau de tâches. Il s'inspire également de l'initiative HPC++. Le parallélisme de données peut de plus s'imbriquer hiérarchiquement dans le parallélisme de tâches.
CT++ est un langage généraliste mais fortement orienté sur le traitement des images. Un mécanisme de directives permet d'ajuster l'exécution d'un algorithme à une architecture particulière. Un benchmark de codes de traitement d'images a été porté en CT++ contenant à la fois des opérations de bas niveau (telles que corrélation, égalisation d'histogramme, transformée en ondelettes, FFT, etc..) et des opérations géométriques (telles que des projectiosn, rotations, decimations...).
// declare une image (a remplir) TENSOR<char> IMAGE(512,512); // declare une table pour recevoir l'histogramme TENSOR<short> HISTO(256) = 0; // calcul de l'histogramme HISTO(IMAGE)++; |
L'implantation de ce langage sur une architecture cible s'effectue au moyen d'un préprocesseur écrit au moyen d'un restructureur source-à-source Sage++. Ce mécanisme assure une grande portabilité inter-architectures et permet d'éviter les limitations défficacité lié à une implantation via des appels de librairies.
Ce langage est destiné en premier lieu à la famille d'architecture SIMD et Multi-SIMD nommée SYMPHONIE conçue au LETI (Commissariat à l'Energie Atomique, Direction des Technologies Avancées). Une version pour architecture séquentielle et un émulateur sont développés simultanément et des versions pour des architectures parallèles différentes sont planifiées.
Documents : (partie en cours de préparation...)