IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

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


Sujet :

C++

  1. #1
    Expert éminent sénior
    Avatar de Coriolan
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2016
    Messages
    701
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2016
    Messages : 701
    Points : 51 810
    Points
    51 810
    Par défaut CppCon 2016 : "Clang et C++ sur GPU : un compilateur C++ open source et compatible avec CUDA"
    CppCon 2016 : "Clang et C++ sur GPU : un compilateur C++ open source et compatible avec CUDA"
    Par Justin Lebar

    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
    Contribuez au club : Corrections, suggestions, critiques, ... : Contactez le service news et Rédigez des actualités

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 995
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 995
    Points : 2 528
    Points
    2 528
    Par défaut
    Pourquoi pas OpenCL ?

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Doctorant
    Inscrit en
    Octobre 2016
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Doctorant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1
    Points : 7
    Points
    7
    Par défaut
    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. #4
    tlt
    tlt est déconnecté
    Membre averti Avatar de tlt
    Homme Profil pro
    Programmeur
    Inscrit en
    Juillet 2004
    Messages
    202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Programmeur
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 202
    Points : 412
    Points
    412
    Par défaut
    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

  5. #5
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 618
    Points : 188 591
    Points
    188 591
    Par défaut
    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).
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  6. #6
    Expert confirmé Avatar de AoCannaille
    Inscrit en
    Juin 2009
    Messages
    1 413
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 1 413
    Points : 4 734
    Points
    4 734
    Par défaut
    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. #7
    Membre confirmé Avatar de athlon64
    Profil pro
    Inscrit en
    Février 2009
    Messages
    243
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 243
    Points : 547
    Points
    547
    Par défaut
    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.

Discussions similaires

  1. NVIDIA OptiX ou le ray tracing sur GPU
    Par dourouc05 dans le forum CUDA
    Réponses: 5
    Dernier message: 04/11/2009, 05h23
  2. Votre avis sur un test de tesseract (OCR Open Source)
    Par ecocentric dans le forum Traitement d'images
    Réponses: 2
    Dernier message: 19/09/2008, 12h13
  3. Réponses: 0
    Dernier message: 21/06/2007, 12h00
  4. Parallelisme sur gpu
    Par chonos dans le forum Développement 2D, 3D et Jeux
    Réponses: 3
    Dernier message: 08/03/2006, 13h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo