+ Répondre à la discussion Actualité déjà publiée

Discussion: Annonce de CUDA 9

  1. #1
    Responsable Qt


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherches
    Inscrit en
    août 2008
    Messages
    22 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

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

    Informations forums :
    Inscription : août 2008
    Messages : 22 140
    Points : 119 128
    Points
    119 128

    Par défaut Annonce de CUDA 9

    NVIDIA annonce CUDA 9,
    la nouvelle version de son API de programmation des processeurs graphiques avec la notion de groupe coopératif

    Parallèlement à ses derniers GPU (de génération Volta), NVIDIA annonce une nouvelle version de son API CUDA. Cette neuvième itération se concentre sur les nouvelles fonctionnalités des GPU annoncés, mais propose également de nouveaux algorithmes dans cuSolver et nvGraph, ainsi qu’un compilateur amélioré — plus rapide, compatible avec le code C++14 pour l’hôte — et une intégration pour les environnements de programmation les plus récents — Visual Studio 2017, Clang 3.9, PGI 17.1 et GCC 6.

    Groupes coopératifs

    Les algorithmes parallèles imposent souvent aux fils d’exécution de travailler de manière collective (et non parfaitement en parallèle et sans synchronisation), ce que le développeur peut faire en groupant certains et en synchronisant ces groupes. CUDA 9 apporte justement cette notion de groupes coopératifs.

    De manière historique, le degré le plus fin de découpage des fils d’exécution est le bloc, qui correspond à une limite physique des premiers GPU entièrement programmables. La synchronisation ne pouvait ainsi se faire qu’entre ces blocs. Cette manière de programmer est difficile à bien assimiler et limite la performance. De plus, les interactions avec les bibliothèques extérieures sont plus compliquées.

    Au contraire, un groupe coopératif est une subdivision plus fine du travail à effectuer, qui peut correspondre à un morceau de bloc ou à plusieurs blocs… voire plusieurs GPU. Les opérations collectives peuvent alors s’effectuer par rapport à ces groupes. Ainsi, le nombre de fils d’exécution par bloc peut varier pour s’adapter au matériel (et donc en extraire un maximum de performance), tandis que la synchronisation n’en pâtit pas.

    Cette fonctionnalité est disponible sur toutes les générations de processeurs graphiques, mais pas tous les détails. Ainsi, la synchronisation entre GPU n’est possible qu’avec les processeurs Pascal et Volta, en dessous d’une trame d’exécution uniquement avec Volta (grâce à un ordonnancement des fils d’exécution entièrement repensé).

    Outils pour développeurs

    Le profileur visuel a reçu deux améliorations majeures pour faciliter l’analyse de la performance des applications utilisant la mémoire unifiée. D’un côté, il montre maintenant les lignes de code où se produit chaque défaut de page du côté CPU (et donc où l’exécution du code doit être interrompue le temps de charger la zone de mémoire demandée).


    De l’autre, la ligne du temps du profileur affiche trois types d’événements liés à l’utilisation de la mémoire unifiée :

    • les goulots d’étranglement (page throttling) qui se produisent quand un processeur est bloqué sur une page de mémoire le temps pour laisser un autre y accéder sans interruption ;
    • les écroulements (thrashing) qui indiquent qu’au moins deux processeurs accèdent à une même région en mémoire virtuelle à tour de rôle, ce qui fait que les pages concernées sont déplacées sans cesse d’un processeur à l’autre ;
    • une correspondance éloignée (remote map) pointe une région en mémoire virtuelle qui a été assignée à un autre processeur, notamment pour éviter un écroulement ou pour combler un manque de mémoire sur le processeur courant.




    Cœurs tensoriels

    Volta est la première architecture GPU de NVIDIA à fournir tant des cœurs de calcul génériques (CUDA) que spécifiques (tensoriels). Ces derniers sont prévus spécifiquement pour une opération : un cœur tensoriel peut mémoriser quatre matrices de seize éléments et effectuer l’opération D = A × B + C.


    Chacun de ces cœurs effectue soixante-quatre opérations de multiplication-addition par coup d’horloge. Rassemblés dans une trame d’exécution, ils peuvent effectuer cette opération de multiplication et d’addition entre seize matrices carrées de seize éléments de côté. En continuant d’assembler ainsi les groupes de cœurs, on peut traiter des matrices de n’importe quelle taille, et cela très rapidement. La principale limitation concerne la précision : les deux matrices à multiplier sont forcément FP16, tandis que les deux matrices d’accumulation peuvent être FP16 ou FP32.

    Source et détails : CUDA 9 Features Revealed : Volta, Cooperative Groups and More.

    Et vous ?

    Qu'en pensez-vous ?

    Voir aussi

    NVIDIA présente sa nouvelle génération de cartes graphiques, Volta accélère d'un facteur trois l'apprentissage profond grâce à ses cœurs tensoriels
    Vous souhaitez participer aux rubriques Qt ou PyQt (tutoriels, FAQ, traductions) ? Contactez-moi par MP.

    Nouveau ! 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
    Membre éprouvé Avatar de marsupial
    Homme Profil pro
    DevOp, Tech leader
    Inscrit en
    mars 2014
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : DevOp, Tech leader

    Informations forums :
    Inscription : mars 2014
    Messages : 563
    Points : 1 267
    Points
    1 267

    Par défaut

    J'espère me tromper, mais je ne saurai dire pourquoi, j'ai le vague pressentiment que celui qui arrivera à coder intelligement un jeu dessus n'est pas encore né...
    Il a fallu des années pour appréhender le µ de la PS2, alors ce bestiau destiné au deep learning... j'ai des doutes...
    Repeat after me
    Le monsieur lutte pour la défense des libertés individuelles et collectives

    Repeat after me...

  3. #3
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    mai 2012
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : mai 2012
    Messages : 160
    Points : 497
    Points
    497

    Par défaut

    Citation Envoyé par marsupial Voir le message
    J'espère me tromper, mais je ne saurai dire pourquoi, j'ai le vague pressentiment que celui qui arrivera à coder intelligement un jeu dessus n'est pas encore né...
    Il a fallu des années pour appréhender le µ de la PS2, alors ce bestiau destiné au deep learning... j'ai des doutes...
    CUDA sert à faire du calcul scientique pas des jeux. D'ailleurs on le fait souvent tourner sur des cartes GPU qui n'ont même pas de sortie graphique.

  4. #4
    Responsable Qt


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherches
    Inscrit en
    août 2008
    Messages
    22 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

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

    Informations forums :
    Inscription : août 2008
    Messages : 22 140
    Points : 119 128
    Points
    119 128

    Par défaut

    D'un côté, si, CUDA sert à faire des jeux : plus précisément, certaines simulations physiques. C'est le cas de certaines solutions de NVIDIA GameWorks — même s'ils semblent migrer vers Direct Compute. Dans ces cas-là, vu qu'on n'a pas forcément besoin d'une précision dingue, ces cœurs tensoriels pourraient être utiles (mais pas forcément difficile à exploiter, vu que ces simulations sont assez classiques au niveau des méthodes numériques).
    Vous souhaitez participer aux rubriques Qt ou PyQt (tutoriels, FAQ, traductions) ? Contactez-moi par MP.

    Nouveau ! 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 habitué Avatar de Matthieu76
    Homme Profil pro
    Étudiant
    Inscrit en
    mars 2013
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2013
    Messages : 170
    Points : 151
    Points
    151

    Par défaut

    Nan mais la question n'est pas là car de plus en plus de boîte de jeu vidéo ne développe plus leur propre moteur mais utilise des moteurs déjà existant tel que Unity ou Enreal Engine. Développer un jeu et développer un moteur de jeu n'est pas le même travaille. Et puis je trouve que certains jeux comme League of legends ou encore Starcraft 2 sont vraiment très bien optimiser et tourne sur des grille-pains.

    En coup cas je viens de commencer il y a 2 semaine la programmation en CUDA et je trouve que le laguage et très clair avec une bonne documentation, rien à redire de ce côté

Discussions similaires

  1. NVIDIA annonce son architecture Pascal et CUDA 8
    Par dourouc05 dans le forum CUDA
    Réponses: 0
    Dernier message: 06/04/2016, 10h26

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