Les derniers contenus liés aux tags GPGPU et OpenCL

Nvidia, PGI et Cray dévoilent OpenACC

Publié le 17/11/2011 à 14:48 par Damien Triolet

Le SC11 aura vu débarquer officiellement un énième langage destiné aux accélérateurs massivement parallèle, et en particulier aux GPU : OpenACC. Standard ouvert proposé par Nvidia, The Portland Group (PGI) et Cray, avec l'aide de CAPS, il représente une alternative à une initiative similaire proposée par Microsoft avec C++ AMP.


OpenACC permet ainsi de définir très simplement dans le code les zones à accélérer, à l'aide de directives pour le compilateur, qui se charge ensuite de toute la complexité liée à l'utilisation d'un accélérateur. Cette approche simplifie nettement le travail des développeurs et permet de conserver la compatibilité avec les systèmes dépourvus d'accélérateur, puisqu'il suffit alors d'ignorer ces directives.

Reste bien entendu qu'une telle approche est moins efficace qu'un code optimisé manuellement pour une architecture spécifique, mais elle permet d'obtenir rapidement des résultats intéressants pour les morceaux de code naturellement parallèles, de pouvoir juger de l'intérêt des accélérateurs sans gros investissement et d'éviter d'être enfermé dans le support d'une seule architecture. Compte tenu de temps de développement qui peuvent être très longs, utiliser un langage tel qu'OpenACC et, éventuellement, intégrer quelques fonctions natives lors de la mise en production (cela reste bien entendu possible), permet de limiter les risques.


Un exemple simple de conversion d'un code classique vers le modèle de PGI à base de directives dont OpenACC est très proche.

OpenACC, défini pour C, C++ et Fortran, est une version étendue et ouverte du modèle de programmation à base de directives pour les accélérateurs de PGI, un petit peu comme OpenCL est une version étendue et ouverte de C pour CUDA. OpenACC complexifie légèrement le langage de PGI, ce qui était nécessaire pour étendre ses possibilités. Dans un premier temps 3 compilateurs seront compatibles :

- PGI Accelerator C/C++/Fortran pour CUDA (GPU Nvidia)
- Cray CCE pour systèmes Cray (qui supportent les GPU Nvidia)
- CAPS Enterprise HMPP Workbench (qui supporte OpenCL)

Grossièrement, les compilateurs OpenACC qui sont actuellement prévus concernent avant tout l'utilisation d'accélérateurs CUDA, Nvidia étant l'un des membres à l'origine du langage. Rien n'empêche cependant la mise en place de compilateurs OpenCL, comme le fait CAPS, ou dédiés aux GPU AMD, si ce n'est le fait qu'actuellement chacun semble développer son propre "standard" en prenant soin de nier les initiatives issues de la concurrence.

Reste qu'OpenACC semble avoir été tiré de la réflexion initiale du groupe de travail sur les accélérateurs d'OpenMP, dont l'exploitation représente un des objectifs de la version 4.0 de ses spécifications. Les membres fondateurs d'OpenACC ne cachent d'ailleurs pas leur intention de l'intégrer à OpenMP, précisant que ce lancement anticipé permettra à ce sujet d'obtenir de la part des développeurs des retours importants pour la finalisation du standard complet et robuste d'OpenMP pour le calcul hétérogène.

Vous pourrez obtenir les spécifications complètes de la version 1.0 d'OpenACC par ici .

Dossier : OpenCL : le GPU Computing enfin démocratisé ?

Tags : GPGPU; OpenCL;
Publié le 12/12/2008 à 01:03 par Damien Triolet
Imprimer

6 mois après son annonce, l'API OpenCL a été ratifiée. Destinée au calcul massivement parallèle elle offre une alternative ouverte aux langages propriétaires tels que CUDA. De quoi résoudre le problème de portabilité ?

[+] Lire la suite

OpenCL: prochain standard GPGPU?

Tags : GPGPU; OpenCL;
Publié le 17/06/2008 à 21:22 par Nicolas Gridelet
Imprimer

Hier, en marge de la présentation de la FireStream 9250, AMD a également annoncé qu'il rejoignait le Khronos Compute Working Group. Ce groupe de travail a pour but de développer des standards pour le calcul parallèle et de proposer des spécifications pour l'OpenCL (Open Computer Language). Ce langage pour GPGPU basé sur le C est né à l'initiative Apple et il regroupe déjà 3Dlabs, AMD, ARM, Codeplay, Ericsson, Freescale, Graphic Remedy, IBM, Imagination Technologies, Intel, Nokia, Nvidia, Motorola, QNX, Qualcomm, Samsung, Seaweed, TI ainsi que l'université d'Umeå.

Si avec CUDA, un langage de programmation (également proche du C) qui permet d'exploiter le cœur des GeForce supportant DirectX 10, Nvidia semble très bien parti, de son coté, AMD propose le FireStream SDK depuis plusieurs mois et une version beta (v1.01.0) pour Linux a récemment été mise en ligne.

Les efforts de la division graphique d'AMD semblent commencer à porter leurs fruits puisque Rogue Wave Software (spécialisé dans les composants C++) et RapidMind (Multi-Core Development Platform, pour simplifier le calcul parallèle) viennent d'annoncer leur soutient à la solution du canadien. Dans les deux cas, il s'agit de solutions capables d'exploiter la puissance combinée des CPUs ET des GPUs, ce qui offre des perspectives alléchantes. D'autres sociétés tels que CAPS entreprise, Mercury Computer Systems et VizExperts développent et travaillent également avec AMD sur le FireStream.

Ce n'est certes pas grand chose face au large soutient dont bénéficie actuellement CUDA, mais cela confirme qu'en dehors de leurs fonctionnalités traditionnelles, les GPUs vendus par AMD peuvent et commencent à être utilisés pour autre chose que plier des molécules avec Folding@Home. Et avec au moins deux voire trois acteurs (en comptant Intel avec Larrabee) dans la course dans un premier temps, la lancement de l'OpenCL tombe à pic.

Top articles