DivideConcept.net

le blog de divide.

OpenCL, naissance d’une norme globale

Il y a une semaine, la norme OpenCL (Open Computing Language) a été ratifié par les principaux acteurs des nouvelles technologies.

Parmis ceux-ci, on retrouve les incontournables ADM/Apple/Intel/NVIDIA, mais également des fabriquants de processeurs mobiles ARM/Ericsson/IBM/Motorola/Texas Instruments/Nokia/Samsung, le géant IBM, et 2 boites majeures du jeu vidéo, Electronic Arts/Activision Blizzard.

Initié par Apple (et donc intégré d’office dans leur prochain OS, Snow Leopard), OpenCL va permettre d’avoir une norme universelle pour programmer et tirer partie de la puissance materielle disponible, quel que soit le matériel ou les systèmes d’exploitations utilisés.

Actuellement, les normes de programmation sont partionnés comme ça:

(Je n’ai volontairement mis que C++ pour la partie CPU, pour des raisons de clarté; quand a Larabee, il repose sur du matériel Intel qui n’est pas encore disponible, mais qui sera de toute facon très probablement compatible OpenCL aussi puisqu’Intel participe a cette norme)

OpenCL promet une unification totale, un langage de programmation indépendant de toutes ces disparités:

Si la norme se met en place rapidement (et il semblerait que ce soit le cas, ATI et NVIDIA ayant deja annoncé l’avoir intégré à ATI Stream et CUDA), il pourrait s’agir là d’une évolution majeure (on pourrait même parler de révolution à ce stade), permettant d’avoir un seul code portable tirant au maximum partie de la puissance de nos machines, permettant entre-autre l’écriture de moteurs de rendu 3d temps réel sans passer par le rasterizer GPU classique.

