+ Répondre à la discussion Actualité déjà publiée
  1. #1
    Responsable Qt


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

    Informations professionnelles :
    Activité : Doctorant
    Secteur : Enseignement

    Informations forums :
    Inscription : août 2008
    Messages : 22 084
    Points : 117 696
    Points
    117 696

    Par défaut Une nouvelle manière d’utiliser du code CUDA sur d’autres architectures : le projet Coriander

    NVIDIA CUDA est et reste la technologie de choix pour l’utilisation de processeurs graphiques pour des calculs. Pour ainsi dire, toutes les bibliothèques d’apprentissage profond utilisent CUDA pour accélérer leurs calculs (pour la plupart, exclusivement) : TensorFlow, Caffe, Torch, Theano, etc. — même si quelques rares bibliothèques s’opposent à cette hégémonie, comme DeepCL. Cependant, cela pose un gros problème à l’écosystème : CUDA est limité aux processeurs fournis par NVIDIA, ce qui limite la concurrence.

    C’est notamment pour cela qu’AMD a lancé le projet de transpilateur HIP, qui vise à transformer du code source CUDA en OpenCL. L’outil est vraiment prévu pour que le code source CUDA ne soit plus utilisé, qu’OpenCL le remplace sur toutes les plateformes — malgré les possibilités d’optimisation possibles uniquement avec CUDA pour les processeurs NVIDIA. Un défaut est que toutes les possibilités du langage CUDA ne sont pas gérées. Certains projets, comme Caffe ou Torch, ont lancé une opération de conversion manuelle, qui a le même genre de défauts : le développement se produit principalement en CUDA, pas en OpenCL.

    Pour améliorer la situation, certains développeurs se sont lancés dans le projet Coriander (anciennement connu sous le nom de CUDA-on-CL) : ils agissent au moment de la compilation, pas sur les sources. Ainsi, un projet peut être développé entièrement avec CUDA, mais être portable sur toutes les architectures de processeurs graphiques (et d’autres plateformes compatibles OpenCL).

    Le principe est proche de HIP : le code CUDA est compilé normalement avec Clang ; ensuite, Coriander traduit le code intermédiaire LLVM en code OpenCL 1.2, qui peut alors être recompilé pour n’importe quelle cible. La partie restante est alors l’API CUDA, qui permet de gérer finement l’exécution sur les processeurs, mais ce travail est actuellement moins abouti. La force de CUDA réside non seulement dans le langage de programmation des GPU, mais aussi dans les bibliothèques de fonctions courantes déjà implémentées et optimisées : pour ce faire, des parties considérables de cuBLAS et cuDNN ont déjà été portées.


    À l’exécution, le code produit est moins performant que s’il était directement exécuté sur un GPU NVIDIA. Cependant, pour des tâches d’apprentissage profond, selon le type d’opérations à effectuer, les résultats peuvent être très proches de ceux de CUDA (opérations unitaires, tangente hyperbolique) ; d’autres sont clairement en dessous (réductions). Cela est en bonne partie dû aux optimisations effectuées par les compilateurs de NVIDIA, mais aussi au fait que le projet Coriander génère du code OpenCL pas forcément traditionnel (afin de coller au mieux à la sémantique de CUDA et éviter des problèmes de correction).




    Voir le code source de Coriander
    .

    Source : présentation à IWOCL.
    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 du Club
    Inscrit en
    juin 2005
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : juin 2005
    Messages : 47
    Points : 53
    Points
    53

    Par défaut

    Ils essaient de faire un Cuda libré ?

  3. #3
    Responsable Qt


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

    Informations professionnelles :
    Activité : Doctorant
    Secteur : Enseignement

    Informations forums :
    Inscription : août 2008
    Messages : 22 084
    Points : 117 696
    Points
    117 696

    Par défaut

    D'une certaine manière, oui : une implémentation de CUDA qui serait assez transparente à l'utilisateur, sans partie propriétaire. Pour le moment, ça semble être équivalent à ajouter quelques lignes dans son Makefile (ou équivalent).
    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 !

Discussions similaires

  1. Réponses: 4
    Dernier message: 29/08/2015, 15h04
  2. Réponses: 35
    Dernier message: 05/04/2011, 11h50
  3. Réponses: 8
    Dernier message: 25/01/2011, 09h23
  4. Les pirates ont trouvé une nouvelle manière de contourner la sécurité
    Par Jean-Philippe Dubé dans le forum Actualités
    Réponses: 7
    Dernier message: 01/09/2009, 13h06

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