DirectStorage 1.1 avec décompression GPU enfin en route

Dans le cadre de la conférence des développeurs Microsoft Ignite de cette semaine, l’équipe DirectX de Microsoft a publié quelques articles de blog proposant des mises à jour sur l’état de divers projets liés au développement de jeux. Le plus important et le plus intéressant d’entre eux est une mise à jour de DirectStorage, l’API de Microsoft permettant un chargement plus rapide des ressources de jeu. En bref, la mise à jour 1.1 tant attendue, qui ajoute la prise en charge de la décompression des actifs GPU, est enfin en route, Microsoft ayant l’intention de publier l’API pour les développeurs d’ici la fin de cette année.

En guise de rappel rapide, DirectStorage est l’API de chargement d’actifs de jeu de nouvelle génération de Microsoft, et est conçu pour tirer parti des capacités modernes des GPU et du matériel de stockage pour permettre aux actifs de jeu d’être transférés plus efficacement directement au GPU. Du côté des E/S, DirectStorage propose de nouvelles opérations d’E/S par lots conçues pour réduire le nombre d’opérations d’E/S individuelles, réduisant ainsi la surcharge globale d’E/S. Mais plus encore, plus remarquable que cela, DirectStorage permet également (ou plutôt activera) la décompression des actifs GPU, permettant aux actifs compressés modernes de contourner le CPU et d’être décompressés sur le GPU à la place.

L’importance de DirectStorage est que Microsoft souhaite que les PC (et la console) puissent mieux tirer parti des faibles temps d’accès aléatoires et des taux de transfert élevés des SSD modernes, permettant aux jeux de diffuser rapidement de nouveaux actifs plutôt que d’avoir à tout précharger ou à souffrir. chargement des actifs sensiblement lent, comme cela peut être le cas aujourd’hui. Dans les paradigmes de développement de jeux actuels, le processeur peut être un facteur de goulot d’étranglement dans l’augmentation des taux d’E/S pour répondre à ce que les SSD peuvent fournir, car il y a des coûts de processeur importants à la fois pour suivre autant d’opérations d’E/S et pour décompresser les actifs du jeu avant de les transmettre. sur le GPU. DirectStorage, à son tour, est conçu pour minimiser ces deux charges et, en fin de compte, essayer de supprimer autant que possible le processeur du streaming des actifs du jeu.

La technologie DirectStorage était déjà implémentée sur les consoles Microsoft/s Xbox Series X/S pour leur lancement en 2020, donc des efforts plus récents ont porté sur le portage de DirectStorage sur Windows et la prise en compte de l’écosystème matériel non homogène. Plus tôt cette année, Microsoft a déployé DirectStorage 1.0, qui implémentait les améliorations du traitement par lots des E/S, mais pas les capacités de décompression GPU. C’est là que DirectStorage 1.1 entrera en jeu, car il activera enfin le deuxième (et le plus important) aspect de DirectStorage pour PC.

En permettant aux GPU d’effectuer la décompression des actifs du jeu, tout ce processus est déchargé du CPU. Cela libère non seulement le processeur pour d’autres tâches, mais supprime également un goulot d’étranglement potentiellement critique dans le streaming d’actifs de jeu. Parce que les SSD modernes sont si rapides – de l’ordre de centaines de milliers d’IOPS et des taux de transfert de données atteignant 7 Go/seconde – le CPU est le maillon le plus faible entre les SSD rapides et les GPU massivement parallèles. Ainsi, sous DirectStorage, le processeur est presque entièrement coupé.

En ce qui concerne les avantages en termes de performances de DirectStorage 1.1, les gains complets dépendront à la fois du matériel utilisé et de la quantité de données qu’un jeu ou une autre application tente de pousser. Les jeux déplaçant de grandes quantités de données sur des systèmes très rapides devraient bénéficier des gains les plus importants de la pile DirectStorage 1.1 complète, bien que des jeux encore plus légers puissent bénéficier des temps d’accès rapides aux SSD NVMe.

