Les derniers contenus liés au tag AFDS

Afficher sous forme de : Titre | Flux Filtrer avec un second tag : AMD; APU; ARM; FirePro; GCN; GPGPU; HSA; Mantle; OpenCL; Trinity;

APU13: Oxide fait exploser la limite CPU avec Mantle

Tags : AFDS; AMD; GCN; Mantle;
Publié le 14/11/2013 à 04:41 par Damien Triolet

Après AMD et DICE, c'est au tour d'Oxide de donner son avis au sujet de Mantle et cette fois de proposer les premiers résultats pratiques.


Oxide est une société qui vient d'être créée et qui regroupe quelques développeurs spécialisés dans la 3D (dont une partie avait développé le moteur de Civilization V) qui travaillent à la mise au point d'un nouveau moteur graphique prévu avant tout pour PC, mais par la suite pour Xbox One et PS4 : le Nitrous engine. Ce moteur est annoncé comme prévu à sa base directement pour le 64-bit et surtout pour le multicore en évitant d'avoir recours à un énorme thread principal plus ou moins aidé par des threads secondaires comme c'est le cas actuellement. De quoi permettre selon Oxide Games des scènes beaucoup plus complexes en termes de nombre d'objets et d'animations.

Oxide a bien entendu rapidement été limité dans ses travaux par le surcoût CPU des API classiques qui ont fini par influencer directement la conception des niveaux voire les possibilités de gameplay en forçant les développeurs à éviter de multiplier les commandes de rendu (regroupées en batches) et donc au final le nombre d'objets présents dans la scène. Difficile par exemple de mettre au point une énorme simulation de combat spécial dans laquelle plusieurs milliers de vaisseaux s'affrontent.

C'est pourtant ce que compte se donner les moyens de faire Oxide et pour cela quelques essais ont été faits avec plusieurs options. Bien entendu Oxide s'est penché sur les deferred contexts, soit le multi-threading de DirectX 11, mais ils se sont avérés être peu efficaces et une grosse déception en pratique. Pour l'ensemble des développeurs que nous avons pu rencontrer cette fonction est au mieux décevante, au pire une vaste blague. Le problème est que l'application, l'API et le pilote n'arrivent pas à se comprendre.

L'API que propose AMD donne à l'application le contrôle nécessaire pour profiter d'un multi-threading efficace. Sur base de la version alpha de Mantle, et en très peu de temps, Oxide a pu obtenir des résultats impressionnants. Le développeur annonce, en précisant être très conservatif, une réduction d'un facteur 10 du coût de la gestion des batches de commandes de rendu pour un gain de 3x au niveau de l'application dans sa globalité, ce à quoi il faut ajouter en pratique les gains obtenus au niveau du multi-threading.


D'une limite de +/- 15 000 batches à partir de laquelle les performances s'effondrent en version DirectX, le Nitrous Engine en version Mantle n'a aucun problème à gérer 100 000 batches. De quoi autoriser des combats de plusieurs milliers de vaisseaux, difficile à représenter sur base d'une photo de l'écran, mais impressionnants en terme de potentiel de gameplay.

Oxide précise par ailleurs que cette gestion efficace du multi-threading bénéficie aux CPU AMD avec par exemple un FX 8350 capable de rivaliser avec un Core i7 4770K.

Pour Oxide, il est maintenant évident qu'il n'est plus possible de se contenter des limitations des API telles que DirectX, le point de non-retour a été atteint en ce qui les concerne. Là aussi il s'agit d'un appel du pied évident à Nvidia et Intel.

Vous trouverez ci-dessus des clichés de la présentation d'Oxide au Developer Summit 13 d'AMD :














APU13: Frostbite & Mantle: proche de la PS4? 15 jeux...

Tags : AFDS; AMD; GCN; Mantle;
Publié le 14/11/2013 à 01:04 par Damien Triolet


Après AMD c'était au tour de DICE/EA à travers l'architecte principal de son moteur graphique Frostbite, Johan Andersson, de donner quelques détails au sujet de Mantle.

