Microsoft brengt DirectStorage 1.1 met gpu-decompression uit

Microsoft heeft versie 1.1 van de DirectStorage-api uitgebracht. Deze techniek, die laadtijden in games moet verkorten door middel van asset decompression, maakt het voor deze werklast mogelijk om naast de cpu ook de gpu in te zetten.

Microsoft benadrukt dat gpu-decompression wordt ondersteund op alle gpu's die DirectX 12 en Shader Model 6.0 ondersteunen. Het bedrijf verwijst naar ondersteuning vanuit AMD, Nvidia en Intel, en geoptimaliseerde drivers om zo goed mogelijk gebruik te kunnen maken van DirectStorage 1.1. DirectStorage is in maart uitgekomen, maar de techniek was toen nog beperkt tot de cpu. Deze opslag-api van Microsoft is bedoeld om decompression in games sneller te laten verlopen, met als resultaat kortere laadtijden.

Spellen bevatten gecomprimeerde bestanden om de werelden te bouwen. Alle personages, objecten en omgevingen hebben assets die eigenschappen zoals vorm, belichting en kleuren beschrijven. Dit maakt dat de hoeveelheid data flink toeneemt, tot honderden gigabytes. Om de volledige bestandsgrootte van een game te beperken, worden deze assets ingepakt. Zodra de bestanden nodig zijn in de game, worden ze uitgepakt. Via DirectStorage 1.1 moeten dit soort taken nog sneller verlopen dan met de eerste versie.

Games die met DirectStorage overweg kunnen, werken op alle apparaten. Microsoft stipt opnieuw aan dat gamers het meeste zullen merken van de techniek als ze beschikken over een NVMe-ssd. Op deze schijven is de bandbreedte hoger en de opslag sneller, wat de werking van DirectStorage ten goede komt. Als een NVMe-schijf beschikbaar is, raadt Microsoft dan ook aan om de gamebestanden daar op te slaan.

DirectStorage 1.1
Een specifiek door Microsoft geoptimaliseerd voorbeeld waaruit blijkt dat DirectStorage via gpu-decompressie drie keer zo snel gaat als cpu-decompressie. In de praktijk kan dit verschil afhankelijk van de taak en de hardware minder groot zijn.

Door Joris Jansen

Redacteur

08-11-2022 • 11:20

44

Submitter: Xtuv

Reacties (44)

44
44
31
0
0
11
Wijzig sortering
Is het nu een kwestie van (als je een Nvidia kaart hebt) driver 526.47 (of later) installeren en dan is het al geregeld? Of moet je nog andere handelingen doen?
De rest van de hardware requirements voldoe ik aan.

En zou dit niet ook nog winst kunnen opleveren op een SQL server met local NVME storage? Dat is ook nogal i/o hongerig. Compatible GPU erbij en gaan?
Of is dat te kort door de bocht gedacht?

[Reactie gewijzigd door Verwijderd op 28 juli 2024 09:52]