16 commentaires pour “OpenCL, naissance d’une norme globale”

  1. jye dit :

    Je suis pas sur de comprendre, c’est une langage de programmation qui est une sur-couche de ceux existants ?

  2. divide dit :

    Si j’ai bien compris, il est actuellement intégré dans CUDA et ATI Stream, qui sont des surcouches de C++ (entendre par surcouche: adressé depuis C++, pas émulé par C++). Donc en installant le SDK CUDA ou ATI Stream, on doit pouvoir adresser les fonctions OpenCL depuis C++.
    Je ne crois pas qu’on puisse le dissocier de C++ car il faut pouvoir également gérer les interfaces, ce qui n’est pas le but d’OpenCL (qui est destiné au calcul brut).

  3. SPTX dit :

    ça a un impact sur la programmation intermachines? je pense notement au portage de jeux "PC" > Linux et mac.

  4. Anonyme dit :

    C’est formidable, pour les applis pro…
    Pour les jeux ça sert a queud, microsoft est pas partenaire, directx est super bien implanté, et en plus c’est une bonne base pour du multiplateforme (entendre pc/xbox). Bref, encore un opengl 2, le truc que meme carmack a abandonné…

  5. divide dit :

    Ano: Je ne sais pas, Blizzard/Activision et EA ont quand même co-signé la norme… J’ai envie d’y croire pour le JV aussi, mais effectivement il manque la signature de Microsoft.

    SPTX: si c’est utilisé pour développer des JV, très certainement.

  6. Anonyme dit :

    Sans MS c’est déjà mort née. De plus il n’y a pas d’uniformisation, ce que DX11 apportera (et fera pareil, voir mieux, qu’OpenCL). Ton second tableau est donc faux, tu devrais séparer les GPU, les CPU (tu oublies le Cell, qui devrait fonctionner avec ce système).

    Bref. C’est surtout une tentative pathétique d’Apple de faire venir du monde sur leurs plateformes pas très sexy pour la 3D. Ils n’ont qu’à continuer avec le grand public et abandonner le privé :-)


    Mhraya

  7. Anonyme dit :

    C’est parce microsoft a sa propre solution : DirectX 11 Compute…

  8. Anonyme dit :

    Ah hé OpenCL c’est du CUDA++ (le ++ étant la compatibilité… ATI !).


    Mhraya

  9. Anonyme dit :

    Ea/blibli/activision comme toutes les boites de jv cherchent la rentabilité, c’est rentable un dev opencl avec un portage vers la 360 derrière ?

    Déjà quand on voit les écarts de temps de dev entre la version x360 et la version ps3 et ce que ça leur coute, je pense pas qu’ils soient pret a sortir des gros titres (potentiellement multiplateforme) avec opencl. Si microsoft avait signé j’étais d’accord avec toi, hros si microsoft ne signe pas, c’est parce qu’ils ont directx et qu’avec ça ils s’assurent des jeux constants sur pc/xbox.

    Le risque pour eux avec opencl si ils avaient marché dans la combine, c’était que directx soit un peu délaissé et que finalement les jeux sortant sur mac/linux assez rapidement fasse migrer les users sur ces os.

    le simple fait que microsoft ne soit pas dans les partenaire veut bien dire ce que ça veut dire, le domaine des jv ne fonctionnera pas/peu avec opencl.

  10. Anonyme dit :

    Hop.


    Mhraya

  11. LeGreg dit :

    Microsoft de son côté prépare les
    Compute shaders qui seront intégrés à Dx11 (et accessibles sur Geforce 8 et générations suivantes).

  12. Ze_PilOt dit :

    Puis bon pour les applis pro.. Quand on voit maya à peine capable d’afficher 5 textures…

  13. divide dit :

    Mhraya: "De plus il n’y a pas d’uniformisation, ce que DX11 apportera (et fera pareil, voir mieux, qu’OpenCL). Ton second tableau est donc faux, tu devrais séparer les GPU, les CPU (tu oublies le Cell, qui devrait fonctionner avec ce système)."

    Comment ca pas d’uniformisation ? OpenCL est censé pouvoir adresser de la meme manière un CPU et un GPU, pourquoi faire une séparation dans le tableau ?

    Quand aux Compute Shaders de DX11 ils s’adressent uniquement aux GPU je suppose, pas au CPU (donc pas une uniformisation hardware comme ce que propose OpenCL).

  14. LeGreg dit :

    L’uniformisation CPU/GPU reste très théorique pour l’instant, parce que cela reste deux bêtes très différentes.

    Dans le domaine du jeu, si par exemple ton GPU permet de faire tourner un programme donné à frame rate interactif (>10fps), tandis que l’execution sur CPU du même programme se compte en secondes par frame, est-ce que c’est comparable ? Probablement pas.

    Le seul gagnant dans l’histoire pour l’instant c’est le GPU, parce que l’apparition d’un standard du GPGPU permet aux sociétés qui acquierent des super computers (clusters de milliers de CPUs), d’arbitrer enfin en terme de throughput per dollar et non plus de payer leurs taxes à Intel ou AMD ou IBM (via power pc/cell clusters).

  15. Mawwic dit :

    J’suis pas expert, mais comme les autres, sans ‘Crosoft derrière, j’y crois qu’à moitié - pour les jeux en tout cas.
    OpenGL a bien fini par être complètement délaissé alors que les jeux tournaient en général bien mieux dessus.

    Et avec en plus l’entrée de DirectX dans les salons via la 360 (et je parle même pas de Windows Mobile)…

  16. skaven dit :

    On ne peut pas parler de révolution pour ca. Ca ne concerne que les developpeurs. Une révolution, c’est la 3DFX par exemple qui changeait totalement le visuel. Ensuite, c’est qu’une norme de plus pour simplifier le dev. Il y aura d’autres normes +/- acceptées.
    Un CPU et un GPU sont trop différents. 2 ou 4 cores dans 1 des centaines dans l’autre.
    Ensuite, je me méfie des normes trop ouvertes. Ca devient très vite le merdier chacun essayant de placer ses petites affaires (cf opengl et ses 300extensions dont 100 en double). Ca va sans doute s’uniformiser dans les années qui viennent. En attendant, pour moi, ca reste un gros draft qui ne sera jamais très exploité.

Laisser un commentaire

Si vous avez un compte sur WeFrag, connectez-vous pour publier un commentaire.

Vous pouvez, entre autres, utiliser les tags XHTML suivant :
<a href="" title="">...</a>,<b>...</b>,<blockquote cite="">...</blockquote>,<code>...</code>,<i>...</i>