DICE (EA Digitil Illusions CE) est pour rappel à l'origine de l'API graphique Mantle et a travaillé avec AMD en vue de sa mise au point. Battlefield 4 a fait office de cobaye lors son développement, raison pour laquelle il sera le premier jeu à en profiter à travers un patch prévu pour fin décembre. Plants vs Zombies Garden Warfare sera le second jeu d'EA qui utilisera Mantle, cette fois dès sa sortie et en profitant de Mantle pour optimiser pour les APU, alors que Johan Andersson insiste sur le fait que les 15 jeux actuellement en développement sur base du Frostbite Engine 3 utiliseront tous Mantle sur PC (le moteur de DICE est de plus en plus exploité à l'intérieur du groupe EA).



Il est important de noter qu'à plusieurs reprises, Johan Andersson rapproche le renderer du Frostbite 3 à base de Mantle du renderer dédié à la PS4 qui auraient donc des similitudes. Difficile d'en connaître les raisons et pourquoi le développeur évite par contre de mentionner la Xbox One; il est possible que Sony se soit reposé plus sur AMD que Microsoft pour le développement des API de sa nouvelle console. Dans tous les cas, pour DICE, Mantle et la PS4 représentent dorénavant les plateformes de référence pour les développements futurs.

Toutes les techniques de rendu exploitées dans Battlefield 4 ont pu être transposées sous Mantle et différentes optimisations ont été implémentées tant du côté CPU que GPU. A ce sujet, Johan Andersson précise cependant que dans un premier temps les optimisations GPU restent relativement basiques et que les optimisations potentielles plus poussées en sont encore au stade du R&D. La gestion de la mémoire est par contre totalement implémentée au niveau du moteur, tout comme le support du multi-GPU.

Au final, développer et implémenter Mantle dans le Frostbite 3 aura nécessité 2 mois de travail, avec des résultats qui valent largement cet investissement selon Johan Andersson. Il rappelle une fois de plus que si Mantle a été implémenté pour l'architecture GCN, il a été conçu à sa base de manière à ne pas être lié à une architecture particulière, avec un système d'extensions pour exploiter toutes les possibilités de GPU particuliers. La porte reste donc ouverte à Nvidia et Intel. Même si cela semble peu probable dans un premier temps, il semble évident que Johan Andersson espère les voir rejoindre cette initiative, ne serait-ce qu'avec un support spécifique pour le Frostbite 3.

Par ailleurs, pour DICE, Mantle facilite les portages sous Linux et sous la plateforme d'Apple, facilite les développements futurs et laisse entrevoir un potentiel énorme dans le monde mobile qui pourrait profiter de moteurs graphiques plus performants pour gagner en efficacité énergétique.

Johan Andersson voit aussi pour Mantle du potentiel dans le monde professionnel avec des stations de travail qui pourraient mieux profiter du multi-GPU même avec 4 ou 8 GPU dans le système. Mantle pourrait également être très utile pour faciliter les efforts de réduction de la latence de rendu, ce qui représente un challenge pour les systèmes de réalité virtuelle (Oculus VR par exemple) en développement.

Vous trouverez ci-dessus des clichés de l'ensemble de la présentation de DICE au Developer Summit 13 d'AMD :












APU13: Roadmap APU : Beema et Mullins en 2014

Tags : AFDS; AMD; APU; ARM; Beema; Mullins;
Publié le 13/11/2013 à 23:15 par Damien Triolet

A l'occasion d'APU13, AMD vient de présenter une nouvelle roadmap autour de ses APU d'entrée de gamme. Les noms de codes avaient déjà été entrevus et la version serveur de la puce a déjà été présentées dans une précédente roadmap, les nouvelles informations sont donc relativement peu nombreuses.


Beema va succéder à Kabini pour les portables d'entrée de gamme et Mullins à Temash pour les tablettes et autres systèmes 2-en-1. Parmi les nouveautés, citons le passage de cores x86 Jaguar vers une évolution nommée Puma, à ne pas confondre avec la plateforme AMD de 2008 qui portait le même nom.