Helaas word er veel gedaan aan GAMING!!!111!!!1111!!1 maar te weinig aan "saaie" en zakelijke toepassingen. Zelfde bij tweakers zelf, zou het geweldig vinden als ze een sql server mee nemen in hun hardware tests, of compile iets als chrome of firefox, maar alles moet gaming related zijn tegenwoordig |:(

[Reactie gewijzigd door jaenster op 28 juli 2024 09:52]

DirectX is puur gericht op gaming, ik zou hier geen referentie naar zakelijke toepassingen verwachten tenzij sql server er gebruik maakt van Dit. De kans is ook niet groot dat er een geschikte gpu in een database server zit.
Klopt, maar dat is op basis van CUDA (NVidia proprietary GPGPU library), niet via DirectX.
Volgens mij was DirectStorage ook bedoeld om data direct van PCIe naar PCIe apparaat te versturen.
Dus daar kunnen zakelijke toepassingen zeker profijt van hebben. Want je bent niet beperkt tot GPU, maar kan dan ook naar speciale rekenchip sturen (FPGA oid).
Alleen, bedacht ik me, als die al decompressie konden doen, dan had je die beperking al niet. ;)
En als die dat niet hebben, dan heb je hier alsnog niets aan.
Het installeren van een driver zal wel niet voldoende zijn, je hebt er pas profijt van als een game ook daadwerkelijk DirectStorage-functies gebruikt. Op dit moment zijn er geen games die DirectStorage gebruiken, dus het heeft weinig zin om je druk te maken over de specifieke Nvidia driverversie.
Je SQL Server data gaat niet naar je GPU lijkt me, maar naar je interne geheugen. Daar heeft dit dus geen nut voor. Dus tenzij je de data op je GPU nodig hebt, is het antwoord nee.
Als eerst moet een game dit implementeren. Dus het gaat even duren voordat je er iets van gaat merken. Maar verder is het idd een zaak van de laatste drivers en windows updates hebben. Voor dingen als sql of zo heeft het weinig nut gok ik want je moet dan je data eerst op de gpu zetten en dan weer terug naar main memory halen. Dit heeft vooral nut als de eindbestemming van je data de gpu is. De grote nut zit hem vooral in textures.
Het levert vast en zeker geen winst op voor SQL server. DirectStorage is voor assets inladen in GPU memory zonder dat het naar de CPU en system memory gaat. SQL server doet niks met GPU memory. Als je DirectStorage gebruikt voor decompressie door van NVME zonder de CPU te betrekken, maar het daarna toch via je CPU naar je RAM moet, dan is de winst er vast snel uit.

Voor decompressie van grote datasets met resizable BAR levert het misschien ietsje winst op, maar dan moet het wel gecomprimeerd in het juiste formaat (wat niet het formaat is dat SQL server gebruikt).
Mooie techniek en zeker een waardige upgrade. Toch een hele kleine kanttekening. Dit verhoogd wel het energieverbruik, is het niet? Want een huidige gpu verbruikt meer stroom dan een cpu.

Nogmaals, ik vind dit een hele mooie en goede toepassing, maar eerlijk gezegd zie ik liever een makkelijkere toepassing om programma’s sneller meer cores te gebruiken van een cpu want heden ten dage zie ik nog veel te veel programma’s die single core zijn.
Ik vraag me af of het netto meer energie verbruikt. Wellicht heb je een relatieve spike van energieverbruik, maar je verbruikt wel minder lang stroom omdat de operatie sneller klaar is.
Hierdoor kun je sneller verder met je taken en hoeft o.a. je beeldscherm ook minder lang aan te staan.

[Reactie gewijzigd door ThinkCreative op 28 juli 2024 09:52]

Een grafische kaart aan 15% load zal typisch minder energie verbruiken dan een CPU aan 100% load. Tenzij je een 4090 en 7600X in eco mode gebruikt ofzo. Maar zelfs een 3080 heeft maar een 45W-50W load aan 15%. Je CPU aan 100% zal makkelijk meer dan 100W trekken, afhankelijk van je model.
Verbruik hangt af van load ... niet de opgegeven spec ..
Mooie techniek en zeker een waardige upgrade. Toch een hele kleine kanttekening. Dit verhoogd wel het energieverbruik, is het niet? Want een huidige gpu verbruikt meer stroom dan een cpu.
Ik denk dat het wel meevalt aangezien je ook een hoop andere zaken bespaart (naast de ergernis van wachten op laadschermen). Downloads kunnen kleiner dus minder impact op het netwerk, er is minder schijfruimte nodig dus hoef je niet zo snel een grotere te kopen, en de GPU is een stuk vlotter dus ondanks dat het ding meer stroom verbruikt kan het best zijn dat het specifieke compressie taakje nu per megabyte minder energie kost.
Maar als je je echt zorgen maakt over energiegebruik is de beste oplossing misschien gewoon die PC met dikke GPU in de winkel te laten staan...
Nogmaals, ik vind dit een hele mooie en goede toepassing, maar eerlijk gezegd zie ik liever een makkelijkere toepassing om programma’s sneller meer cores te gebruiken van een cpu want heden ten dage zie ik nog veel te veel programma’s die single core zijn.
Ik heb juist het idee dat veel taken die nu nog single core zijn of echt niet geschikt zijn voor multicore of de winst zo klein is dat het er eigenlijk helemaal niet toe doet en multicore alleen maar complexiteit toevoegt. Vrijwel alle tools die ik voor mijn werk gebruik zijn prima in staat echte load over meer cores te verdelen.
Omdat een GPU over het al gemeen meer kan verbruiken betekend het niet dat het minder efficiënt is in het uitvoeren van een taak. Het minen van Ethereum werd bijvoorbeeld voornamelijk gedaan op GPU's omdat een CPU dit niet zo efficiënt kan.

