Si Nvidia a sauté sur OpenGL 4.4 en publiant dès l'annonce de sa ratification des pilotes Windows et Linux le prenant en charge, le constructeur ne montre pas le même empressement concernant les dernières évolutions d'OpenCL. Pendant ce temps-là, la technologie initiée par Apple évolue et va occuper une place cruciale dans le nouveau Mac Pro.
Pour mémoire, OpenCL est une technologie qui permet de confier des tâches de calcul à la carte graphique (GPU) notamment. On nomme ce fonctionnement GPGPU, pour General Purpose Graphical Processing Unit. OpenCL, qui est un standard ouvert initié par Apple et supervisé par le consortium industriel Khronos Groupe, n'est pas seul sur ce créneau. En 2007, avec l'arrivée des GeForce 8, Nvidia sort la première version de CUDA, sa technologie de GPGPU maison et la réserve à ses produits. Quatre ans plus tard, alors que CUDA est déjà réputé, le constructeur ouvre son code. Cette ouverture n'a cependant pas élargi la prise en charge de la technologie hors des produits de Nvidia, puisqu'AMD préfère se concentrer sur OpenCL.
En septembre dernier, nous rapportions que Nvidia avait tenté de décourager certains éditeurs d'utiliser OpenCL pour leur faire adopter sa solution maison. L'entreprise avait aussi retiré toute sa documentation de son site.
Près d'un an plus tard, la situation a très peu évolué. Certes, la documentation est revenue, mais elle concerne des produits vieux de plusieurs années. L'OpenCL programming guide de Nvidia, le manuel de référence, n'a pas été mis à jour depuis 2009 et le forum dédié n'est toujours pas réapparu sur le site développeur — résultat, les sujets sur OpenCL sont noyés dans le forum portant sur CUDA.
Concernant ses cartes graphiques, Nvidia semble en être resté à la prise en charge d'OpenCL 1.1 pour la quasi-totalité d'entre elles. Sur les fiches des pilotes, soit le constructeur n'indique pas quelle version d'OpenCL est prise en charge, soit il indique qu'il s'agit de la version 1.1 qui est finalisée depuis juin 2010. Ses pilotes compatibles OpenCL 1.1 sont arrivés un an après ceux d'AMD. L'exception semble être certains modèles de GeForce GT 7xxM, des cartes pour ordinateur portable, dont les fiches mentionnent OpenCL 1.2.
De plus, certaines fonctions propres à OpenCL de l'outil Nsight ne marchent pas et les bugs OpenCL soumis à Nvidia ne sont pas corrigés, nous a confié un ingénieur très au fait des technologies de GPGPU qui a souhaité conserver l'anonymat. Nvidia compte-t-elle abandonner cette technologie pour mieux imposer CUDA ? Le constructeur a en tout cas brandi cette menace de l'abandon auprès d'une grande société de développement à la fin de l'année dernière pour influer sur son choix. L'absence de mention d'OpenCL pour Logan, le successeur du Tegra 4 qui est présenté comme le pendant mobile des GeForce Titan, est aussi éloquente. Difficile de savoir s'il s'agit d'un retrait progressif ou bien d'une communication qui omet délibérément OpenCL pour mieux mettre en avant CUDA. Nous avons contacté Nvidia et attendons une réponse.
Le Khronos Group a annoncé hier les spécifications provisoires d'OpenCL 2.0 qui seront ratifiées d'ici six mois. Cette version introduira de vraies avancées fonctionnelles, dont certaines sont déjà présentes dans CUDA. C'est le cas du parallélisme dynamique (dynamic parallelism), qui permet de lancer de nouveaux trends directement depuis le GPU, et de l'espace d'adressage générique (generic address space), qui permet d'écrire des fonctions sans avoir à spécifier un espace d'adressage spécifique. Parmi les autres nouveautés, on peut citer la mémoire virtuelle partagée, qui évite des copies et duplications explicites entre le GPU et CPU, et la meilleure prise en charge d'Android.
Mavericks apporte la prise en charge d'OpenCL 1.2 (la version finale actuelle) et d'OpenGL 4.1. Apple sera donc à jour sur OpenCL — mais la version 2.0 arrivera rapidement après la sortie d'OS X 10.9 —, mais restera en retrait concernant OpenGL dont la version 4.3 est disponible depuis l'année dernière. Est-ce pour autant un problème ? Cela dépend pour qui. Généralement les logiciels qui utilisent les dernières nouveautés d'OpenGL sont surtout des jeux. La version 4.4 facilite notamment le portage d'un jeu créé avec Direct3D. Si Apple veut accueillir plus de jeux sur Mac, elle sait donc ce qui lui reste à faire.
Pour le reste, aussi bien pour OpenGL que pour OpenCL, les développeurs font face à une fragmentation logicielle et matérielle qui ne les encourage pas à adopter immédiatement leurs dernières fonctions. Pour ces développeurs-là, le fait que Mavericks soit « en retard » n'est pas un handicap, au moins à court terme.
Là où on attend Apple, c'est sur iOS. OpenCL permettrait aux applications les plus lourdes de tirer parti du processeur graphique du terminal. D'autant que les GPU des derniers iPhone, iPad et iPod touch prennent en charge OpenCL 1.1.
L'autre sujet chaud, c'est le nouveau Mac Pro. En miniaturisant et en fermant la machine, Apple ne permettra plus d'utiliser facilement le GPU de son choix. Une décision accompagnée d'un second choix, AMD comme fournisseur de carte, qui écarte CUDA du Mac Pro pour de bon. Le nouveau Mac Pro est clairement pensé pour OpenCL.
Dans notre appel à témoins sur la nouvelle tour d'Apple, vous avez été plusieurs à nous indiquer que les performances avec OpenCL conditionnaient votre achat. Grant Petty, le PDG de Blackmagic Design, qui a pu essayer un prototype, a déclaré qu'il était impressionnant et il a laissé entendre qu'il y avait encore des surprises du côté d’OpenCL. Quant à David McGavran, responsable de Premiere Pro chez Adobe, il a également rassuré les utilisateurs qui s’inquiétaient du choix de cartes graphiques AMD qui ne supportent pas les instructions CUDA. « Les applications Creative Cloud fonctionnent avec les technologies OpenCL sur les cartes AMD », a-t-il déclaré (lire : Le Mac Pro a convaincu les pros). Le nouveau Mac Pro et OpenCL vont-ils tenir leur promesse ? Réponse d'ici la fin de l'année.
Stand du Khronos Group au salon Siggraph en 2009 - Photo Khronos Group CC
Pour mémoire, OpenCL est une technologie qui permet de confier des tâches de calcul à la carte graphique (GPU) notamment. On nomme ce fonctionnement GPGPU, pour General Purpose Graphical Processing Unit. OpenCL, qui est un standard ouvert initié par Apple et supervisé par le consortium industriel Khronos Groupe, n'est pas seul sur ce créneau. En 2007, avec l'arrivée des GeForce 8, Nvidia sort la première version de CUDA, sa technologie de GPGPU maison et la réserve à ses produits. Quatre ans plus tard, alors que CUDA est déjà réputé, le constructeur ouvre son code. Cette ouverture n'a cependant pas élargi la prise en charge de la technologie hors des produits de Nvidia, puisqu'AMD préfère se concentrer sur OpenCL.
En septembre dernier, nous rapportions que Nvidia avait tenté de décourager certains éditeurs d'utiliser OpenCL pour leur faire adopter sa solution maison. L'entreprise avait aussi retiré toute sa documentation de son site.
Près d'un an plus tard, la situation a très peu évolué. Certes, la documentation est revenue, mais elle concerne des produits vieux de plusieurs années. L'OpenCL programming guide de Nvidia, le manuel de référence, n'a pas été mis à jour depuis 2009 et le forum dédié n'est toujours pas réapparu sur le site développeur — résultat, les sujets sur OpenCL sont noyés dans le forum portant sur CUDA.
Concernant ses cartes graphiques, Nvidia semble en être resté à la prise en charge d'OpenCL 1.1 pour la quasi-totalité d'entre elles. Sur les fiches des pilotes, soit le constructeur n'indique pas quelle version d'OpenCL est prise en charge, soit il indique qu'il s'agit de la version 1.1 qui est finalisée depuis juin 2010. Ses pilotes compatibles OpenCL 1.1 sont arrivés un an après ceux d'AMD. L'exception semble être certains modèles de GeForce GT 7xxM, des cartes pour ordinateur portable, dont les fiches mentionnent OpenCL 1.2.
De plus, certaines fonctions propres à OpenCL de l'outil Nsight ne marchent pas et les bugs OpenCL soumis à Nvidia ne sont pas corrigés, nous a confié un ingénieur très au fait des technologies de GPGPU qui a souhaité conserver l'anonymat. Nvidia compte-t-elle abandonner cette technologie pour mieux imposer CUDA ? Le constructeur a en tout cas brandi cette menace de l'abandon auprès d'une grande société de développement à la fin de l'année dernière pour influer sur son choix. L'absence de mention d'OpenCL pour Logan, le successeur du Tegra 4 qui est présenté comme le pendant mobile des GeForce Titan, est aussi éloquente. Difficile de savoir s'il s'agit d'un retrait progressif ou bien d'une communication qui omet délibérément OpenCL pour mieux mettre en avant CUDA. Nous avons contacté Nvidia et attendons une réponse.
Un peu de CUDA dans OpenCL 2.0
Le Khronos Group a annoncé hier les spécifications provisoires d'OpenCL 2.0 qui seront ratifiées d'ici six mois. Cette version introduira de vraies avancées fonctionnelles, dont certaines sont déjà présentes dans CUDA. C'est le cas du parallélisme dynamique (dynamic parallelism), qui permet de lancer de nouveaux trends directement depuis le GPU, et de l'espace d'adressage générique (generic address space), qui permet d'écrire des fonctions sans avoir à spécifier un espace d'adressage spécifique. Parmi les autres nouveautés, on peut citer la mémoire virtuelle partagée, qui évite des copies et duplications explicites entre le GPU et CPU, et la meilleure prise en charge d'Android.
Mavericks apporte la prise en charge d'OpenCL 1.2 (la version finale actuelle) et d'OpenGL 4.1. Apple sera donc à jour sur OpenCL — mais la version 2.0 arrivera rapidement après la sortie d'OS X 10.9 —, mais restera en retrait concernant OpenGL dont la version 4.3 est disponible depuis l'année dernière. Est-ce pour autant un problème ? Cela dépend pour qui. Généralement les logiciels qui utilisent les dernières nouveautés d'OpenGL sont surtout des jeux. La version 4.4 facilite notamment le portage d'un jeu créé avec Direct3D. Si Apple veut accueillir plus de jeux sur Mac, elle sait donc ce qui lui reste à faire.
Pour le reste, aussi bien pour OpenGL que pour OpenCL, les développeurs font face à une fragmentation logicielle et matérielle qui ne les encourage pas à adopter immédiatement leurs dernières fonctions. Pour ces développeurs-là, le fait que Mavericks soit « en retard » n'est pas un handicap, au moins à court terme.
Là où on attend Apple, c'est sur iOS. OpenCL permettrait aux applications les plus lourdes de tirer parti du processeur graphique du terminal. D'autant que les GPU des derniers iPhone, iPad et iPod touch prennent en charge OpenCL 1.1.
L'autre sujet chaud, c'est le nouveau Mac Pro. En miniaturisant et en fermant la machine, Apple ne permettra plus d'utiliser facilement le GPU de son choix. Une décision accompagnée d'un second choix, AMD comme fournisseur de carte, qui écarte CUDA du Mac Pro pour de bon. Le nouveau Mac Pro est clairement pensé pour OpenCL.
Dans notre appel à témoins sur la nouvelle tour d'Apple, vous avez été plusieurs à nous indiquer que les performances avec OpenCL conditionnaient votre achat. Grant Petty, le PDG de Blackmagic Design, qui a pu essayer un prototype, a déclaré qu'il était impressionnant et il a laissé entendre qu'il y avait encore des surprises du côté d’OpenCL. Quant à David McGavran, responsable de Premiere Pro chez Adobe, il a également rassuré les utilisateurs qui s’inquiétaient du choix de cartes graphiques AMD qui ne supportent pas les instructions CUDA. « Les applications Creative Cloud fonctionnent avec les technologies OpenCL sur les cartes AMD », a-t-il déclaré (lire : Le Mac Pro a convaincu les pros). Le nouveau Mac Pro et OpenCL vont-ils tenir leur promesse ? Réponse d'ici la fin de l'année.