Beema et Mullins sont les premiers APU à recevoir l'AMD Security Processor qui n'est autre qu'un core Cortex-A5 intégré de manière à profiter de la plateforme de sécurisation TrustZone d'ARM. Intégrer un tel très petit core était beaucoup plus simple pour AMD que de développer sa propre plateforme pour lutter face à la Trusted Execution Technology d'Intel (TXT). Si nous supposions au départ que Kabini et Temash inaugureraient ce support, ce seront finalement Beema et Mullins.

Etrangement, AMD fait par contre l'impasse sur la HSA et Beema/Mullins ne supporteront ni la mémoire unifiée hUMA ni la gestion des tâches hQ qui resteront au départ exclusives au plus gros APU, Kaveri.


Avec Beema et Mullins, AMD met en avant une progression significative des performances par watt, qui feraient plus que doubler à process équivalent. En l'absence de détails sur leurs spécifications exactes, il est cependant difficile de savoir quel crédit donner à ces prévisions d'autant plus qu'AMD compare ici performances et TDP de Kabini 25W à Beema 15W et de Temash 8W à Mullins 4.5W.

A noter que pour Temash et Mullins, AMD ne parle plus de TDP… mais de SDP, comme le fait Intel sur ses processeurs ultra basse consommation. A titre de référence, le SDP de 3-4W de Temash correspond à un TDP de 3.9 à 9W. Pour Mullins le SDP chute à 2W, alors que le TDP d'une des variantes est de 4.5W. AMD précise cependant qu'avec Mullins il sera possible de proposer du quadcore en fanless. De quoi enfin aider AMD à se faire une petite place dans le monde des tablettes ?

APU13: HSA: nouveaux membres, Oracle, Java...

Tags : AFDS; AMD; GPGPU; HSA;
Publié le 13/11/2013 à 21:39 par Damien Triolet

Il y a un peu plus d'un an, AMD inaugurait la HSA Foundation en partenariat avec ARM, Imagination Technologies, MediaTek et Texas Instruments. Rapidement, Samsung et Qualcomm ont rejoint le groupe de fondateurs de ce consortium qui a pour rappel comme objectif de concevoir des standards dédiés au calcul hétérogène, qu'ils concernent l'aspect programmation ou l'implémentation matérielle.


Petit à petit, la liste de membres qui ont rejoint la HSA Foundation à un niveau ou à un autre s'est allongée et à l'occasion du Developer Summit 2013, AMD annonce avoir à nouveau renforcé les rangs du consortium :

Broadcom
Canonical Limited
Electronics and Telecommunications Research Institute (ETRI)
Huawei
Industrial Technology Res. Institute
Kishonti
Lawrence Livermore National Laboratory
Linaro
Oak Ridge National Laboratory
Oracle
Synopsys
TEI of Crete
UChicago Argonne, LLC. Operator of Argonne National Laboratory
VIA Technologies

Parmi les nouvelles arrivées notons le géant chinois des télécoms Huawei, Kishonti (GLBenchmark), Oak Ridge (qui a mis en place le supercalculateur Titan équipé en Tesla Kepler de Nvidia), Oracle (qui a pour rappel racheté Sun et donc Java) et VIA/S3 Graphics. De quoi donner progressivement de plus en plus d'influence à la HSA.

Son support s'étend également au niveau des langages de programmation. L'implémentation du support de la HSA est actuellement en cours pour Python, OpenMP, C++ AMP et Java :



Annoncé lors de l'AFDS de 2011 par Microsoft, C++ AMP sera, comme nous pouvions alors le supposer, étendu pour supporter la HSA en plus d'un mode OpenCL générique. La différenciation se fera au moment de la compilation où il sera possible de viser le langage intermédiaire HSAIL pour la HSA ou SPIR 1.2 pour les périphériques compatibles OpenCL. Par ailleurs, bien qu'initiative de Microsoft, AMD annonce que C++ AMP sera disponible également sous Linux et que ce support sera mis en place autant pour ses APU que pour ses GPU.