Het verschilt dus per workload en wellicht is het verplaatsen van deze taak dus zuiniger op de GPU.
Nogmaals, ik vind dit een hele mooie en goede toepassing, maar eerlijk gezegd zie ik liever een makkelijkere toepassing om programma’s sneller meer cores te gebruiken van een cpu want heden ten dage zie ik nog veel te veel programma’s die single core zijn.
Multithreading is voor veel algoritmes onmogelijk omdat er informatie van eerdere iteraties nodig is. Dan kan je dus niet 10x hetzelfde algoritme tegelijk draaien (of je moet toevallig 10 verschillende datasets hebben).
Je zult dus altijd software hebben waar het niet nuttig is om multithreading in te zetten.
Dit verhoogd wel het energieverbruik, is het niet?
In principe is het efficienter om een gespecialiseerde chip in te zetten. Dat zie je terug in een snelheidswinst, maar zou dus ook het energieverbruik moeten verlagen.
Het gebruik van de gpu hangt af van de load. Verder als je kijkt naar performance per watt dan komt de gpu er beter uit de verf dan de cpu. Ook helpt het dat je nu minder data heen en weer moet verplaatsen omdat je je data langer gecomprimeerd kan houden. Het is allemaal een hele ingewikkelde rekensom en hangt misschien ook af van hoe de ontwikkelaars deze techniek in een game implementeren. Je zou moeten wachten op benchmarks (ben benieuwd of er een site power usage gaat benchmarken) maar ik gok dat je uiteindelijk stroom bespaart als je dit op de gpu doet.
Tenzij er iets heel speciaals gebeurd, wordt het ene subsysteem minder belast en de andere wordt zwaarder belast. En omdat het sneller is piekt de belasting wellicht hoger, maar minder lang. Ik denk dat we wat praktijk tests moeten bekijken en naar de belasting van een uur moeten kijken om het verschil om te zien (als dat er al is)...
Dit verhoogd wel het energieverbruik, is het niet? Want een huidige gpu verbruikt meer stroom dan een cpu.
Volgens die redenering is het efficienter om een taak uit te rekenen op een pentium 2 dan op een i7 13700, want die laatste verbruikt meer stroom. ;)

Ja, het stroomverbruik is hoger (over het algmeen, een i9 13900K verbruikt toch meer dan mijn RX 6600), maar de rekenkracht is ook vele male hoger (voor SIMD-instructies). Voor een vaste taak - zoals het decomprimeren van alle assets voor een gegeven scene in een spel - heeft een GPU dus waarschijnlijk juist minder energie nodig. Daar komt nog bovenop dat het ook energie kost om data over de lijn te gooien van de CPU naar de GPU, en er hoeft minder data over de lijn met gecomprimeerde bestanden.
Nogmaals, ik vind dit een hele mooie en goede toepassing, maar eerlijk gezegd zie ik liever een makkelijkere toepassing om programma’s sneller meer cores te gebruiken van een cpu want heden ten dage zie ik nog veel te veel programma’s die single core zijn.
Dit is echt exact dat. Data decompressie/deserialization is enorm moeilijk om parallel goed uit te voeren. De algoritmes zijn er niet op gemaakt, en als je dan al een algoritme ervoor hebt, dan moet je oppassen dat je niet te hard gaat want dan gaat het spel ook haperen. Dat is echt een enorm moeilijke balans, zeker om op verschillende systemen aan de praat te krijgen.

