Past Meetup

OpenCL 2.0, OpenCL SYCL & OpenMP 4, open standards for heterogeneous parallel pr

Details

Ronan sent me the details - I think this is a better topic.

Here is his latest description (in French):

Avec l'explosion des architectures parallèles hétérogènes dans les systèmes embarqués comme les téléphones jusqu'aux super calculateurs, la programmation parallèle devient LE problème actuel à résoudre. Comme porter un code vers des langages ou bibliothèques parallèles est une tâche ardue, il est particulièrement important de choisir des solutions libres et pérennes. La bonne nouvelle est qu'il y a de nouvelles solutions qui apparaissent pour viser des migrations plus ou moins incrémentales.

Après un survol de quelques exemples d'accélérateurs matériels, dans cet
exposé seront présentées 3 solutions intéressantes assez extrêmes des : OpenMP 4, OpenCL 2 and OpenCL SYCL.

- OpenMP 4 utilise des #pragma pour rajouter la notion de parallélisme à des langages comme Fortran, C et C++. La version 4 permet de cibler à haut niveau les instructions SIMD (vectorielles) des processeurs modernes, améliore la gestion des tâches et la déclaration d'opérateurs de réductions. Les dernières extensions permettent d'exécuter du code sur des accélérateurs matériels de type GPU ;

- OpenCL 2 est un standard ouvert basé sur C99 développés par les membres de l'organisme de normalisation Khronos pour programmer des accélérateurs offrant du parallélisme massifs depuis un hôte. La dernière version apporte la possibilité de mémoire partagée entre hôte et accélérateur, la possibilité de lancer des noyaux de calculs depuis des noyaux sur l'accélérateur, les primitives atomiques et le modèle mémoire du C11, la notion de traitements de flux de données avec les pipes;

- OpenCL SYCL est une surcouche C++11 à OpenCL en cours de ratification et qui accepte les commentaires du public. C'est une approche intéressante pour fusionner les 2 extrêmes précédents dans un DSEL (Domain Specific Embedded Language) basé sur C++11. SYCL apporte une grande unification en proposant un modèle de programmation de plus haut niveau abstrayant la communication entre hôte et accélérateur tout en offrant une compatibilité avec OpenCL et donc permettre d'optimiser plus ou moins profondément en autorisant la programmation de certaines parties en OpenCL.

Ronan Keryell, a Computer scientist in the Performance Application Engineering team at AMD, will speak to us about making your program parallel.

See you there, JHL

See all Meetups from Smart Data | Data Science | Big Data