Mantle d’amd

Bonjour,

Mantle d’AMD, c’est la nouvelle API qu’AMD veux pousser, ayant des implications commerciales et financière, je m’en méfie. Le principe ce n’est pas de facilité comme OpenGL, mais bien mettre le développeur à sa place, c’est à dire qu’il fasse le travail qui doivent faire, et qu’il ai tout les éléments en main pour le faire. Je suis 100% d’accords avec cela, surtout si ont peu garder OpenGL.

Un développeur qui juste alloue la mémoire, y accède puis la désalloue, c’est facile pour lui, mais il as pas conscience de l’emplacement de la mémoire, des latences, … alors que si ont lui fait charger la mémoire depuis le CPU vers le GPU, il vois ce qu’il fait, il as conscience de la latence (passé par le PCIe), ce qui lui permet de mieux coder. C’est la 1ere fois que un grands s’intéresse à la partie logiciel/algo qui est une grosse partie des performances, autant voir plus que le hardware. La puissance des pc est régulièrement doublé, et pourtant les logiciel/OS ne vont pas 100x plus vite qu’il y as 15ans (ça serai même le contraire). Par contre OpenGL contrairement à DirectX, permet des extension personnalisé, et donc d’exposé des truc de teste, ou spécifique aux matériel, contrairement à ce que j’ai cru lire que critique Mantle.

Attention tout de même à la sécurité, car l’accès aux matériel trop brute est mauvais coté sécurité si ont donne les accès au application. Je m’explique, si pour gagner en performance un laisse l’accés au disque brute car le FS (ntfs, ext4) est trop lent, oui, si le développeur est compétant il peu gagner en performance. Mais il à accès à tout, une application même en utilisateur normale, pour lire/écrire sur le hdd comme un administrateur car la gestion des droits ce fait coté FS, et donc il saute cette gestion des droits.

Sous linux nous avons Gallium3D, qui correspondrai à Mantle, qui lui n’est pas exposé directement à l’espace utilisateur si je ne me trompe pas. Par contre OpenGL comme Gallium3D sont libre, pas de grosse limitation, tout le monde peu participer, faire un driver, mettre en commun le travail. Je ne serai pas surpris si, comme par hazard AMD qui bosse sur leur driver livre Gallium3D, nous disait que Mantle viens de la, ou à un lien. Libre veux dire potentiellement que ce n’est pas limité à une platforme (console, pc, téléphone).

Pour toujours vous donner un exemple avec le FS. Si le FS est lent, c’est pour une raison (goulot d’étranglement, mauvaise organisation des accès disques). Sauter le FS permet de contourner cela, mais tout le monde doit coder plus, ne pas tomber dans les mêmes erreurs que le FS, … alors qu’il serai mieux de corriger le FS pour que tout le monde en profite. Je pense la même chose que Gallium3D/Mantle, donner accès au couche basse permet de contourner les lenteurs des couches hautes correspondante, mais ce qui vas être fait en attaquant directement les couches basses, doit être reporté tant que possible dans les couches hautes.

AMD annonce 10x en performance contre un algo OpenGL directement optimisé. C’est possible, j’ai vu assez souvent ce genre d’optimisation entre du C/C++ correcte et de l’assembleur. Par contre avec du C/C++ optimisé et pas juste correcte (utilisation en plus de tout les mots clef et autre optimisations fourni par le compilateur), l’écart diminue. Par contre je pense que la partie super-scalaire du au très grands nombre de cœur des carte graphique n’est pas exploité correctement. Donc la différence serai la même que entre du C mal fait et de l’assembleur. C’est un peu comme utiliser du multi-thread pour en utiliser, sans faire gaffe de pas faire trop de communication entre les cpu. Ca optimise mais ça tire par vraiment partie du multi-coeur. Encore pire avec une carte graphique. Je demande à voir en pratique avec un moteur déjà bien optimisé type Unreal engine 4. Si ça ce confirme cela veut dire aussi qu’il y as encore du chemin pour que les couches hautes exploite correctement le GPU. Mais je crois, qu’on peu écrire des shaders spécifique (assembleur pour carte graphique), plutot que de faire des shaders compilé. Mais même sur les shaders compilé avec LLVM, c’est de mieux en mieux, mais il y as encore du chemin.

Donc pour résumer rapidement mon point de vue: Attention au grande annonce qui pourrai être la juste pour remettre à flot AMD, attention à la sécurité, attention à la licence, mais concept intéressant si vraiment ça se traduit par des performances, et dans ce cas, optimisé mieux les couches au dessus, et changer si besoin les API au dessus.

Bye