Met de DirectStorage API heeft Microsoft een standaard gebouwd op open algoritmes en datastructuren die wel enorm goed parallel kunnen schalen, en eenvoudig genoeg zijn om op de GPU te draaien. In plaats van dus hoogstens met een tiental threads tegelijk te kunnen werken, kan je met waarschijnlijk wel honderden "threads" tegelijk werken op hardware die volledig gemaakt is om absurd parallel te kunnen werken. En je hebt nog eens als voordeel dat die data dan ineens op de juiste plaats zit (GPU memory) om te gebruiken in je games, in plaats van dat nog eens over de PCIe bus te moeten steken.

Dit haalt dus (bijna) al het moeilijke werk weg van de developer, en doet het beter dan wat ze zelf zouden kunnen of wat je voorstelt. En qua energieverbruik gaat dit niet heel veel schelen. Je GPU gaat er niet echt harder door moeten werken. Je kan op enkele seconden je volledige VRAM volpompen met data, dus de hoeveelheid werk per frame gaat echt goed meevallen. Tijdens de loading screens gaat je GPU inderdaad iets meer werken, maar die loading screens gaan dan ook van tientallen seconden naar enkele seconden kunnen gaan. In totaal is er dus minder energie verbruikt voor hetzelfde werk, want de GPU is gewoon efficiënter in dit soort taken en terwijl zit de rest van je PC ook nog altijd stroom te verbruiken. Korter is dus beter, ook al is de piek net wat hoger. Denk aan de integralen van op school: je geeft om de oppervlakte onder de curve.
Is dit in zowel Windows 10 als 11 beschikbaar?
Dat zal wel alleen naar Windows 11 komen. Windows 10 wordt immers langzaam uitgefaseerd door Microsoft.
Ah, bedankt! Ik zit even verder te kijken, men raadt (uiteraard) wel aan om Windows 11 te gebruiken, die heeft wat meer performance blijkbaar dan Windows 10. Aanvankelijk zou DirectStorage 1.1 wel degelijk Windows 11 only zijn, maar later heeft men alsnog besloten Windows 10 het ook te geven, waarin het wel wederom een boost geeft, maar minder dan met Windows 11 ivm 'legacy storage stack', zoals ze het zelf noemen. Voor Windows 10 is minimaal versie 1909 benodigd.

Zie ook https://www.windowscentra...windows-11-and-windows-10 die zich baseert op https://devblogs.microsof...er-preview-now-available/

EDIT:
Ik denk alleen wel dat we onderscheid moeten gaan maken tussen DirectStorage 1.0 en DirectStorage 1.1, want over GPU versnelling icm Windows 10 lees ik dan weer niets.

[Reactie gewijzigd door CH4OS op 28 juli 2024 09:52]

Ik denk dat het wat genuanceerder wordt, zie ook CH4OS in 'Microsoft brengt DirectStorage 1.1 met gpu-decompression uit'. Ik zit mijzelf even in te lezen op het onderwerp, maar ik lees nergens over de GPU versnelling dat met DirectStorage 1.1 gekomen is in Windows 10. Ik lees wel over de DirectStorage en NVMe SSDs op Windows 10.

[Reactie gewijzigd door CH4OS op 28 juli 2024 09:52]

Er is alleen backwards compatibility (voor zover mogelijk) zodat ontwikkelaars het ook nog kunnen gebruiken. Het heeft weinig nut om DirectStorage te gebruiken als daardoor haast niemand de game kan spelen.
Zo werkt het ook met harde schijven, ook al zal het daarop niet veel sneller worden (wel iets), zodat het echt de enige storage API is die ontwikkelaars hoeven te implementeren voor Windows.
Ja staat in release artikel van Microsoft vermeld. https://devblogs.microsof...tstorage-1-1-coming-soon/ onder kopje where does GPU decompression work
Windows 11 heeft wel extra optimilasatie erin zitten ten opzichte van 10.

