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 décembre 2008 à 16:36 Citer
Je suis pas sur de comprendre, c’est une langage de programmation qui est une sur-couche de ceux existants ?
16 décembre 2008 à 16:40 Citer
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).
16 décembre 2008 à 16:49 Citer
ça a un impact sur la programmation intermachines? je pense notement au portage de jeux "PC" > Linux et mac.
16 décembre 2008 à 16:59 Citer
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é…
16 décembre 2008 à 17:07 Citer
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.
16 décembre 2008 à 17:16 Citer
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
16 décembre 2008 à 17:16 Citer
C’est parce microsoft a sa propre solution : DirectX 11 Compute…
16 décembre 2008 à 17:17 Citer
Ah hé OpenCL c’est du CUDA++ (le ++ étant la compatibilité… ATI !).
–
Mhraya
16 décembre 2008 à 17:18 Citer
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.
16 décembre 2008 à 17:19 Citer
Hop.
–
Mhraya
16 décembre 2008 à 17:21 Citer
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).
16 décembre 2008 à 17:22 Citer
Puis bon pour les applis pro.. Quand on voit maya à peine capable d’afficher 5 textures…
16 décembre 2008 à 18:31 Citer
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).
16 décembre 2008 à 18:47 Citer
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).
17 décembre 2008 à 0:43 Citer
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)…
17 décembre 2008 à 11:51 Citer
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é.