Depuis quelques temps, AMD travaille avec Oracle pour intégrer le support de la HSA dans Java 9 Sumatra et rendre l'utilisation des cores massivement parallèles aussi simple que possible. Un projet ambitieux et en attendant que cela soit finalisé et disponible, APARAPI initialement limitée à OpenCL dans Java 7 va supporter la HSA dans Java 8 (Project Lambda). Oracle a d'ailleurs réalisé une première démonstration sur base d'une simulation de type N-Body, qui, vous vous en doutez, était nettement plus rapide une fois accélérée par un GPU.

APU13: AMD Mantle : les premiers détails

Tags : AFDS; AMD; GCN; Mantle;
Publié le 13/11/2013 à 02:45 par Damien Triolet

Comme prévu, AMD profite de son Developer Summit pour divulguer quelques détails sur son API graphique Mantle. Nous sommes encore loin d'une documentation complète, mais AMD fait en sorte que les développeurs puissent se faire une idée plus précise des possibilités qu'offrira Mantle.




Mantle est une API ou un langage de programmation et de contrôle du GPU qui a été conçu de manière à se débarrasser des obstacles qui compliquent la vie des développeurs de jeux vidéo et plus précisément de moteurs graphiques. A la base de l'initiative d'AMD se trouve une demande très spécifique de Johan Andersson, le développeur principal du Frosbite Engine, demande qui a trouvé écho auprès de la direction d'AMD qui a décidé de tenter de lui donner vie.

Grossièrement, Mantle est une API de plus bas niveau qu'un DirectX ou même qu'un OpenGL. Cela ne veut pas pour autant dire que Mantle revient à programmer le GPU dans une sorte de langage assembleur barbare. Le but d'AMD n'est pas d'arriver au plus bas niveau possible mais d'essayer de placer son API au niveau d'abstraction qui a le plus de sens du point de vue des développeurs de moteurs graphiques. Par rapport à DirectX, une partie de Mantle sera de plus bas niveau, une autre se situera à un niveau similaire et il est même possible que le niveau d'abstraction soit au final plus élevé sur certains points.

N'aurait-il pas été préférable d'essayer de faire évoluer DirectX et OpenGL ? Selon AMD, en plus de prendre une éternité, notamment pour mettre tout le monde d'accord, cela ne permettrait pas d'apporter des solutions à tous les problèmes actuels. Car en fait, plus que de problèmes, il s'agit de compromis. Plus qu'une solution, Mantle est ainsi un compromis différent.



L'un des problèmes principaux des API PC classiques est le surcoût qu'elles engendrent au niveau des commandes de rendu (draw calls), que ce soit lors des différentes vérifications de conformité, lors de leur traduction vers les commandes natives du GPU etc.

AMD indique ainsi que la plupart des jeux se doivent se contenter aujourd'hui de 3 000 à 5 000 commandes de rendu, un chiffre qui peut monter à 10 000 pour les développeurs qui font en sorte d'optimiser au maximum leur rendu. Avec Mantle AMD compte faire exploser les possibilités à ce niveau et permettre aux développeurs d'aisément décupler les capacités de leurs moteurs pour des scènes plus riches en objets et animations.




Tout en visant un niveau de performances optimal et l'ajout de fonctionnalités, AMD a fait en sorte de conserver une API simple, qui permet aux développeurs de visualiser aisément son fonctionnement et d'en prédire le comportement. Cela ne veut pas dire qu'exploiter Mantle sera facile mais que pour un développeur spécialiste de la 3D il n'y aura pas de mauvaise surprise cachée derrière différents niveaux de complexité, de choses étranges qui se passent dans l'API sans qu'il soit possible de comprendre pourquoi.

AMD résume les problèmes sur PC de la sorte : surcoût des API, absence de threading efficace, contrôle de la mémoire limité et absence de contrôle direct du GPU. Pour y répondre, Mantle propose plus de possibilités de précalcul et de réutilisation de certaines données, un contrôle de la gestion de la mémoire et un contrôle de la génération des commandes de rendu ainsi que de leur exécution. L'application contrôle alors directement le rendu et ne transfère plus une partie de cette responsabilité à une "grosse" API.