[Reactie gewijzigd door brainball op 28 juli 2024 09:52]

DirectStorage wordt maar deels ondersteund in Windows 10. De manier waarop Windows omgaat met opslag is veranderd in Windows 11 en daar maakt DirectStorage gebruik van waardoor enkele functies en optimalisaties ontbreken in 10.
Uh, in de screenshot is het eerste gedeelte van de bandwidth ~7GB/s en de 'oude' ~2GB/s.. is dat dan wel een eerlijke vergelijking? Verder zie ik vaag CPU compressie staan?

Ik snap dat NVMe een factor is, maar de GPU ontgaat mij een beetje. Een GPU hoeft toch niet perse krachtiger te zijn dan een CPU/APU, die heeft toch andere feature-set? Bedoel compressie lijkt me echt iets meer CPU gericht, of is dit niet (meer) het geval?

Het offloaden naar de GPU klinkt allemaal leuk, maar lopen we daar ook niet tegen beperkingen aan? Je krijgt straks dat 8GB GPU memory ook al niet meer genoeg is, laat staan dat het allemaal te combineren valt met elkaar.

Hierboven zijn allemaal aannames, vraag mij gewoon hoe het zit en iemand het beter kan uitleggen. :)

[Reactie gewijzigd door HollowGamer op 28 juli 2024 09:52]

Uh, in de screenshot is het eerste gedeelte van de bandwidth ~7GB/s en de 'oude' ~2GB/s.. is dat dan wel een eerlijke vergelijking? Verder zie ik vaag CPU compressie staan?
Je ziet "GPU decompression" staan, wat dus aantoont dat het duidelijk sneller verliep op de GPU, namelijk aan 7GB/s vs 2gb/s - wat uiteraard ook verklaart waarom het sneller was om die 5.65 gigabyte te decomprimeren.
Zonder NVMe maakt het qua tijd niet zoveel uit of de decompressie op CPU of GPU plaatsvindt omdat het tempo waarmee data aangeleverd wordt (gigabytes per seconden ipv zo'n 100Mb/s voor een stuk draaiende roest tot zo'n paar honderd Mb/s voor een SATA SSD) zo laag is dat beiden het makkelijk bijhouden.
Daarnaast heeft het natuurlijk voordelen om decompressie van data die de GPU nodig heeft door de GPU te laten doen zodat deze gelijk in het juiste stuk geheugen staat en niet heen en weer gekopieerd hoeft te worden. (ik ben geen expert, maar ga er vanuit dat de 'direct' in DirectStorage daar op slaat :) )
Het doel van de texture decompressie is om textures vanaf de SSD in het GDDR geheugen te krijgen. Of die 8 GB genoeg is, staat los van de vraag wie van de SSD leest en naar het GDDR schrijft. Maar de geheugencontroller van het GDDR zit in de GPU, dus dan is het logisch om de GPU het schrijfwerk te laten doen.
Ik snap dat NVMe een factor is, maar de GPU ontgaat mij een beetje. Een GPU hoeft toch niet perse krachtiger te zijn dan een CPU/APU, die heeft toch andere feature-set? Bedoel compressie lijkt me echt iets meer CPU gericht, of is dit niet (meer) het geval?
GPU is niet perse krachtiger maar voor sommige toepassingen juist wel, zie data- en reken centers. GPU's zijn snel als het gaat om veel relatief eenvoudige berekeningen (zoals shaders), iets wat ook bij decompressie aan de orde is. Verder wordt GPU hierbij toegepast naast CPU, niet in plaats van.
Wat in de huidige games gebeurd;
  • het spel wil dat er bepaalde assets geladen worden
  • de games assets staan op een SSD in een zip bestand
  • deze zip wordt naar de CPU gestuurd en uitgepakt
  • deze uitgepakte data wordt naar de GPU gestuurd