Dans le cadre du blog de Microsoft, la société a publié une capture d’écran de son exemple de programme de chargement en masse pour les développeurs de jeux, qui offre une démonstration simple et une référence de DirectStorage 1.1 en action. Dans le cas de Microsoft, ils ont pu charger 5,65 Go d’actifs en 0,8 seconde en utilisant la décompression GPU sur un PC non divulgué, contre 2,36 secondes sur le même système avec décompression CPU – tout en maximisant la charge sur le CPU dans le processus. Comme la plupart des exemples de programmes SDK, il s’agit d’un cas de test simple axé sur une seule fonctionnalité, de sorte que les gains réels ne seront probablement pas aussi extrêmes, mais cela souligne les avantages en termes de performances du déplacement de la décompression des actifs du CPU vers le GPU. lorsque vous disposez d’une grande quantité de données d’actifs.

Sous le capot, la décompression GPU DirectStorage est activée via l’introduction de GDeflate, un algorithme de compression à usage général développé à l’origine par NVIDIA. GDeflate est une variante optimisée pour le GPU de Deflate, qui a été conçue pour mieux s’adapter à la nature massivement parallèle (et pas très série) des GPU.

DirectStorage, à son tour, implémentera la prise en charge de GDeflate de deux manières différentes. La première manière (et préférée) consiste à transmettre les choses aux pilotes GPU et à laisser le fournisseur GPU s’en occuper comme bon lui semble. Cela permettra aux fournisseurs de matériel d’optimiser le matériel/l’architecture spécifique utilisé et de tirer parti de tous les blocs de traitement matériels spéciaux s’ils sont disponibles. Les trois sociétés sont impatientes de lancer le spectacle, et il est probable que certaines d’entre elles (sinon toutes) auront des pilotes compatibles DirectStorage 1.1 prêts avant même que l’API ne soit livrée aux développeurs de jeux.

À défaut, Microsoft fournit également un décompresseur DirectCompute GDeflate générique (mais optimisé), qui peut être exécuté sur n’importe quel GPU compatible DirectX12 Shader Model 6.0. Ce qui signifie que, sous une forme ou une autre, GDeflate sera disponible avec pratiquement tous les GPU PC fabriqués au cours des 10 dernières années – bien que les GPU plus récents devraient offrir de bien meilleures performances.

Sinon, les seules choses qui seront éventuellement nécessaires pour profiter de la décompression GPU – et de DirectStorage 1.1 en général – seront Windows 10 1909 (ou version ultérieure) ou Windows 11, ainsi qu’un périphérique de stockage rapide. Techniquement, DirectStorage fonctionne avec n’importe quel périphérique de stockage, y compris les SSD SATA, mais il est explicitement optimisé pour (et offre les meilleurs résultats) les systèmes utilisant des SSD NVMe.

Notez, cependant, qu’il appartiendra aux jeux individuels d’implémenter DirectStorage pour voir les avantages de l’API. Cela signifie non seulement utiliser les crochets d’API nécessaires, mais également expédier des jeux avec des actifs emballés à l’aide du nouvel algorithme GDeflate. La vaste rétrocompatibilité de GDeflate signifie que les développeurs de jeux peuvent essentiellement démarrer ici sur les jeux DX12 – tout ce qui vaut la peine d’exécuter un nouveau jeu va prendre en charge DirectStorage et GDeflate – mais le fait qu’il implique des actifs de jeu signifie que le support complet de DirectStorage 1.1 ne peut pas être ajouté de manière triviale à des jeux existants. Les développeurs auraient besoin de redistribuer (ou de recompresser) les actifs du jeu pour GDeflate, ce qui est certainement faisable, mais obligerait les joueurs à retélécharger une grande partie d’un jeu. Les joueurs devraient donc prévoir de voir DirectStorage 1.1 arriver en tant que fonctionnalité dans les futurs jeux, plutôt que rétroporté dans les jeux existants.

Enfin, en ce qui concerne le public de Microsoft (les développeurs), l’annonce de cette semaine de Microsoft vise à les inciter à se préparer pour l’API mise à jour avant sa sortie plus tard cette année. Microsoft ne publie pas la documentation ou les outils de l’API pour le moment, mais encourage les développeurs à se lancer avec DirectStorage 1.0, afin qu’ils puissent passer à l’étape suivante et ajouter la décompression GPU une fois que la version 1.1 sera disponible plus tard cette année.

Laisser un commentaire