Une autre façon de voir les choses est de se dire que Mantle transfère aux développeurs des moteurs de jeux vidéo certaines possibilités d'optimisations actuellement exploitées par les développeurs des pilotes d'AMD, si ce n'est qu'ils pourront le faire avec bien plus d'efficacité.



Le fonctionnement basique de Mantle est relativement simple : l'application génère des listes de commandes de rendu qui prennent place dans la file d'attente appropriée du GPU qui les exécute au fur et à mesure qu'il termine les tâches précédentes. La différence fondamentale c'est que ce n'est plus le driver qui gère et réparti les commandes de rendu avec plus ou moins d'efficacité, c'est l'application qui gère le tout aussi finement que le développeur le veut.

Par ailleurs, effacer le surcoût des commandes de rendu n'est pas suffisant, il devient également primordial de proposer un multi-threading efficace, ce que ne permet pas de faire DirectX selon AMD, les fonctionnalités de DirectX 11 à ce niveau s'étant avérées difficiles à exploiter en pratique. Mantle permet à l'application de préparer différentes listes de commandes et de contrôler le multi-threading sans devoir sacrifier les performances ou la robustesse.

L'application acquiert également la possibilité de prendre le contrôle du multi-GPU et de pouvoir décider où exécuter chaque commande rendu. Pour cela AMD a prévu dans Mantle l'accès au moteur de composition CrossFire, au transfert de données entre GPU etc. De quoi autoriser des modes multi-GPU qui iront au-delà de l'AFR et qui s'adapteront mieux par exemple à l'utilisation du GPU computing dans les jeux ou aux systèmes multi-GPU asymétriques comme c'est le cas pour les APU combinés à un GPU. Il est par exemple possible d'imaginer le GPU se charger de la base du rendu et l'APU s'occuper du post processing.



Mantle introduit un nouveau type d'objet : le pipeline monolithique. Grossièrement ce type d'objet permet de définir dans un seul bloc l'empreinte ou la configuration du rendu, ce qui inclut tous les shaders, tous les états GPU etc. Ce pipeline configurable et flexible devrait à termes autoriser de nouveaux types de rendu, impossibles à l'heure actuelle.

Dans l'immédiat, l'intérêt de la chose concerne les performances. Dans DirectX, la gestion des états GPU, des différents shaders etc., peut représenter une charge CPU très lourde. Mantle réduit cette charge et facilite le travail du compilateur qui profite d'une vision globale du rendu.

AMD remet également à plat la gestion de toutes les ressources. Là où DirectX jongle avec de nombreux formats de buffers qui ont chacun leurs limitations liées à leurs usages spécifiques, dont certains sont présents uniquement pour garantir la compatibilité avec d'anciens GPU, Mantle se contente de zones mémoire (Memory) et de zones de rendu (Images). AMD revoit également la manière dont sont attachées certaines données liées au rendu, par exemple les buffers de constantes pour proposer un meilleur compromis entre fiabilité, complexité et performances.



Dans les applications actuelles, les différents buffers se voient attribuer une zone mémoire par le driver d'une façon très rigide, ce qui rend difficile la réutilisation de certaines zones mémoire, multiplie le nombre de ces zones à gérer et amplifie la consommation mémoire totale. C'est en partie pour cela que la consommation mémoire du rendu 3D sur PC est général nettement plus élevée que sur console où les développeurs ont la possibilité de tirer le maximum des ressources disponibles.

Mantle permet à l'application de contrôler directement les transferts de données et la gestion de la mémoire vidéo, pour éviter les automatismes actuels peu efficaces, en partie pour des raisons de fiabilité. Puisque l'application sait précisément ce qu'elle veut faire, de nombreuses vérifications génériques n'ont plus lieu d'être. AMD précise par ailleurs qu'une partie de ces vérifications automatiques est redondante sur PC, les moteurs s'en chargeant directement dans certains cas puisque cela peut déjà être nécessaire sur console.

