OpenCL en action : accélération matérielle post-traitement
Sommaire
Personne ne peut prétendre que l’ère des processeurs est révolue. On peut même constater que plusieurs entreprises comme Xilinx vendent encore des dispositifs logiques programmables dont l’intégration des fonctionnalités ainsi que la polyvalence sont nettement inférieures à celles des processeurs modernes. Parfois, la simplicité est gage d’efficacité. Il est vraisemblable que les unités de calcul spécialisées resteront en vogue dans certains segments de marché, tout particulièrement là où le besoin de performances massives est la première des priorités. En revanche, les environnements grand public ne cessent de se diversifier et l’on s’attend donc à ce que le calcul hétérogène – comprendre par là l’intégration de nombreuses ressources de calcul dans un seul composant intégré – continue à gagner en popularité. D’un point de vue conception, ces composants gagneront en complexité eux aussi.
L’aboutissement naturel du calcul hétérogène est le SoC (system-on-a-chip), dans lequel tous (sinon la plupart) les principaux circuits sont intégrés au sein d’une seule puce. Les AMD Geode (sur lesquels s’appuie actuellement le projet « un portable par enfant ») constituent par exemple une évolution des SoC conçus au cours des années 1990. Bien que nombreux SoC accusent encore un déficit de puissance brute pour gérer un PC multi-usages récent, AMD comme Intel vendent des architectures combinant cores CPU, ressources graphiques et contrôle mémoire. Ces APU (accelerated processing unit), tels qu’AMD les appelle, atteignent et même dépassent le niveau de performances que l’on attend de stations de travail spécifiquement orientées productivité. On note tout particulièrement que ces APU associent une conception classique des processeurs à de très nombreuses ALU dont le rôle caractéristique est d’accélérer le rendu 3D, ce qui ne veut pas pour autant dire que ces ressources programmables doivent nécessairement être utilisées pour le jeu : en effet, bon nombre d’autres tâches se caractérisent par un parallélisme naturel. Le fait de les traiter avec un APU muni de centaines de cores plutôt qu’un processeur dual ou quad core ouvre donc un débat intéressant sur le potentiel d’optimisation logicielle pour les SoC à forte intégration.
Historiquement, les circuits graphiques intégrés s’appuyaient sur des fonctions logiques au niveau du northbridge. Cette approche souffrait de sévères goulets d’étranglement et latences, à tel point que l’échelonnement de leurs performances est devenu de plus en plus délicat du fait de l’éloignement des divers composants de la plateforme. On a donc vu cette fonctionnalité migrer vers le CPU, créant ainsi une nouvelle vague de produits non seulement capables de meilleures performances ludiques, mais aussi de traiter un plus grand nombre de tâches à portée générale qui profitent de la nature hybride des SoC (fonctionnalités CPU et GPU).
Pour AMD, cette situation marque le point culminant du projet Fusion, lequel a très probablement motivé l’acquisition d’ATI Technologies en 2006. La firme texane a vu le potentiel offert par l’association de ses propres processeurs à la technologie graphique d’ATI par rapport aux CPU classiques afin d’augmenter sans cesse ses parts de marché ; nul doute qu’AMD était déterminé à être à l’avant-garde de cette transition. De son côté, Intel emploie bien entendu ses propres technologies graphiques, mais le but n’est pas le même : il ne fait aucun doute que le géant de Santa Clara a plus mis l’accent sur ses unités de traitement que sur les technologies graphiques.
Le début de l’année dernière a été marqué par l’arrivée des premiers APU série -C et –E, tous deux gravés en 40 nm. L’intégration a permis d’arriver à produire des modèles basse consommation (9 et 18 Watts), lesquels ont trouvé leur place dans les ultraportables. Aujourd’hui, les APU série –A (Llano) gravés en 32 nm permettent de concentrer suffisamment de ressources afin d’arriver à une architecture digne d’une configuration fixe tout en restant accessibles financièrement parlant.
Les spécifications de ces APU varient à plusieurs niveaux, mais le principal différenciateur entre les modèles ci-dessous est probablement la partie graphique. L’A8 s’appuie par exemple sur une configuration décrite par AMD sous l’appellation Radeon HD 6550D, laquelle repose sur 400 Stream processors (ou Radeon cores ou Shaders suivant le terme que l’on préfère employer). L’A6 bénéficie d’une Radeon HD 6530D qui compte 320 stream processors, tandis que la Radeon HD 6410D de l’A4 se contente de 160 stream processors.
Nous avons récemment publié un comparatif de CPU & APU à moins de 200 euros pour évaluer leurs performances ludiques, lequel nous a déjà permis de voir comment se comportaient les APU d’AMD dans ce domaine. Aujourd’hui, le but est de voir dans quelle mesure peut-on profiter de leurs ressources en calcul dans d’autres domaines, et plus particulièrement des tâches qui sollicitent non seulement les cores CPU traditionnels, mais aussi les unités de traitement programmables que l’on trouve dans les solutions graphiques.
Cet article étant le premier d’une série, nous avons fait le choix de nous concentrer exclusivement sur le post-traitement dédié à la vidéo aujourd’hui. Ce domaine s’appuyant largement sur le parallélisme, l’accélération matérielle rendue possible par les nombreux cores d’un processeur graphique est devenu un très bon moyen d’augmenter la productivité et d’améliorer les performances par rapport à un CPU seul.
Dans la pratique, des comparaisons assez simples sont faites entre les différents produits d’AMD (avec qui nous avons été en lien pour cet article) : comment un processeur seul travaille-t-il avec un logiciel accéléré par OpenCL ? Comment s’en tire un APU Llano dans ce même exercice ? Les APU sont ensuite opposés aux CPU avec plusieurs cartes graphiques pour évaluer l’échelonnement des performances en fonction de chaque configuration.