Met DirectStorage worden de stap SSD-CPU-GPU verkort naar SSD-GPU. Echter, dit werkt(e) alleen met ongecomprimeerde data. Dus dat zou betekenen dat óf je SSD vol staat met uitgepakte assets óf het alsnog via de CPU moet verlopen voor het uitpakken van de assets. En dus alsnog geen of beperkte snelheidswinst.

Dus nu is het mogelijk om én de assets in een zip bestand te houden én direct te versturen naar de GPU. Dus de data die tussen SSD en GPU wordt gestuurd is gecomprimeerd, waardoor het sneller is verstuurd. En daarna kan de GPU met zijn snelle geheugen dit uitpakken en gebruiken.

En de gedachte is dat dit ook helpt om die GPU memory te ontlasten. Nu wordt er bv. assets in het geheugen geladen, omdat het anders teveel tijd kost om vanuit disk opnieuw te laden. Maar als dat snel gaat, dan kan die geheugen eerder worden vrijgegeven, want de assets kunnen toch snel geladen worden. En als het in de GPU memory alsnog gecomprimeerd kan blijven, dan kun je mogelijk meer assets in je 8GB kwijt. :)
Moet je als eindgebruiker hier iets voor doen? Of wordt het in een game "gebakken"
Dat vroeg ik mij ook af. Moet ik updates downloaden of speciale packages die men moet downloaden?
En gaat het automatisch of moet je nog handelingen uitvoeren om DS 1.1 actief te maken op me Windows 11 Pro.
Je hebt textures nodig die in het DirectStorage 1.1 formaat zijn opgeslagen, dus dat is per game, en zal niet zomaar met bestaande games werken. Potentieel krijg je grote updates voor games die dit gaan ondersteunen.
Het gaat automatisch werken indien de game het ondersteunt, evenals de hardware en de drivers.

Het is dus eerst wachten op games die deze techniek ondersteunen. Soortgelijke technieken zijn al geïmplementeerd op de Playstation 5 en Xbox Series X, dus game-ontwikkelaars hebben grofweg enige ervaring dat moet worden uitgebreid naar de pc. Het ophalen van de assets zit vrij diep in de code van een spel, dus er zullen waarschijnlijk niet veel bestaande titels een patch ontvangen. Eerder zal dit ondersteund worden in toekomstige titels en in de grote game-engines. Ik verwacht dat dit de komende jaren gaat groeien.

Wanneer de games er eenmaal zijn gaat het automatisch werken, zolang je Windows 10 of 11 gebruikt met recente drivers. Een enigszins recente GPU is ook benodigd, met ondersteuning voor DirectX 12 en Shader Model 6.0. Maar eentje die dat niet ondersteund is al niet meer in de winkel te vinden.

Qua opslaghardware wordt er veel ondersteund inclusief traditionele harde schijven, maar het gros van het voordeel merk je pas als je een moderne NVMe-SSD gebruikt met hoge doorvoersnelheden.

Voor nu is DirectStorage dus nog even toekomstmuziek. Ik zou er vooral alvast rekening mee houden bij het aanschaffen van nieuwe opslag. Wie daar aan toe is kan alvast een 5-7GB/s SSD halen ondanks dat dat nu nog weinig nut heeft. Wanneer DirectStorage volledig op de rit is, heb je er dan voordeel van.

[Reactie gewijzigd door geert1 op 28 juli 2024 09:52]

dank je voor de uitleg
Moet een developer de versie van DirectStorage zelf implementeren of heeft AMD, Nvidia en Intel allemaal hun eigen smaak/techniek die geïmplementeerd moet worden in een game?

Hopelijk komt UE5 met een mooie plug-in dan waardoor het makkelijk te implementeren valt.
"Om de volledige bestandsgrootte van een game te beperken, worden deze assets ingepakt"
Naast inpakken ook nog gecomprimeerd neem ik aan :)
Forspoken is blijkbaar de eerste game die hier gebruik van gaat maken. En die komt in januari al uit. Ben benieuwd!

Op dit item kan niet meer gereageerd worden.