Espace membre :
flechePublicité
  • NVIDIA : un compilateur CUDA en X86


    Publié le 21 septembre 2010 par Julien Jay dans les catégories Langage informatique et GTC


    NVIDIA : un compilateur CUDA en X86
    Parmi les annonces de ce premier jour d'ouverture du GPU Technology Conference, la conférence annuelle organisée par NVIDIA autour des techologies du GPU, Jen Hsun Huang, CEO de NVIDIA est revenu sur CUDA. CUDA c'est le nom de l'architecture permettant l'exécution de programme généraliste hautement parallélisé sur les GPU de la firme au caméléon. Disponible sur un large nombre de GPU GeForce récent, CUDA permet tout aussi bien d'accélérer des encodages vidéos pour le grand public que d'accélérer certains calculs scientifiques particulièrement lourds.

    L'annonce du jour au sujet de CUDA c'est l'arrivée d'un nouveau compilateur CUDA en x86. Développé par PGI, ce compilateur permettra d'exécuter du code CUDA sur l'architecture Intel moyennant des performances logiquement moindres. En clair, il sera possible d'exécuter sur son processeur, Intel ou AMD, un programme conçu à la base pour s'exécuter sur la puce graphique. Le compilateur CUDA x86 de PGI sera un produit commercial, entendez par là qu'il sera payant. Sachez enfin que l'arrivée d'un compilateur CUDA x86 avait déjà été évoqué par le passé par NVIDIA mais la firme n'était pas allé au bout de ses développements.

    NVIDIA GTC 2010 - CUDA x86 PGI

    Commentaires des lecteurs

    _
     
    le 21 Sept. 10 à 22h57
    Edition
      
    Des benchs?
     
    le 21 Sept. 10 à 23h16
    Edition
      
    C'est un peu tôt là pour les benchs hein !
     
    le 21 Sept. 10 à 23h26
    Edition
      
    Sachez enfin que l'arrivée d'un compilateur CUDA x86 n'est pas une nouveauté puisque NVIDIA propose le sien depuis quelque temps déjà
    [Auto-Dérision] J'ai enfin une question utile ! [/Auto-Dérision]

    Mais qu'elles sont les avantages de ce compilateur présenté par rapport au compilateur de NVIDIA ?
    Déjà celui là est payant, celui de NVIDIA est il gratuit?
    Ou sinon plus cher?
    Edité le 21/09/2010 à 23:28
     
    le 21 Sept. 10 à 23h28
    Edition
      
    C'est de l'émulation, les performances risquent d'être assez nazes...
     
    le 21 Sept. 10 à 23h33
    Edition
      
    ou tard...vu l'heure
     
    le 22 Sept. 10 à 00h13
    Edition
      
    C'est quoi l'intérêt du truc là ?

    Il y en a beaucoup des programmes conçus exclusivement pour CUDA qui ne puissent pas être sortis directement en x86 plutot que de recompiler un truc prévu pour CUDA et qui fatalement sortira des perf. de me##e une fois complié en x86 ?
     
    le 22 Sept. 10 à 00h46
    Edition
      
    ça évite surtout de faire 2 codes différents pour ceux qui n'on pas de carte Nvidia. comme ca la meme appli peu tourner avec ou sans carte nvidia
     
    le 22 Sept. 10 à 00h57
    Edition
      
    Et puis on peut imaginer qu'un jour le compilateur ne sera pas logiciel mais... en hardware virtualisé sur la puce graphique... Et ça permettrait des trucs assez sympas... comme... voyons... lancer l'OS sur la carte graphique ?
     
    le 22 Sept. 10 à 07h27
    Edition
      
    froussey a écrit:
    ça évite surtout de faire 2 codes différents pour ceux qui n'on pas de carte Nvidia. comme ca la meme appli peu tourner avec ou sans carte nvidia

    Tout à fait, c'est surtout ça l'intéret. D'un point de vue performances j'ai plus de doutes, les algorithmes portés sur CUDA sont souvent complètements transformés pour profiter des spécificités des GPUs (nombre énorme de threads, mémoire partagé par block, etc), une exécution sur CPU d'un code GPU risque d'être bien plus lente qu'avec le code séquentiel d'origine.
    Edité le 22/09/2010 à 07:28
     
    le 22 Sept. 10 à 09h20
    Edition
      
    Nan mais je ne vois toujours pas l'intérêt.

    Une application codés pour CUDA c'est quand même un code très spécifique. Le rebalancer vers du x86 ça ne peut qu'être un désastre.

    Deux choses:

    Soit l'application a vraiment besoin de la puissance de calcul du GPU et est totalement optimisée pour CUDA (ou OpenCL ou autre) => Le portage sur du x86 n'a pas de sens car cela va à l'encontre de la philosophie même de cette application et du choix d'un développement CUDA.

    Soit l'application est déjà une application "générique" et existe en x86 avant d'être optimisée CUDA pour les traitements qui peuvent l'être.

    Je vois franchement mal un développeur d'une appli 100% CUDA la sortir en x86 pour se retrouver avec un veau 100x moins performant juste pour une histoire de compatibilité.


    linxeye a écrit:
    Et puis on peut imaginer qu'un jour le compilateur ne sera pas logiciel mais... en hardware virtualisé sur la puce graphique... Et ça permettrait des trucs assez sympas... comme... voyons... lancer l'OS sur la carte graphique ?

    Euh ... compte tenu des pertes inévitables (virtualisation, compiltation à la volée, etc) ça ne peut qu'aboutir à un pure désastre
    C'est vraiment se compliquer la vie pour un résultat totalement improbable

    En plus là tu inverse les rôles: Toi tu parles d’exécuter du code X86 sur un GPU, là on parle d’exécuter du code CUDA sur un CPU x86 ... donc si je reste sur ton "exemple" ça reviendrai à virtualiser une application prévue pour le GPU avec le CPU. Bref un retour en arrière vis-à-vis justement du développement d'application sur GPU.

    Je comprends qu'on veuille s'affranchir du facteur "nvidia", mais à ce compte là on utilise un compilateur OpenCL ou DirectCompute permettant d'exploiter n'importe quel GPU qui soit au niveau. Mais au point de s'affranchir totalement du GPU en rebalancer le code vers du x86 juste pour "ne pas avoir deux codes différents"... bof.
     
    le 22 Sept. 10 à 09h35
    Edition
      
    Je pense qu'il faut plus y voir un préparation du futur, quand on voie déjà des config en 80 thread x86, Les labos seront peut-être plus intéressé si il savent qu'il peuvent se passer des cartes graphiques.
     
    le 22 Sept. 10 à 10h27
    Edition
      
    Attention à ne pas croire que la programmation GPU est toujours plus puissante que celle CPU!

    Ce qu'il ne faut pas oublier c'est qu'il est nécessaire de copier les données à traiter de la RAM vers la mémoire graphique, ce qui est très lent, puis de recopier les données résultantes dans l'autre sens. Pour une opération lourde comme un encodage d'image, on y gagne pas mal car au final le temps de transfert n'est pas le plus long dans l'opération, mais pour la plupart des travaux c'est plus lent au final.

    Lancer un OS sur le GPU par exemple, tâche qui ne demande pas spécialement de calculs lourds, serait certainement plus lent qu'au CPU, car on passerait notre temps à faire des transfert RAM->GPU GPU->RAM (le GPU n'ayant pas accès aux disques, il doit passer par la RAM).
    Edité le 22/09/2010 à 10:32
     
    le 22 Sept. 10 à 11h54
    Edition
      
    Dams333 a écrit:

    Lancer un OS sur le GPU par exemple, tâche qui ne demande pas spécialement de calculs lourds, serait certainement plus lent qu'au CPU, car on passerait notre temps à faire des transfert RAM->GPU GPU->RAM (le GPU n'ayant pas accès aux disques, il doit passer par la RAM).

    Lancer un OS sur le GPU à la base c'est la réfléction d'un débile qui n'a rien compris à ce qu'était un GPU. Faut pas prendre la peine d'y répondre.

    Sinon le compilo x86 CUDA est encore un truc pour faire des benchs à la con qui montrent que le GPU est 1000 fois plus rapide que le CPU (sauf dans la vrai vie).
    Edité le 22/09/2010 à 11:54
     
    le 22 Sept. 10 à 12h07
    Edition
      
    Dams333, oui, c'est assez pertinent. Mais qu'en serait-il si on mettait le GPU et le CPU côte à côte ?

    acidbao, si tu parviens à répartir à la volée les calculs entre CPU et GPU, en supposant qu'ils sont très proches géographiquement, ça peut-être cool. Et t'es pas obligé de traiter de "débile" ceux qui n'ont pas très bien compris ce qu'est un GPU...
     
    le 22 Sept. 10 à 12h48
    Edition
      
    pwang a écrit:
    Dams333, oui, c'est assez pertinent. Mais qu'en serait-il si on mettait le GPU et le CPU côte à côte ?
    Difficile à dire... si tu met le GPU sur la carte mère, cela veut dire qu'il va partager sa mémoire avec le CPU, et tu perds donc le côté "indépendant" des deux unités. De plus la mémoire des cartes graphiques est plus rapides que celles des CPU (et plus chère). Pour finir mettre un GPU directement sur la carte mère demanderait je penses de lourdes modifications dans les architectures actuelles.

    Le GPU n'est pas un super CPU beaucoup plus puissant. C'est un CPU plus limité en fonctionnalités mais plus parallèle. Son utilisation est très spécifique. Peut-être que, effectivement, l'avenir des ordinateurs passe par l'intégration des deux à la fois sur la carte mère, ou bien peut-être verra-t-on des CPU "mi-CPU/mi-GPU". Reste le problème qu'en programmation parallèle on est très limité par le bus mémoire, car si plusieurs cores peuvent travailler indépendamment, ils ne peuvent accéder à la Ram en même temps sans perte. Et je penses que le nombres de core évolue plus vite que la vitesse des mémoires, à vérifier.
     
    le 22 Sept. 10 à 13h15
    Edition
      
    Dams333 a écrit:
    ou bien peut-être verra-t-on des CPU "mi-CPU/mi-GPU".

    Pourquoi "verra" et "peut-etre" ??

    AMD Fusion.. Intel Sandy Bridge... etc.. ça ne te dis rien ça ?

    Même la nouvelle version de la Xbox360 est equipée d'une puce combinant CPU et GPU dans le même Die.
     
    le 22 Sept. 10 à 13h19
    Edition
      
    acidbao a écrit:
    Sinon le compilo x86 CUDA est encore un truc pour faire des benchs à la con qui montrent que le GPU est 1000 fois plus rapide que le CPU (sauf dans la vrai vie).
    Sauf dans la vraie vie ? Je vois qu'on a affaire à un expert en calcul scientifique
     
    le 22 Sept. 10 à 14h05
    Edition
      
    Dark Saucisse a écrit:
    acidbao a écrit:
    Sinon le compilo x86 CUDA est encore un truc pour faire des benchs à la con qui montrent que le GPU est 1000 fois plus rapide que le CPU (sauf dans la vrai vie).
    Sauf dans la vraie vie ? Je vois qu'on a affaire à un expert en calcul scientifique
    Je suis GPU-sceptique

    Dans mon expérience, ça dépend beaucoup des applications.
    Seulement ne pas croire que massivement parallélisable est forcément à l'avantage du GPU (car l'accès à la mémoire est finalement très limité pour être optimal).

    Par contre si on veut "prouver" que dans 100% des cas le GPU est meilleur ce compilo est la bonne "solution".
     
    le 22 Sept. 10 à 16h52
    Edition
      
    Le_poilu a écrit:
    AMD Fusion.. Intel Sandy Bridge... etc.. ça ne te dis rien ça ? Même la nouvelle version de la Xbox360 est equipée d'une puce combinant CPU et GPU dans le même Die.
    et ça fonctionne bien? Je suis intéressé si t'as un lien avec des bench sur ces archi.
     
     
    Pour participer, inscrivez-vous ou connectez-vous avec votre compte clubic.com ou Facebook Connect

  • Les bons plans !

     

BE GEEK ! Avec Clubic Logo

flechePublicité