Un article intéressant... Pour le prochain, vous nous faites la même chose mais avec des logiciels de montage vidéo et pas des simples players ? Par exemple pour montrer ce que vaut réellement Adobe Premiere Pro côté accélération matérielle (et pas seulement en MPEG-2, hein, en H264 1080p aussi ! parce qu'avec ma GTX550 Ti et CUDA activé c'est loin d'être terrible contrairement à ce que prétend Adobe) et où en est la concurrence (logiciels autonomes, plugins pour Premiere ou d'autres, etc.), ce serait enfin une bonne idée
...
Ça ferait au passage une bonne mise à jour ou un bon complément de l'article de l'an dernier de vos pendants de chez TTH US Video Transcoding Examined: AMD, Intel, And Nvidia In-Depth, dont je n'ai pas souvenir d'avoir vu passer chez vous une traduction française (mais peut-être qu'elle a existé).
si vous voulez voir la différence entre un calcul OpenCL CPU ou GPU, allez voir
http://www.youtube.com/watch?v=R7jXW4oXHDI (lire les explications sous la vidéo)
je ne suis pas sûr que les éditeurs de logiciel vidéo aient déjà eu le temps d'optimiser les accès mémoires OpenCL pour les APUs. à mon avis, ça pourrait aller beaucoup plus vite, car dans les puces Fusion la mémoire est commune au CPU et GPU. Le nombre d'applis accélérées avec OpenCL va exploser. Intel va devoir se bouger. ça va être intéressant...
que vaut réellement Adobe Premiere Pro côté accélération matérielle (et pas seulement en MPEG-2, hein, en H264 1080p aussi ! parce qu'avec ma GTX550 Ti et CUDA activé c'est loin d'être terrible contrairement à ce que prétend Adobe)
darika te conseillerait sûrement de la remplacer par une Quadro pour ce genre d'usage.
Xilinx n'a jamais été à proprement parler un fournisseur de logique programmable destiné au marché grand public, non?
Vous écrivez :
"Tout gain de performances est bon à prendre lorsque l’on parle de composants alimentés par une batterie"
Mais en pratique est-ce que l'utilisation du GPU en complément permet un gain de consommation électrique, ou uniquement de performances ?
parce qu'avec ma GTX550 Ti et CUDA activé c'est loin d'être terrible contrairement à ce que prétend Adobe)
Ben avec 192 Cuda core tu vas pas aller bien loin...
GTX 460 -> 336 CC
560Ti -> 384 CC
570 -> 480 CC
580 -> 512 CC
Voilà quoi