Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

CppCon 2016 : "Clang et C++ sur GPU : un compilateur C++ open source et compatible avec CUDA"
Par Justin Lebar

Le , par Coriolan

38PARTAGES

6  1 
Le CPU a toujours constitué le principal levier de traitement de l’ensemble des opérations lourdes de calcul comme les simulations physiques, le rendu hors-ligne pour les films, les calculs de risques pour les institutions financières, la prévision météorologique, l'encodage de fichier vidéo et son, etc. Véritable chef d’orchestre de l’ordinateur, le CPU a permis à Intel de dominer largement tous les besoins de calcul et d’engranger de substantielles marges avec ses 80% de parts de marché. Certains de ces calculs lourds sont cependant facilement parallélisables et peuvent donc bénéficier d'une architecture pensée pour le calcul parallèle. La plupart des architectures parallèles étaient lourdes, chères et s'adressaient à un marché de niche jusqu'à ce que le GPU s'impose comme un acteur important du calcul parallèle.

Le GPU bénéficie d’une large diffusion favorisée par le marché important des jeux vidéos, ce qui a permis d’en réduire considérablement les couts par rapport à une architecture trop spécialisée. Pour comprendre les différences fondamentales entre un CPU et un GPU, il suffit de comparer leur manière de traiter chaque opération. Les CPU incluent un nombre restreint de cœurs optimisés pour le traitement en série, alors que les GPU intègrent des milliers de cœurs conçus pour traiter efficacement de nombreuses tâches simultanées.

Les constructeurs ont décidé donc de mettre en place des langages permettant de tirer profit des possibilités offertes par les processeurs graphiques. Au début, ATI a développé Close to Metal, une librairie très bas niveau suppléée par la suite par Stream. Ensuite vient NVIDIA, avec CUDA, une technologie disponible sur toutes les cartes graphiques grand public depuis la série des GeForce 8000. Cependant, la programmation des GPUs peut s’avérer délicate. C++ est rarement disponible dans une forme non modifiée et il existe peu d’approches portables et open source. L’une des plateformes les plus populaires, CUDA, n’a pratiquement aucune implémentation open source de qualité. Par conséquent, son support pour C++ est resté à la traine et n’a pas constitué un attrait pour les chercheurs et tous ceux qui n’ont pas été convaincus par les outils de NVIDIA.

Néanmoins, les choses commencent à changer aujourd’hui. Clang est maintenant un compilateur GPU open source et entièrement fonctionnel. Il fournit un modèle de programmation compatible avec CUDA et peut compiler la plupart des bibliothèques de cette technologie allant de Thrust à Eigen et TensorFlow.

Dans cette conférence, Justin Lebar qui est un ingénieur de Google, va donner un aperçu sur comment LLVM et Clang supportent C++ sur GPU, comment ils sont compatibles avec un code existant de CUDA et comment il est possible aujourd’hui d’écrire du code pour l’exécuter sur des GPU à l’aide de ce compilateur open source.


Source : YouTube

Et vous ?

Qu'en pensez-vous ?

Voir aussi :

La rubrique C++ : forum C++, cours et tutoriels C++, FAQ C++
CppCon 2016 : Bjarne Stroustrup parle de l'évolution de C++ et s'intéresse à son passé, à son présent mais aussi à son futur
CppCon 2016 : Persuader les programmeurs de C de migrer vers C++, par Dan Saks
[HPC] Google contribue à un compilateur libre pour CUDA, leurs passes d'optimisation dans LLVM peuvent battre le compilateur de NVIDIA

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de AoCannaille
Membre émérite https://www.developpez.com
Le 18/10/2016 à 16:52
Citation Envoyé par rhoarau Voir le message

D'ailleurs pour ceux qui serait intéressé par une alternative à CUDA (Single source en c++), Il y a OpenCL SYCL (https://www.khronos.org/sycl)
qui est sortie récemment (bizarrement aucune news dessus, alors que pour CUDA, on en a une à chaque version -_-').
Tous les rédacteurs sont bénévoles et n'importe qui peut l'être. Si tu veux une news sur OpenCL SYCL à chaque version, personne ne t’empêche de le faire
7  0 
Avatar de athlon64
Membre confirmé https://www.developpez.com
Le 18/10/2016 à 21:13
bonjour,

En y réfléchissant ce n'est pas plus mal, ça permet de ne pas être cloisonné à OpenCL ou CUDA.

Pourquoi se priver d'un troisième candidat qui plus est open source ?

AMD, Intel et d'autres acteurs font aussi avancer OpenCL, même Nvidia(essaie) sans oublier ARM...

Les puces graphiques sont devenues tellement puissantes que le mot révolution se serait pas usurpé.

Par exemple la GTX 1080 a une puissance de calcul en simple précision de plus de 8 000 GFlops, (c'est à peu près l’équivalent du superordinateur le plus puissant au monde en l'an 2000)

le dernier core i7 6700 doit faire dans les 400 GFlops une échelle de 1/20 .

Cette puissance de calcul est devenu une mine d'or pour les "black hackers" pour décoder les mots de passe.

je me suis amusé à faire un test avec une vielle carte graphique de 2011,

tous mes mots de passe de moins de 8 caractères sont tombés en moins de 2 minutes (MD4, en force brute). Une seule GTX 1080 pour du MD4 c'est 50 milliards de hash/seconde, vous en mettez 4 ou 8

bonjours les dégâts. C'était pour du test car cet algorithme a disparu, mais on trouve encore du MD5, bref heureusement que le GPU ça sert pas que à ça .

Le GPGPU est maintenant utilisé dans des domaines comme le deep learning, la biotechnologie, les simulations, la finance, etc.
5  0 
Avatar de rhoarau
Futur Membre du Club https://www.developpez.com
Le 18/10/2016 à 14:27
Comme l'a souligné Traroth2, on aurait préféré que Google fasse avancer plutôt OpenCL.
D'ailleurs pour ceux qui serait intéressé par une alternative à CUDA (Single source en c++), Il y a OpenCL SYCL (https://www.khronos.org/sycl)
qui est sortie récemment (bizarrement aucune news dessus, alors que pour CUDA, on en a une à chaque version -_-').
Je suis actuellement entrain de développer un projet avec SYCL et je n'ai aucun regret d'avoir laissé tomber CUDA.
4  0 
Avatar de Traroth2
Membre chevronné https://www.developpez.com
Le 18/10/2016 à 13:52
Pourquoi pas OpenCL ?
3  0 
Avatar de tlt
Membre actif https://www.developpez.com
Le 18/10/2016 à 15:13
uniquement cuda ? pas d'openCL ? déjà qu'il existe un wrapper c++ livré avec la sdk cuda . De plus c'est une techno propriétaire à nVidia
3  0 
Avatar de dourouc05
Responsable Qt & Livres https://www.developpez.com
Le 18/10/2016 à 15:51
Citation Envoyé par tlt Voir le message
De plus c'est une techno propriétaire à nVidia
Pas exactement, AMD prépare sa propre "implémentation" de CUDA (donc utilisable sans carte NVIDIA) dans le cadre de GPUOpen (de ce que j'avais vu, c'était surtout de la transpilation depuis CUDA, donc pas toute l'API publique de CUDA : une application existante ne fonctionnera pas sans recompilation).

Implémenter CUDA a beaucoup de sens, au vu de la quantité de code CUDA déjà écrit, qu'il serait difficile de faire passer à OpenCL, même de manière automatisée (sauf dans le cas où la transformation ne risque jamais de perdre quelque chose et garde le même niveau de performance).
2  0