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

CUDA Discussion :

Sortie de CUDA 7.0 : gestion de C++11 et nouvelle bibliothèque d'algèbre linéaire


Sujet :

CUDA

  1. #1
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 607
    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 607
    Points : 188 574
    Points
    188 574
    Par défaut Sortie de CUDA 7.0 : gestion de C++11 et nouvelle bibliothèque d'algèbre linéaire
    CUDA 7, dont la RC vient de sortir, est présentée par NVIDIA comme une « mise à jour importante de la plateforme ». Outre les habituelles améliorations de performances, du côté des plateformes, l’architecture IBM POWER sera maintenant gérée dans toutes les versions du SDK (seule la version 5.5 était disponible) — ce qui n’est pas étonnant, NVIDIA étant membre de la fondation OpenPOWER.

    Du côté du compilateur, nvcc accepte le code C++11 : les « nouvelles » fonctionnalités comme les types automatiques (mot clé auto), les fonctions anonymes (lambdas), les boucles for sur des plages de valeur, etc. Le code accéléré pourra profiter des nombreuses améliorations syntaxiques pour devenir plus clair, plus simple, plus expressif.

    La bibliothèque Thrust, qui imite la bibliothèque standard C++ pour l’accélération sur GPU, est disponible en version 1.8. Cette couche d’abstraction permet maintenant d’appeler des algorithmes Thrust depuis du code pour le GPU ou encore d’exécuter le code par flux. Certains algorithmes ont été retravaillés pour en améliorer les performances, comme le tri (jusqu’à trois fois plus rapide pour des types non primitifs).

    Une autre bibliothèque est maintenant incluse dans la distribution : cuSOLVER, pour l’algèbre linéaire dense (cusolverDN) ou creuse mais aussi pour les problèmes aux valeurs propres (cusolverSP). Le niveau de fonctionnalité est équivalent à LAPACK : les bibliothèques déjà inclues étaient équivalentes à BLAS (cuBLAS, cuSPARSE) et proposaient des fonctionnalités de base en algèbre linéaire (multiplication de matrices, principalement). cuSOLVER apporte les décompositions LU, QR, de Cholesky et en valeurs singulières, ainsi que des solveurs linéaires creux.

    Le code pour le GPU ne doit plus être compilé en même temps que l’application : l’environnement d’exécution propose maintenant une API pour compiler du code CUDA-C++ lors de l’exécution de l’application, avec une possibilité de sauvegarde des noyaux ainsi compilés, nvrtc. L’utilité ? Pour optimiser des noyaux de calcul, une technique courante est d’employer les templates C++ pour générer plusieurs versions du code avec certains paramètres fixés, que le compilateur peut ainsi mieux optimiser ; le problème est que la génération de toutes ces variantes doit être faite à la main avant la compilation (instancier chaque variante et choisir laquelle utiliser) : il sera maintenant possible d’éviter cette étape, puisque le noyau sera compilé juste avant son exécution.

    Source : CUDA 7 Release Candidate Feature Overview: C++11, New Libraries, and More
    Billet de blog.
    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 !

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Août 2008
    Messages
    238
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 238
    Points : 620
    Points
    620
    Par défaut
    On aurait bien aimé le support GCC sous windows.
    Question portabilité Linux/Windows, nous aurions été gagnants.
    Une prochaine fois, peut-être.

  3. #3
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2013
    Messages : 390
    Points : 675
    Points
    675
    Par défaut
    Je crois pas que ce soit a l'ordre du jour. LLVM/Clang a une architecture intermodulaire, qui permet d'inplementer facilement des analyses syntaxiques, appeler des back-end, etc. Pas GCC

  4. #4
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 607
    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 607
    Points : 188 574
    Points
    188 574
    Par défaut
    D'ailleurs, aux dernières nouvelles, le compilateur NVCC était basé sur LLVM : https://developer.nvidia.com/cuda-llvm-compiler. Maintenant, utiliser GCC pour compiler du code CUDA, ça n'est pas de la pure science fiction : les modifications pour sortir du PTX (assembleur de haut niveau utilisé pour les noyaux CUDA, puis compilé par le pilote juste avant exécution) arrivent pour GCC 5.0 (http://www.phoronix.com/scan.php?pag...tem&px=MTgzNTM), mais uniquement dans le contexte d'OpenACC 2.0. Peut-être un jour une implémentation libre de CUDA basée sur GCC… ?
    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 !

  5. #5
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2013
    Messages : 390
    Points : 675
    Points
    675
    Par défaut
    Bien vu pour le PTX. Je ne suis pas trop ce qu'il se passe de coté depuis que NVIDIA a rendu les spécifications publiques (je me souviens juste du projet Ocelot). Et j'avais effectivement vu passer des travaux pour porter OpenACC sur GCC.

    Je crois (mais je n'ai pas étudié en profondeur la question) que LLVM est utilisé parce qu'il permet d'intégrer facilement un back-end dans la chaîne de compilation, ce qui permet par exemple d'utiliser l'arbre syntaxique généré par LLVM/CLang pour faire le pré-travail de compilation du code CUDA (j'imagine que c'est pour cela qu'ils ont pu porter facilement C++11 dans CUDA, si le travail a déjà été fait en partie par LLVM/Clang). GCC est à la base moins modulaire, donc il est probablement plus difficile d'intégrer la compilation CUDA dedans.

    Une différence importante entre LLVM et GCC pour le support de CUDA quand même : le premier est développé par NVIDIA, le second est un projet indépendant. Cela pourrait avoir un impact sur le code généré, en particulier sur les micro-optimisations. Sauf si NVIDIA participe aussi au développement de GCC aussi.

    Peut être un compilateur Visual Studio CUDA un jour ?

  6. #6
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 607
    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 607
    Points : 188 574
    Points
    188 574
    Par défaut
    La version finale est disponible : http://devblogs.nvidia.com/parallelf...-cpp11-cuda-7/.
    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 !

Discussions similaires

  1. Sortie de CUDA 7.5
    Par dourouc05 dans le forum CUDA
    Réponses: 10
    Dernier message: 09/09/2015, 10h02
  2. Réponses: 5
    Dernier message: 13/04/2010, 12h31
  3. Réponses: 9
    Dernier message: 19/02/2009, 13h40
  4. [excel] Pb de gestion de boutons sur une nouvelle feuille
    Par kenny49 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 25/08/2006, 19h22

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