Les derniers contenus liés au tag OpenACC

Nvidia rachète PGI, The Portland Group

Publié le 06/08/2013 à 17:24 par Damien Triolet

Afin de renforcer sa position et sa crédibilité dans le monde du HPC, le calcul massivement parallèle, Nvidia vient de racheter The Portland Group (PGI) qui était jusqu'alors propriété de STMicroelectronics. Depuis 1989, PGI conçoit des outils et compilateurs C, C++ et Fortran dédiés aux supercalculateurs. C'est naturellement que la société avait sauté le pas vers le GPGPU notamment en travaillant en étroite collaboration avec Nvidia pour lequel il a développé la version Fortran de CUDA.

PGI s'est ensuite associé à CAPS, Cray et Nvidia pour développer le standard OpenACC, un langage de programmation de haut niveau qui permet d'exploiter les accélérateurs massivement parallèles relativement facilement à l'aide de directives. Présent sur toutes les architectures, PGI propose également un compilateur OpenCL optimisé pour les micro-serveurs à base de CPU multicores d'architecture ARM.

Une acquisition qui est donc logique pour Nvidia, que ce soit en vue de ce dernier point (le développement de son premier core ARM 64-bit est en cours de finalisation) ou pour le GPGPU en général. Tout comme c'était le cas à l'intérieur du groupe STMicroelectronics, PGI va rester une entité indépendante supervisée par Nvidia, tout du moins dans un premier temps. Reste bien entendu à voir si le support des architectures concurrentes restera maintenu dans le temps.


Jeff Herbst, NVIDIA VP of Business Development, Doug Miles, PGI Director et Ian Buck, NVIDIA General Manager of GPU Computing Software.

Dans l'immédiat, Nvidia va pouvoir profiter de synergies dans le développement de compilateurs destinés à l'architecture CUDA. Comme l'indique Ian Buck, General Manager of GPU Computing Software chez Nvidia (et accessoirement le développeur qui a écrit la première version de C pour CUDA), derrière le succès de tout processeur se cache l'équipe de développement des compilateurs. Avec PGI, nul doute que celle de Nvidia se retrouvera renforcée.

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 .

Top articles