Mantle permet également aux développeurs de facilement réutiliser le résultat de certaines opérations, sans devoir les répéter parce qu'en stocker le résultat était trop complexe ou ne correspondait pas aux critères stricts de DirectX.

Mantle repose bien entendu sur la gestion par les GPU récent d'une mémoire virtuelle unifiée et AMD précise que cela ne limite pas son support aux récents GPU Hawaii et Bonaire, qui sont les premiers à proposer un support complet à ce niveau. Sans rentrer dans le détail, AMD indique que le support des premiers GPU GCN est suffisant pour permettre de faire tout ce qui est nécessaire pour Mantle.



AMD cite quelques premiers exemples d'utilité de Mantle. Par exemple, préparer certaines données est coûteux (vider le cache, les décompresser…) alors qu'il peut s'avérer qu'elles ne sont pas toutes nécessaires, ce que ne peuvent pas savoir le pilote et une API classique, mais ce que peut contrôler l'application.

Mantle permet de profiter plus souvent d'un cache des shaders et d'éviter un maximum de phases de compilations, coûteuses soit en performances soit en temps de chargement. Il est également possible de rendre conditionnelles certaines phases de rendu et donc de profiter d'un pipeline dynamique. Par exemple lorsque la tessellation est activée, si un objet n'a pas besoin de tessellation, DirectX va devoir traiter la tessellation avec un niveau d'expansion géométrique nul, ce qui a un coût qui peut être non négligeable, alors que toutes les phases du rendu liées à la tessellation pourraient être totalement évitées avec Mantle.

AMD pourra exposer toutes les capacités de ses GPU au niveau de l'antialiasing de type multisample, de quoi laisser les développeurs profiter, s'ils le veulent, de modes actuellement accessibles uniquement aux pilotes.


Au final, Mantle va permettre selon AMD d'aider les systèmes d'entrée de gamme, de permettre aux développeurs de mieux prédire les performances et le comportement de leurs moteurs ainsi que de partager les optimisations entre PC et consoles next gen, et à plus long terme de permettre l'arrivée de nouvelles techniques de rendu.

Pour cela, AMD a cependant besoin d'outils efficaces et indique que le tout est en bonne voie. Par ailleurs, AMD a intégré une large partie de ses fonctions de débogage et de validation directement dans l'API, ce qui facilite la création d'outils efficaces et plus précis sur les bottlenecks éventuels. Les développeurs pourront également intégrer directement l'accès aux différents compteurs du GPU dans leurs propres outils, d'une manière plus complète qu'actuellement.

AMD indique que de son côté le développement avance bien et que le timing de décembre pour le patch Mantle de Battlefield 4 reste d'actualité. Actuellement, Mantle est proposé en version alpha à une poignée de développeurs, mais d'ici quelques temps une version beta sera proposée à de plus en plus de développeurs, s'ils en font la demande. Pour une documentation publique, il faudra probablement attendre la GDC de mars 2014 alors que la disponibilité de la version finale de Mantle est prévue pour la seconde moitié de l'an prochain. D'ici là, le support de l'API sera bien entendu intégré dans tous les pilotes.

AMD insiste sur le fait que Mantle n'a pas été prévue pour être limitée à une architecture. La base de Mantle se contente de fonctions relativement génériques qui pourraient être supportées par d'autres architectures alors qu'un niveau étendu de Mantle apporte le support de fonctionnalités actuellement spécifiques aux Radeon. Mantle pourrait ainsi potentiellement devenir un standard avec des extensions, mais rien ne dit que cela intéressera Nvidia ni que la direction d'AMD n'y posera pas des conditions difficiles à accepter.

Notez que, le forum d'AMD n'étant fermé à personne, à la sortie de cette présentation liée à Mantle, nous avons pu croiser plusieurs employés de Nvidia, dont un des architectes principaux des GPU GeForce. Le concurrent d'AMD semble visiblement aussi curieux que nous au sujet de Mantle !

Top articles