DirectX 12 med Ashes of the Singularity

Permalänk
Medlem
Skrivet av Yoshman:

Är inte helt övertygad om att fördelen är så stor som man kan tro i DX12 för GCN. Kolla in detta test där man också testar 1 % och 0,1 % lägsta FPS. Visst får 480 och 390 högre genomsnittlig FPS, men 970 har med något enstaka undantag bättre 1 % rakt igenom (även när man kör DX12). Kör man ~60 FPS betyder det att 480/390 droppar lägre än 970 ungefär var annan sekund.

Framedrops har större påverkan på upplevelsen än vad lite lägre genomsnittlig FPS har.

Det sagt: Maxwell kommer aldrig kunna använda "async compute" till något vettigt i spel, så där finns en nackdel. Det jag hoppas t.ex. TechReport snart visar är hur användningen av "async compute" påverkar frame-times. Tittar man på CPUer så är SMT ett utmärkt sätt att hantera fler anrop per sekund, däremot så blir svarstiderna betydligt svårare att förutsäga när man använder SMT så ingen höjdare för realtidsappliationer (de flesta RTOS stänger därför av SMT).

Vänta tills det finns korrekt FCAT till DX12/Vulkan tester. Alla tester från stora siter som jag sett så skrotar GCN korten nvidia's motsvarigheter, och bara det exempel att Fury X kom upp i GTX1080 prestanda i Doom med Vulkan patchen säger hur mycket det finns att hämta. Du använde dig av 3DMark som ett referenstest för typisk DX12 prestanda. Jag nöjde mig med att kalla det för ett syntetiskt test, vilket det är, men jag går steget längre nu och länkar till detta:

http://www.nordichardware.se/nyheter/futuremark-blasvader-anv...

Det är som jag misstänkte, en gynnande miljö för nvidia-kort. Async compute ÄR och jag tror fortfarande, cripplat på nvidia-kort. Jag skulle kunna skriva en hel artikel om varför det är det och varför jag misstänkt det hela tiden också. Tiden kommer att visa det. Spelen till consoler flyter på i 60fps och ser bättre ut än någonsin tack vare just GCN och Async compute. Det kommer till PC också mer och mer nu, var så säker. Dom CCTM-API baserade spel som du sett idag köras på AMD på PC har fortfarande relativt hög CPU overhead och har fått sin störta boost hittills av Async compute, så det kommer bli ännu en förbättring.

Visa signatur

[ AMD 7800X3D // EK-Block @ custom loop, 2x420mm ][ MSI B650 Tomahawk ][ 32GB G.Skill Z5 Neo @ DDR6000 CL28 1T ][ AMD 7900XTX @ custom loop ][ Corsair 750D // Corsair RM1000X ][ 2TB Samsung 990PRO M.2 SSD ][ Win10 PRO x64 ][ LG 34GN850 ]

Permalänk
Datavetare
Skrivet av Enigma:

Vänta tills det finns korrekt FCAT till DX12/Vulkan tester. Alla tester från stora siter som jag sett så skrotar GCN korten nvidia's motsvarigheter, och bara det exempel att Fury X kom upp i GTX1080 prestanda i Doom med Vulkan patchen säger hur mycket det finns att hämta. Du använde dig av 3DMark som ett referenstest för typisk DX12 prestanda. Jag nöjde mig med att kalla det för ett syntetiskt test, vilket det är, men jag går steget längre nu och länkar till detta:

http://www.nordichardware.se/nyheter/futuremark-blasvader-anv...

Det är som jag misstänkte, en gynnande miljö för nvidia-kort. Async compute ÄR och jag tror fortfarande, cripplat på nvidia-kort. Jag skulle kunna skriva en hel artikel om varför det är det och varför jag misstänkt det hela tiden också. Tiden kommer att visa det. Spelen till consoler flyter på i 60fps och ser bättre ut än någonsin tack vare just GCN och Async compute. Det kommer till PC också mer och mer nu, var så säker. Dom CCTM-API baserade spel som du sett idag köras på AMD på PC har fortfarande relativt hög CPU overhead och har fått sin störta boost hittills av Async compute, så det kommer bli ännu en förbättring.

Har i andra inlägg här redan sagt att 3DMark är en benchmark så det är inte nödvändigtvis representativt för spelprestanda. Till och med Futurmark själva har sagt att deras erfarenhet efter att ha jobba med DirectX benchmarks i ca 20 år är att det normalt tar 2 till 3 år efter släpp av nytt 3DMark innan man ser spel som faktiskt använder lika mycket finesser från DX.

En av huvudpoängerna med 3DMark är tydligen att tidigt få ut ett program som använder de flesta av nyheterna i de senaste GPUerna och de flesta nyheterna som senaste DX-version möjliggör. Microsoft, AMD, Nvidia och Intel är alla intresserade av detta.

När du skriver "async compute", menar du DX12 finesser eller det AMDs PR-avdelning menar med termen "async compute"? Som DX12 definierar tekniken, vilket också är i linjer med hur datorvärlden i stort definierar asynkrona arbeten, så stödjer ALLA GPUer som idag har DX12 "async compute".

Om man i stället definierar "async compute" som AMD gör så håller jag med dig till 100 %, men den definitionen är och lär så förbli GCN den enda "fullständiga" implementationen. Med det vore som att säga att ingen förutom Intel stödjer Hyperthreading, vilket är en tekniskt korrekt utsaga men totalt irrelevant då det viktiga är om och hur man implementerar SMT (där Intel råkar kalla sin implementation för Hyperthreading). Det som är så olyckligt här är att AMD valt att kalla sin implementation för samma sak som DX12 kallar underliggande teknik och dessa två definitioner är absolut inte identiska!

Sen kan man ställa sig frågan hur cripplat "async compute" stödet kan vara i Time Spy då det så här långt är den applikation som får ut mest av att applicera "async compute" (d.v.s. störst delta mellan prestanda med DX12 fast utan "async compute" vs prestanda i DX12 med "async compute").

Och verkar inte prestanda i Doom med Vulkan på Fury X ligga närmare 1070 än 1080? Digital Foundary

Average FPS

GTX 1080

GTX 1070

GTX 980 Ti

R9 Fury X

Open GL

134,0

107,7

109,3

88,7

Vulkan

149,0

115,0

115,0

123,7

Råder inga tvivel om att Fury X vinner långt mer på Vulkan, har sett en del mätningar just på Doom där 1060 presterar bättre i OpenGL än Vulkan. Är också helt övertygad att Pascal inte kommer få speciellt många procent extra boost i Doom när patchen för att köra AA och postprocessing parallellt med 3D-beräkningar (det AMD kallar "async compute") kommer, så resultaten ovan lär inte ändra sig speciellt mycket framåt.

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk
Medlem
Skrivet av Yoshman:

Har i andra inlägg här redan sagt att 3DMark är en benchmark så det är inte nödvändigtvis representativt för spelprestanda. Till och med Futurmark själva har sagt att deras erfarenhet efter att ha jobba med DirectX benchmarks i ca 20 år är att det normalt tar 2 till 3 år efter släpp av nytt 3DMark innan man ser spel som faktiskt använder lika mycket finesser från DX.

Du skrev att:

Jag är övertygad om att 3D Mark Time Spy är en rätt bra övre gräns för vad vi kan förvänta oss av denna generations grafikkort vad det gäller effekt av DX12 och finesser som "async compute"

Min poäng med det jag skrev var att det påvisar en övre teoretisk gräns för nvidia-korten, och precis som jag misstänkte så skriver Nordichardware också om samma fenomen. Allt står i artikeln. Måste jag svara igen på varför jag skrivit som jag gjort så gör jag det.

Citat:

En av huvudpoängerna med 3DMark är tydligen att tidigt få ut ett program som använder de flesta av nyheterna i de senaste GPUerna och de flesta nyheterna som senaste DX-version möjliggör. Microsoft, AMD, Nvidia och Intel är alla intresserade av detta.

Och hur mycket samarbete och pengar man pumpar in i form av specialoptimerad kod för att gynna "vissa" aktörer.

Citat:

När du skriver "async compute", menar du DX12 finesser eller det AMDs PR-avdelning menar med termen "async compute"? Som DX12 definierar tekniken, vilket också är i linjer med hur datorvärlden i stort definierar asynkrona arbeten, så stödjer ALLA GPUer som idag har DX12 "async compute".

Om man i stället definierar "async compute" som AMD gör så håller jag med dig till 100 %, men den definitionen är och lär så förbli GCN den enda "fullständiga" implementationen. Med det vore som att säga att ingen förutom Intel stödjer Hyperthreading, vilket är en tekniskt korrekt utsaga men totalt irrelevant då det viktiga är om och hur man implementerar SMT (där Intel råkar kalla sin implementation för Hyperthreading). Det som är så olyckligt här är att AMD valt att kalla sin implementation för samma sak som DX12 kallar underliggande teknik och dessa två definitioner är absolut inte identiska!

Jag syftar, och har hela tiden syftat på på AMD's implementation i form av GCN med deras ACE enheter och hur hela arkitekturen är uppbyggd, hur stor parallellism dom är kapabla till och hur GCN kan schemalägga/köa instruktioner jämfört med resten av konkurrenterna. AMD gjorde en stor satsning på just på detta med GCN och att pusha ut CTTM API via Mantle med en hästspark för att få industrin att vakna, för att något var väldigt fel (vilket ID-software med sitt senaste uttalande stödjer.) Tycker också att man har bevisat det rent praktiskt i form av dagens consoler som jag skrev, och det är bara början för PC som jag också skrev.

Citat:

Sen kan man ställa sig frågan hur cripplat "async compute" stödet kan vara i Time Spy då det så här långt är den applikation som får ut mest av att applicera "async compute" (d.v.s. störst delta mellan prestanda med DX12 fast utan "async compute" vs prestanda i DX12 med "async compute").

Det är ett syntetiskt test och säger ingenting om hur AMD's och nvidia's kort kommer prestera i 100% optimerade titlar för asynkron beräkning. Jag kan lova dig att, låt GPU'n utföra alla renderingspass med optimerad kod och utnyttja all beräkningskapacitet och parallellism som dom är kapabla till och se vad som händer med samtliga nvidia-kort, Pascal inkluderat (även om dom klustrat om alla SM's till dynamiska vilket bara är en förbättring av dess ursprungliga flaskhals i just asynkron beräkning). Just av samma anledning som du var så skeptisk till att äldre generationer som Maxwell kommer att tappa på detta (sid 11). Dom har som du själv beskrev det en väldigt ofullständig implementation av asynkrona beräkningar. Det är ju just så en GPU ska fungera, att vara parallellt kapabel, men nvidia har i dom flesta senaste utgåvor av DX mer eller mindre byggt sina GPU'er efter API'n och hur den köar olika renderingspass och hur instruktioner trådas för att dessa "ska" köras via GPU'n rasterenheter exempelvis. Varför, när man istället kan konstruera en GPU som mer öppet kan beräkna på allt parallellt och hålla hela pipelinen upptagen.

Citat:

Och verkar inte prestanda i Doom med Vulkan på Fury X ligga närmare 1070 än 1080? Digital Foundary

Average FPS

GTX 1080

GTX 1070

GTX 980 Ti

R9 Fury X

Open GL

134,0

107,7

109,3

88,7

Vulkan

149,0

115,0

115,0

123,7

Råder inga tvivel om att Fury X vinner långt mer på Vulkan, har sett en del mätningar just på Doom där 1060 presterar bättre i OpenGL än Vulkan. Är också helt övertygad att Pascal inte kommer få speciellt många procent extra boost i Doom när patchen för att köra AA och postprocessing parallellt med 3D-beräkningar (det AMD kallar "async compute") kommer, så resultaten ovan lär inte ändra sig speciellt mycket framåt.

Sett massa olika tester och det många testsiter är överens om är att det är svårt att få en uppskattning om hur stor boost det verkligen är då man in-game sett större variationer än i dess typiska benchlägen. Vi får vänta på korrekt FCAT analys och det finns mycket CPU-overhead att hämta hos AMD-korten genom dess drivers.

Allt gällande GCN och API'er så har min teori stämt. Jag har redan lagt denna tråd som bokmärke och kommer se fram emot hurvida det fortfarande stämmer. Om du ursäktar så börjar det bli tröttsamt sedan Kepler hur bra nvidia skulle fixa CTTM/asynkron beräkning, och eftersom dom redan jobbat så hårt med sina TWIMTBP/gameworks och reducera CPU-overhead så har dom ännu mindre att tjäna där också än AMD. Skulle inte förvåna mig om Fury/Fury X korten kommer matcha eller tom springa förbi GTX 1070/GTX1080 i senare spel, samma sak skrev jag också om GTX680/79xx/290/780/390/980/Fury/980TI och då blev det pajkastning direkt och tyckte att det var totalt osannolikt. Jag hade rätt. Titta hur 680 och 780 står sig i dagens tester... Titta vad som sakta händer med gapet mellan 980Ti och Fury X och speciellt vad som händer i DX12/Vulkan titlar (som vi kommer behöva få se mer utav) Hur är det inte sannolikt när man är lite insatt i hur bromsade korten verkligen är och har varit, och fortfarande är.

Den här tråden är lagt i bokmärken. Ska bli mycket intressant att reflektera över detta vid ett lite senare tillfällen.

Visa signatur

[ AMD 7800X3D // EK-Block @ custom loop, 2x420mm ][ MSI B650 Tomahawk ][ 32GB G.Skill Z5 Neo @ DDR6000 CL28 1T ][ AMD 7900XTX @ custom loop ][ Corsair 750D // Corsair RM1000X ][ 2TB Samsung 990PRO M.2 SSD ][ Win10 PRO x64 ][ LG 34GN850 ]

Permalänk
Datavetare
Skrivet av Enigma:

Du skrev att:

Jag är övertygad om att 3D Mark Time Spy är en rätt bra övre gräns för vad vi kan förvänta oss av denna generations grafikkort vad det gäller effekt av DX12 och finesser som "async compute"

Min poäng med det jag skrev var att det påvisar en övre teoretisk gräns för nvidia-korten, och precis som jag misstänkte så skriver Nordichardware också om samma fenomen. Allt står i artikeln. Måste jag svara igen på varför jag skrivit som jag gjort så gör jag det.

Läs vad man skriver på sidan 12, fram till nu är det maximala man fått ut av "async compute" (på GCN då Pascal inte var lanserad när detta GDC event hölls), man har så här långt sett maximalt 10 % boost från "async compute". Time Spy får närmare 15 % på 390X samt Fury X vilket alltså är mer än något annan lyckats med så här långt.

Och det just för att det ett syntetiskt test där ett av huvudsyftena att demonstrera saker som "async compute", programmerad av folk som varit framgångsrika på "demo-scenen", som jag tror att det man får ut i Time Spy ligger väldigt nära maximalt vi kommer att se i spel.

Skrivet av Enigma:

Och hur mycket samarbete och pengar man pumpar in i form av specialoptimerad kod för att gynna "vissa" aktörer.

Jag syftar, och har hela tiden syftat på på AMD's implementation i form av GCN med deras ACE enheter och hur hela arkitekturen är uppbyggd, hur stor parallellism dom är kapabla till och hur GCN kan schemalägga/köa instruktioner jämfört med resten av konkurrenterna. AMD gjorde en stor satsning på just på detta med GCN och att pusha ut CTTM API via Mantle med en hästspark för att få industrin att vakna, för att något var väldigt fel (vilket ID-software med sitt senaste uttalande stödjer.) Tycker också att man har bevisat det rent praktiskt i form av dagens consoler som jag skrev, och det är bara början för PC som jag också skrev.

Det är ett syntetiskt test och säger ingenting om hur AMD's och nvidia's kort kommer prestera i 100% optimerade titlar för asynkron beräkning. Jag kan lova dig att, låt GPU'n utföra alla renderingspass med optimerad kod och utnyttja all beräkningskapacitet och parallellism som dom är kapabla till och se vad som händer med samtliga nvidia-kort, Pascal inkluderat (även om dom klustrat om alla SM's till dynamiska vilket bara är en förbättring av dess ursprungliga flaskhals i just asynkron beräkning). Just av samma anledning som du var så skeptisk till att äldre generationer som Maxwell kommer att tappa på detta (sid 11). Dom har som du själv beskrev det en väldigt ofullständig implementation av asynkrona beräkningar. Det är ju just så en GPU ska fungera, att vara parallellt kapabel, men nvidia har i dom flesta senaste utgåvor av DX mer eller mindre byggt sina GPU'er efter API'n och hur den köar olika renderingspass och hur instruktioner trådas för att dessa "ska" köras via GPU'n rasterenheter exempelvis. Varför, när man istället kan konstruera en GPU som mer öppet kan beräkna på allt parallellt och hålla hela pipelinen upptagen.

Sett massa olika tester och det många testsiter är överens om är att det är svårt att få en uppskattning om hur stor boost det verkligen är då man in-game sett större variationer än i dess typiska benchlägen. Vi får vänta på korrekt FCAT analys och det finns mycket CPU-overhead att hämta hos AMD-korten genom dess drivers.

Allt gällande GCN och API'er så har min teori stämt. Jag har redan lagt denna tråd som bokmärke och kommer se fram emot hurvida det fortfarande stämmer. Om du ursäktar så börjar det bli tröttsamt sedan Kepler hur bra nvidia skulle fixa CTTM/asynkron beräkning, och eftersom dom redan jobbat så hårt med sina TWIMTBP/gameworks och reducera CPU-overhead så har dom ännu mindre att tjäna där också än AMD. Skulle inte förvåna mig om Fury/Fury X korten kommer matcha eller tom springa förbi GTX 1070/GTX1080 i senare spel, samma sak skrev jag också om GTX680/79xx/290/780/390/980/Fury/980TI och då blev det pajkastning direkt och tyckte att det var totalt osannolikt. Jag hade rätt. Titta hur 680 och 780 står sig i dagens tester... Titta vad som sakta händer med gapet mellan 980Ti och Fury X och speciellt vad som händer i DX12/Vulkan titlar (som vi kommer behöva få se mer utav) Hur är det inte sannolikt när man är lite insatt i hur bromsade korten verkligen är och har varit, och fortfarande är.

Det som är fetmarkerat är det kritiska i hela diskussionen! Mycket pekar på att Maxwell/Pascal redan har så mycket logik att den kan hålla sina beräkningsenheter aktiva även när man kör saker sekventiellt. Även Maxwell ju kapacitet att köra saker parallellt, men då det krävs statiskt partitionering av SMs så får man ett viss "spill" vilket i praktiken verkar betyda att antal fall när parallell körning ger ett positivt tillskott är väldigt få (det finns fall, men de verkar vara begränsade till saker man typisk använder CUDA och inte DX12/Vulkan till).

Varför fungerar "async compute" överhuvudtaget? Jo, precis som för SMT så krävs det att man har outnyttjade resurser för att tekniken ska ge ett positivt tillskott. Det är också precis orsaken till att 480 ser en mindre vinst av "async compute" jämfört med bl.a. 390X och Fury X, 480 har saker som instruciton prefetching och vertex cache vilket ökar utnyttjandegraden av existerande resurser redan innan man blandar in "async compute".

Tittar man på kapaciteten hos t.ex. 1060 mot 480 (eller mellan 970 och 390) så är den ganska mycket högre för AMD trots att korten presterar likvärdigt i spel. Men precis som du skriver så går det absolut att skriva rena GPGPU-program där relativ prestanda är mycket närmare relativ fördelning av kapacitet. D.v.s. det går verkligen att få ut kapaciteten även ur GCN om man har "rätt" typ av problem, GCN-korten har däremot inte lika mycket logik för att hålla beräkningsenheterna väldigt högt belagda i spel som Nvidia.

Så rent teoretiskt kan det bli en rejäl boost för GCN i framtiden, men det kräver att spelen börjar använda andra tekniker som då råkar passa GCNs fördelning av resurser perfekt. Som spel ser ut idag kan "async compute" ge en visst boost, som det ser ut nu runt 10 %. Utöver det måste det till en förändring i renderingsteknik eller motsvarande.

Min största invändning i hela den här debatten är de som försöker få Maxwell/Pascal designen till något dåligt för den inte vinner lika mycket (eller något alls i Maxwells fall) på "async compute". Men orsaken är ju att det redan finns så mycket logik i kretsen att den kan hålla tillgängliga beräkningsenheter väldigt högt belagda vare sig man använder "async compute" eller ej.

GCN verkar ha saknat väldigt mycket av den logiken, där har man i stället lagt långt mer krut på att få en riktigt hög kapacitet som sedan kräver att programmen är skrivna på ett visst sätt för att få ut den kapaciteten i faktiskt beräkningskraft. Så här långt (d.v.s. med DX11) har det inte varit en framgångsrik design, det kan vara det med DX12/Vulkan men tror ändå att optimeringar likt de man stoppade in i Polaris 10 är ett måste då de flesta speltitlar inte är skrivna av gurus så saker kommer inte vara optimalt designat.

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk
Medlem
Skrivet av Yoshman:

Läs vad man skriver på sidan 12, fram till nu är det maximala man fått ut av "async compute" (på GCN då Pascal inte var lanserad när detta GDC event hölls), man har så här långt sett maximalt 10 % boost från "async compute". Time Spy får närmare 15 % på 390X samt Fury X vilket alltså är mer än något annan lyckats med så här långt.

Och det just för att det ett syntetiskt test där ett av huvudsyftena att demonstrera saker som "async compute", programmerad av folk som varit framgångsrika på "demo-scenen", som jag tror att det man får ut i Time Spy ligger väldigt nära maximalt vi kommer att se i spel.

Det som är fetmarkerat är det kritiska i hela diskussionen! Mycket pekar på att Maxwell/Pascal redan har så mycket logik att den kan hålla sina beräkningsenheter aktiva även när man kör saker sekventiellt. Även Maxwell ju kapacitet att köra saker parallellt, men då det krävs statiskt partitionering av SMs så får man ett viss "spill" vilket i praktiken verkar betyda att antal fall när parallell körning ger ett positivt tillskott är väldigt få (det finns fall, men de verkar vara begränsade till saker man typisk använder CUDA och inte DX12/Vulkan till).

Varför fungerar "async compute" överhuvudtaget? Jo, precis som för SMT så krävs det att man har outnyttjade resurser för att tekniken ska ge ett positivt tillskott. Det är också precis orsaken till att 480 ser en mindre vinst av "async compute" jämfört med bl.a. 390X och Fury X, 480 har saker som instruciton prefetching och vertex cache vilket ökar utnyttjandegraden av existerande resurser redan innan man blandar in "async compute".

Tittar man på kapaciteten hos t.ex. 1060 mot 480 (eller mellan 970 och 390) så är den ganska mycket högre för AMD trots att korten presterar likvärdigt i spel. Men precis som du skriver så går det absolut att skriva rena GPGPU-program där relativ prestanda är mycket närmare relativ fördelning av kapacitet. D.v.s. det går verkligen att få ut kapaciteten även ur GCN om man har "rätt" typ av problem, GCN-korten har däremot inte lika mycket logik för att hålla beräkningsenheterna väldigt högt belagda i spel som Nvidia.

Så rent teoretiskt kan det bli en rejäl boost för GCN i framtiden, men det kräver att spelen börjar använda andra tekniker som då råkar passa GCNs fördelning av resurser perfekt. Som spel ser ut idag kan "async compute" ge en visst boost, som det ser ut nu runt 10 %. Utöver det måste det till en förändring i renderingsteknik eller motsvarande.

Min största invändning i hela den här debatten är de som försöker få Maxwell/Pascal designen till något dåligt för den inte vinner lika mycket (eller något alls i Maxwells fall) på "async compute". Men orsaken är ju att det redan finns så mycket logik i kretsen att den kan hålla tillgängliga beräkningsenheter väldigt högt belagda vare sig man använder "async compute" eller ej.

GCN verkar ha saknat väldigt mycket av den logiken, där har man i stället lagt långt mer krut på att få en riktigt hög kapacitet som sedan kräver att programmen är skrivna på ett visst sätt för att få ut den kapaciteten i faktiskt beräkningskraft. Så här långt (d.v.s. med DX11) har det inte varit en framgångsrik design, det kan vara det med DX12/Vulkan men tror ändå att optimeringar likt de man stoppade in i Polaris 10 är ett måste då de flesta speltitlar inte är skrivna av gurus så saker kommer inte vara optimalt designat.

Ja, nvidia-korten håller sin logik upptagen från start och har inte så mycket mer att hämta medans kapaciteten inte har använts i AMD-korten än. Det är ungefär det jag sagt hela tiden också, så förstår inte riktigt hur svårt det kan vara att se att det hela tiden har handlat om koden som körs på korten. Du verkar vägra inse att att nvidias GPU'er är mer eller mindre sekventiella i förhållande till AMD's GCN GPU'er om vi nu ska hård-dra det. Async compute är inte ens aktiverat i Doom för nvidia-kort, för det stöds inte på det viset man vill använda det och så det var framtaget (AMD's fullständiga implementation som tillåter full parallellism)! Nvidia gick officiellt ut med att dom skulle "aktivera" async compute, något som aldrig hände eller blev graft försenat. Man kan också läsa flera artiklar om över hur nvidia "jobbar med att implmenetera stöd för detta". Det är nonsens då det skulle ha vart i bruk för länge sedan. Det är cripplat och en ungefär lika bra lögn som att GTX-970 skulle ha 2MB L2 cache, 64-ROPS och full minnesbandbredd till sina 8 minneskapslar, vilket det marknadsfördes med.

3DMark testet är INTE en fingervisning över hur asynkron beräkning går till i spel som då är behov av stor parallellism. Det handlar mer eller mindre om en SMT-implementation hos pipelinen som du hela tiden refererar till vilket kan ge boost i lättare tillämpningar. Med dom termerna så är i så fall en AMD GPU en CMT i en grov jämförelse då den fullt ut kan allokera sina beräkningsenheter till compute+grafik i princip kompromisslöst.

Ett spel som idag använder AMD's ACE och streamprocessorer fullt ut är djupt parallelliserat och inte samma sak. Detta kommer till PC också och CPU-overhead kommer minska ytterliggare hos AMD-korten i spel under DX12/Vulkan, något som drivrutinen har att säga till om mycket fortfarande.

Du kan läsa mer om allt här som någon orkat reflektera djupare över, något jag misstänkt under en lång tid:

http://www.overclock.net/t/1605674/computerbase-de-doom-vulka...

3D Mark does not use the same type of Asynchronous compute found in all of the recent game titles. Instead.. 3D Mark appears to be specifically tailored so as to show nVIDIA GPUs in the best light possible. It makes use of Context Switches (good because Pascal has that improved pre-emption) as well as the Dynamic Load Balancing on Maxwell through the use of concurrent rather than parallel Asynchronous compute tasks. If parallelism was used then we would see Maxwell taking a performance hit under Time Fly as admitted by nVIDIA in their GTX 1080 white paper and as we have seen from AotS.

GCN can handle these tasks but performs even better when Parallelism is thrown in as seen in the Doom Vulkan results. How? By reducing the per Frame latency through the parallel executions of Graphics and Compute Tasks. A reduction in the per-frame latency means that each frame takes less time to execute and process. The net result is a higher frame rate. 3DMark lacks this. AotS makes use of both parallelism and concurrency... as does Doom with the new Vulkan patch. See below...

If 3D Mark Time Fly had implemented a separate path and enabled both concurrency and parallelism for the FuryX... it would have caught up to the GTX 1070. No joke.

If both AMD and nVIDIA are running the same code then Pascal would either gain a tiny bit or even lose performance. This is why Bethesda did not enable the Asynchronous Compute + Graphics from the AMD path for Pascal. Instead... Pascal will get its own optimized path. They will also call it Asynchronous Compute... people will think it is the same thing when in reality... two completely different things are happening behind the scene.

See why understanding what is actually happening behind the scenes is important rather than just looking at numbers? Not all Asynchronous Compute implementations are equal. You would do well to take note of this.

Visa signatur

[ AMD 7800X3D // EK-Block @ custom loop, 2x420mm ][ MSI B650 Tomahawk ][ 32GB G.Skill Z5 Neo @ DDR6000 CL28 1T ][ AMD 7900XTX @ custom loop ][ Corsair 750D // Corsair RM1000X ][ 2TB Samsung 990PRO M.2 SSD ][ Win10 PRO x64 ][ LG 34GN850 ]

Permalänk
Medlem

Här kan vi också se ingame på exakt samma bana i 4K @ Ultra med "Nightmare textures" upplöning att Fury X pumpar mer FPS än GTX1080. Då är detta GTX 1080 överklockat till 2037Mhz och har 8GB minne...

GTX1080:
https://www.youtube.com/watch?v=nSQnJOD1EVc

Fury X:
https://www.youtube.com/watch?v=27zvYGSGrng

Visa signatur

[ AMD 7800X3D // EK-Block @ custom loop, 2x420mm ][ MSI B650 Tomahawk ][ 32GB G.Skill Z5 Neo @ DDR6000 CL28 1T ][ AMD 7900XTX @ custom loop ][ Corsair 750D // Corsair RM1000X ][ 2TB Samsung 990PRO M.2 SSD ][ Win10 PRO x64 ][ LG 34GN850 ]

Permalänk
Datavetare
Skrivet av Enigma:

Ja, nvidia-korten håller sin logik upptagen från start och har inte så mycket mer att hämta medans kapaciteten inte har använts i AMD-korten än. Det är ungefär det jag sagt hela tiden också, så förstår inte riktigt hur svårt det kan vara att se att det hela tiden har handlat om koden som körs på korten. Du verkar vägra inse att att nvidias GPU'er är mer eller mindre sekventiella i förhållande till AMD's GCN GPU'er om vi nu ska hård-dra det. Async compute är inte ens aktiverat i Doom för nvidia-kort, för det stöds inte på det viset man vill använda det och så det var framtaget (AMD's fullständiga implementation som tillåter full parallellism)! Nvidia gick officiellt ut med att dom skulle "aktivera" async compute, något som aldrig hände eller blev graft försenat. Man kan också läsa flera artiklar om över hur nvidia "jobbar med att implmenetera stöd för detta". Det är nonsens då det skulle ha vart i bruk för länge sedan. Det är cripplat och en ungefär lika bra lögn som att GTX-970 skulle ha 2MB L2 cache, 64-ROPS och full minnesbandbredd till sina 8 minneskapslar, vilket det marknadsfördes med.

3DMark testet är INTE en fingervisning över hur asynkron beräkning går till i spel som då är behov av stor parallellism. Det handlar mer eller mindre om en SMT-implementation hos pipelinen som du hela tiden refererar till vilket kan ge boost i lättare tillämpningar. Med dom termerna så är i så fall en AMD GPU en CMT i en grov jämförelse då den fullt ut kan allokera sina beräkningsenheter till compute+grafik i princip kompromisslöst.

Ett spel som idag använder AMD's ACE och streamprocessorer fullt ut är djupt parallelliserat och inte samma sak. Detta kommer till PC också och CPU-overhead kommer minska ytterliggare hos AMD-korten i spel under DX12/Vulkan, något som drivrutinen har att säga till om mycket fortfarande.

Du kan läsa mer om allt här som någon orkat reflektera djupare över, något jag misstänkt under en lång tid:

http://www.overclock.net/t/1605674/computerbase-de-doom-vulka...

3D Mark does not use the same type of Asynchronous compute found in all of the recent game titles. Instead.. 3D Mark appears to be specifically tailored so as to show nVIDIA GPUs in the best light possible. It makes use of Context Switches (good because Pascal has that improved pre-emption) as well as the Dynamic Load Balancing on Maxwell through the use of concurrent rather than parallel Asynchronous compute tasks. If parallelism was used then we would see Maxwell taking a performance hit under Time Fly as admitted by nVIDIA in their GTX 1080 white paper and as we have seen from AotS.

http://www.overclock.net/image/id/12243307/width/900/height/900/flags/LL

GCN can handle these tasks but performs even better when Parallelism is thrown in as seen in the Doom Vulkan results. How? By reducing the per Frame latency through the parallel executions of Graphics and Compute Tasks. A reduction in the per-frame latency means that each frame takes less time to execute and process. The net result is a higher frame rate. 3DMark lacks this. AotS makes use of both parallelism and concurrency... as does Doom with the new Vulkan patch. See below...

http://www.overclock.net/image/id/12243324/width/900/height/900/flags/LL

If 3D Mark Time Fly had implemented a separate path and enabled both concurrency and parallelism for the FuryX... it would have caught up to the GTX 1070. No joke.

If both AMD and nVIDIA are running the same code then Pascal would either gain a tiny bit or even lose performance. This is why Bethesda did not enable the Asynchronous Compute + Graphics from the AMD path for Pascal. Instead... Pascal will get its own optimized path. They will also call it Asynchronous Compute... people will think it is the same thing when in reality... two completely different things are happening behind the scene.

See why understanding what is actually happening behind the scenes is important rather than just looking at numbers? Not all Asynchronous Compute implementations are equal. You would do well to take note of this.

Så allt jag säger måste bevisas ned till var enda påstående, men du har inga problem alls att helt blint lita på något som kallar sig "Mahigan" som skriver på Overclocks forum? Naturligtvis kan du inte känna till min bakgrund och är inte heller intresserad av att diskutera den eller använda den som ett argument varför jag har hyfsad koll på detta område. Men kan i alla fall säga att om du själv haft ens grundläggande kunskap i "concurrent programming" och "parallel programming" samt överhuvudtaget greppat vad som utmärker något om är "asynkront" så hade du inte använt "Mahigan" som referens...

Men anta att jag inte vet något alls om detta, ska använda källor för att visa att alla mina påstående kan backas av andra som de flesta rimligen borde lita på.

SMT
Vi kan börja med något väldigt enkelt, är det GCN gör via ACE mer att likställa med SMT eller CMT? Tja, definitionen av SMT är att man delar minst en av prefetch, decode och execute (ALUs) mellan trådarna. GCN delar, precis som Hyperthering i Intels CPUer, alla tre. Och även AMD själva beskriver det som SMT

"The next consideration is designing a GPU architecture that can take full advantage of asynchronous shading. Ideally we want graphics processing to be handled as a simultaneous multi-threaded (SMT) operation, where tasks can be assigned to multiple threads that share available processing resources. The goal is to improve utilization of those resources, while retaining the performance benefits of pipelining and a high level of parallelism."

vidare skriver AMD

"This architecture is designed to increase utilization and performance by filling gaps in the pipeline, where the GPU would otherwise be forced to wait for certain tasks to complete before working on the next one in sequence."

D.v.s man säger själva att ACE är ett bra sätt för en applikation att kunna utnyttja "pipeline bubbles" för att öka utnyttjandegraden hos GCN. En utnyttjadegrad vi vet är låg då Nvidias kort kan presterar lika bra med långt lägre shader-kapacitet. Detta betyder också att Nvidia inte kan få samma boost från "async shaders", orsaken har inget med att "det är inte en lika parallell design (vad nu det ska betyda)" utan det är en ren konsekvens av att Nvidia stoppat in långt mer logik i kisel för att redan där se till att nyttjandegraden är hög av tillgängliga resurser.

Att få en mindre boost från "async shaders" är därför inte nödvändigtvis dåligt, en design som alltid har hög nyttjandegrad presterar ju optimalt (utifrån sin kapacitet) i alla titlar och inte bara de som explicit gör något som t.ex. "async shaders". I fallet Maxwell finns ändå en brist då dess hantering av parallell beräkning och 3D är statiskt och därför i praktiken inte tillåter att dra nytta av den vakanta beräkningskraft som ändå finns i vissa lägen (betydligt mindre än för t.ex. Fury, men finns ändå). I Pascal har man åtgärdat detta via "dynamic load balacing" (inte via preemption, den löser ett annat problem).

Preeption
För någon som överhuvudtaget kan något om designen av en GPU borde nästa sak vara uppenbar: preemption är en dyr operation så det är totalt befängt att tro att Time Spy använder detta. Att sedan tro att det på något sätt skulle kunna öka prestanda är i bästa fall ett bevis på okunnighet.

Varför? En kontext-switch på en modernt Intel x86 CPU tar låga tusentals cykler. Redan det är en kostnad som inte är helt försumbar och något man vill undvika. En x86 CPU har 16 heltalsregister och 16 vektorregister, totalt storlek på tillståndet som måste sparas vid en kontextbyte är < 1 kB. AMDs och Nvidias GPUer har tiotusentals vektorregister per SM/CU, i värsta fall kan ett kontextbyte behöva spara megabyte med data.

Pascal har HW-stöd för att göra detta och är den GPU som snabbast kan göra en kontextbyte idag. Så hur "snabbt" går det då

"The actual time cost for preemption varies with the workload, but at the most basic level, when the GPU is ready to execute the context switch, NVIDIA tells us that it can be done in under 100us (0.1ms), or about 170,000 clock cycles. Relative to the GPU this is not an insignificant amount of time, and while it’s much faster than the total context switch time from Maxwell 2, it does mean that context switching is still a somewhat expensive operation (roughly 50-100x more so than on a modern Intel CPU). So context switching still needs to be used intelligently, and, for best performance, infrequently."

Verkar ju rimligt att bränna 100k cykler relativt frekvent och förvänta sig att det ska öka prestanda...

Och utifall någon inte vill tro på det AnandTech säger, vad har AMD att säga om detta?

"This approach can reduce processing latency for tasks that need it most, however it doesn’t necessarily improve efficiency since it is not allowing simultaneous execution. In fact, it can actually reduce efficiency in some cases due to context switching overhead. Graphics tasks can often have a lot of context data associated with them, making context switches time consuming and sapping performance."

Vilket är precis vad jag sagt tidigare: preemption löser ett annat problem än "async shaders". Man använder "preemption" för att snabbt kunna köra något med hög prioritet, man använder det inte för att öka prestanda då effekten av att använda preemption är mindre nyttigt arbete utfört.

Time Spy & async
I stället för att använda någon slumpmässigt inlägg på internet som råkar säga det du ville höra, varför inte läsa den tekniska beskrivning som Futurmark gjort om Time Spy?

Där finns till och med profiling data från GPUView för 970, 1080 och Fury. För 970 ser man det som jag precis misstänkte, numera hanterar både DIRECT och COMPUTE köerna via en enda HW-kö, det är förklaringen till varför Maxwell inte längre ser en minskning i prestanda när man använder "async compute" (rent tekniskt använder man DX12 multi-engine koncept).

För både 1080 och Fury X ser man klart och tydligt att det körs jobb på "Hardware Queue COMPUTE_0" parallellt med "Hardware Queue 3D", det borde undanröja alla tvivel om huruvida Time Spy kör "async compute" som AMD definierar termen.

Och för att förstå varför jag väldigt ofta skriver "som AMD definierar termen" är dels för att "asynkron" är inte samma sak som "parallell" vilket är vad AMD menar. Men framförallt använder DX12 också termen "asynkron", fast då i sin korrekta bemärkelse. Från Time Spy dokumentet

"Whether work placed in the COMPUTE queue is executed in parallel or in serial is ultimately the decision of the underlying driver. In DirectX 12, by placing items into a different queue the application is simply stating that it allows execution to take place in parallel - it is not a requirement, nor is there a method for making such a demand. This is similar to traditional multi-threaded programming for the CPU - by creating threads we allow and are prepared for execution to happen simultaneously. It is up to the OS to decide how it distributes the work."

DX12 säger alltså att det som postas på COMPUTE och DIRECT köerna måste vara asynkront men det är helt upp till implementationen att bestämma hur man ska köra asynkrona jobb. För DX12 del är det en fullt OK implementation att slå ihop jobben från båda köerna och köra dem på en HW-kö, det är precis vad som händer på allt utom GCN och Pascal idag. Men är också helt OK att köra asynkrona jobb parallellt, något GCN och Pascal gör genom att mappa COMPUTE och DIRECT till två olika HW-köer.

Men även utan att förstå något mer än det absolut mest grundläggande borde de flesta begripit hur absurd förklaringen du postar är bara genom det faktum att Time Spy är den titel som idag får absolut störst vinst från att använda "async compute".

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk
Medlem
Skrivet av Yoshman:

Så allt jag säger måste bevisas ned till var enda påstående, men du har inga problem alls att helt blint lita på något som kallar sig "Mahigan" som skriver på Overclocks forum? Naturligtvis kan du inte känna till min bakgrund och är inte heller intresserad av att diskutera den eller använda den som ett argument varför jag har hyfsad koll på detta område. Men kan i alla fall säga att om du själv haft ens grundläggande kunskap i "concurrent programming" och "parallel programming" samt överhuvudtaget greppat vad som utmärker något om är "asynkront" så hade du inte använt "Mahigan" som referens...

Men anta att jag inte vet något alls om detta, ska använda källor för att visa att alla mina påstående kan backas av andra som de flesta rimligen borde lita på.

SMT
Vi kan börja med något väldigt enkelt, är det GCN gör via ACE mer att likställa med SMT eller CMT? Tja, definitionen av SMT är att man delar minst en av prefetch, decode och execute (ALUs) mellan trådarna. GCN delar, precis som Hyperthering i Intels CPUer, alla tre. Och även AMD själva beskriver det som SMT

"The next consideration is designing a GPU architecture that can take full advantage of asynchronous shading. Ideally we want graphics processing to be handled as a simultaneous multi-threaded (SMT) operation, where tasks can be assigned to multiple threads that share available processing resources. The goal is to improve utilization of those resources, while retaining the performance benefits of pipelining and a high level of parallelism."

vidare skriver AMD

"This architecture is designed to increase utilization and performance by filling gaps in the pipeline, where the GPU would otherwise be forced to wait for certain tasks to complete before working on the next one in sequence."

D.v.s man säger själva att ACE är ett bra sätt för en applikation att kunna utnyttja "pipeline bubbles" för att öka utnyttjandegraden hos GCN. En utnyttjadegrad vi vet är låg då Nvidias kort kan presterar lika bra med långt lägre shader-kapacitet. Detta betyder också att Nvidia inte kan få samma boost från "async shaders", orsaken har inget med att "det är inte en lika parallell design (vad nu det ska betyda)" utan det är en ren konsekvens av att Nvidia stoppat in långt mer logik i kisel för att redan där se till att nyttjandegraden är hög av tillgängliga resurser.

Att få en mindre boost från "async shaders" är därför inte nödvändigtvis dåligt, en design som alltid har hög nyttjandegrad presterar ju optimalt (utifrån sin kapacitet) i alla titlar och inte bara de som explicit gör något som t.ex. "async shaders". I fallet Maxwell finns ändå en brist då dess hantering av parallell beräkning och 3D är statiskt och därför i praktiken inte tillåter att dra nytta av den vakanta beräkningskraft som ändå finns i vissa lägen (betydligt mindre än för t.ex. Fury, men finns ändå). I Pascal har man åtgärdat detta via "dynamic load balacing" (inte via preemption, den löser ett annat problem).

Preeption
För någon som överhuvudtaget kan något om designen av en GPU borde nästa sak vara uppenbar: preemption är en dyr operation så det är totalt befängt att tro att Time Spy använder detta. Att sedan tro att det på något sätt skulle kunna öka prestanda är i bästa fall ett bevis på okunnighet.

Varför? En kontext-switch på en modernt Intel x86 CPU tar låga tusentals cykler. Redan det är en kostnad som inte är helt försumbar och något man vill undvika. En x86 CPU har 16 heltalsregister och 16 vektorregister, totalt storlek på tillståndet som måste sparas vid en kontextbyte är < 1 kB. AMDs och Nvidias GPUer har tiotusentals vektorregister per SM/CU, i värsta fall kan ett kontextbyte behöva spara megabyte med data.

Pascal har HW-stöd för att göra detta och är den GPU som snabbast kan göra en kontextbyte idag. Så hur "snabbt" går det då

"The actual time cost for preemption varies with the workload, but at the most basic level, when the GPU is ready to execute the context switch, NVIDIA tells us that it can be done in under 100us (0.1ms), or about 170,000 clock cycles. Relative to the GPU this is not an insignificant amount of time, and while it’s much faster than the total context switch time from Maxwell 2, it does mean that context switching is still a somewhat expensive operation (roughly 50-100x more so than on a modern Intel CPU). So context switching still needs to be used intelligently, and, for best performance, infrequently."

Verkar ju rimligt att bränna 100k cykler relativt frekvent och förvänta sig att det ska öka prestanda...

Och utifall någon inte vill tro på det AnandTech säger, vad har AMD att säga om detta?

"This approach can reduce processing latency for tasks that need it most, however it doesn’t necessarily improve efficiency since it is not allowing simultaneous execution. In fact, it can actually reduce efficiency in some cases due to context switching overhead. Graphics tasks can often have a lot of context data associated with them, making context switches time consuming and sapping performance."

Vilket är precis vad jag sagt tidigare: preemption löser ett annat problem än "async shaders". Man använder "preemption" för att snabbt kunna köra något med hög prioritet, man använder det inte för att öka prestanda då effekten av att använda preemption är mindre nyttigt arbete utfört.

Time Spy & async
I stället för att använda någon slumpmässigt inlägg på internet som råkar säga det du ville höra, varför inte läsa den tekniska beskrivning som Futurmark gjort om Time Spy?

Där finns till och med profiling data från GPUView för 970, 1080 och Fury. För 970 ser man det som jag precis misstänkte, numera hanterar både DIRECT och COMPUTE köerna via en enda HW-kö, det är förklaringen till varför Maxwell inte längre ser en minskning i prestanda när man använder "async compute" (rent tekniskt använder man DX12 multi-engine koncept).

För både 1080 och Fury X ser man klart och tydligt att det körs jobb på "Hardware Queue COMPUTE_0" parallellt med "Hardware Queue 3D", det borde undanröja alla tvivel om huruvida Time Spy kör "async compute" som AMD definierar termen.

Och för att förstå varför jag väldigt ofta skriver "som AMD definierar termen" är dels för att "asynkron" är inte samma sak som "parallell" vilket är vad AMD menar. Men framförallt använder DX12 också termen "asynkron", fast då i sin korrekta bemärkelse. Från Time Spy dokumentet

"Whether work placed in the COMPUTE queue is executed in parallel or in serial is ultimately the decision of the underlying driver. In DirectX 12, by placing items into a different queue the application is simply stating that it allows execution to take place in parallel - it is not a requirement, nor is there a method for making such a demand. This is similar to traditional multi-threaded programming for the CPU - by creating threads we allow and are prepared for execution to happen simultaneously. It is up to the OS to decide how it distributes the work."

DX12 säger alltså att det som postas på COMPUTE och DIRECT köerna måste vara asynkront men det är helt upp till implementationen att bestämma hur man ska köra asynkrona jobb. För DX12 del är det en fullt OK implementation att slå ihop jobben från båda köerna och köra dem på en HW-kö, det är precis vad som händer på allt utom GCN och Pascal idag. Men är också helt OK att köra asynkrona jobb parallellt, något GCN och Pascal gör genom att mappa COMPUTE och DIRECT till två olika HW-köer.

Men även utan att förstå något mer än det absolut mest grundläggande borde de flesta begripit hur absurd förklaringen du postar är bara genom det faktum att Time Spy är den titel som idag får absolut störst vinst från att använda "async compute".

Absurd? Först påstår du att min förklaring är absurd när Time Spy inte alls är den största vinsten man sett på GCN kort. Jag är ingen programmerare och aldrig påstått mig vara en sådan, men du envisas med mycket vi egentligen redan är eniga om, och jag trots allt postar resultat, länkar och förklarar varför jag trott det jag trott, och det har träffat väldigt bra med verkligheten. Hurvida reagerar du om jag har rätt inom kommande tid med dess speltitlar som är på väg och en framtida jämförelse med dagens grafikkort? Jag är ganska säker på min sak och har vart länge.

Nvidia's logik är byggd efter en 8 år gammal API i stora drag. Ser bra ut från start men tappar i längden vilket man ser på samtliga av sista generationer.

Jag litar inte på någon så, utan jag refererar till folk som delar samma uppfattning som mig då jag grävde mer och mer i det jag påstod för att dela här vilket verkar göra dig upprörd. Jag har läst hela den tråden till det inlägget och inte bara hans inlägg. Gör det du också och du kan se mycket av det som jag försöker få sagt. Det står mycket intressant där, alltifrån kod till hårdvara och lite mer info ang 3DMark och dess test som du stenhårt vill ha som en standard över hur korten beter sig i spel med async compute.

3DMark använder sig av nvidia's tolkning av asynkron beräkning, vilket INTE är samma som AMD's GCN baserade lösning. Den ökning du ser i just 3DMark gynnar mest just Pascal för att det har load-balancing över sina beräkningsenheter, men inte Maxwell. Den enda gången man kommer att vilka köra asynkron compute på Pascal är när man inte kan hålla dess beräkningsenheter upptagna, vilket redan så är fallet i dom flesta fall. Testet i 3DMark är snarare ett mycket grafikintensivt test och betydligt mindre compute. Testa kör compute+graphics på Maxwell och se vad som händer i t.ex Doom. Nä just det, vi har inget sånt aktiverat och nvidia "jobbar" på att få full compute+graphics med Pascal. Tror inte det kommer att ske heller, precis av samma anledning att dom sa samma sak med Maxwell. Möjligtvis med kommande Volta.

Nvidia är som alla vill påstå så värst vassa med drivrutiner, men det tar en hemskt lång tid att få just detta att fungera ironiskt nog, men det fungerar inte tillfredsställande så det är enkelt, det finns inte logik till det, för dess prestanda minskar när du ska göra renderingspass på detta vis istället som på deras traditionella sätt, mer sekventiellt, och göra AA/geometri t.ex dedikerat istället för shaders. AMD korten har massiv shaderkapacitet och möjlighet att räkna på alla denna typ av data. I alla kommande titlar så får bägge aktörerna som sagt sin egna vendorcode för att utnyttja bägge arkitekturerna fullt ut, men nvidia har inte så mycket att vinna på detta, möjligtvis mindre CPU-overhead som redan var bra sedan innan på grund av tonvis lagt arbete på sina drivers.

Alla spelutvecklare kommer att följa AMD's tolkning av asynkron beräkning och GCN, för den är en långt mycket bättre implementation. Både Pascal och GCN får en prestandaökning, men titta på ett praktiskt test istället som ID-softwares nya grafikmotor i Doom som rullar på med Vulkan så ser du en riktig ökning. Bägge körs i det spelet med sin egna specifika vendorcode som gynnar bägge till fullo. Fury X presterar hur bra då enligt in-game videos som jag visade? Det säger det mesta, och du vill gärna definiera vad som är logiskt och inte baserat på hur man ska sköta renderingspass tidigare för att nvidia haft makten att definiera detta tidigare, det är iaf så jag uppfattar dig. Det är snarare nvidia som saknar logik att utnyttja parallellism hörredu.

Utan att vara programmerare så förstår jag en hel del man lärt sig på vägen kring detta när man är mer duktig på hårdvara och ser hur ofantligt dåligt GCN utnyttjats och varför. Jag kan göra det enkelt du som vill snacka kod då. Varför används hårdvaran exemplariskt i consoler och uppvisar bättre grafik och FPS än någonsin tidigare? Betänk då att det är exakt samma arkitektur som du påstår saknar logik. För vadå? DX11? Jag har redan svaret, men det verkar inte riktigt lika uppenbart för somliga än. På ditt vis så ska man som nvidia implementera logik för att utnyttja DX11 bra. Och inte nog med det, utan man måste, som nvidia också gjort, lägga ner tonvis av arbete på drivrutiner för att få det att fungera, speciellt i multithreading. En sak som verkar vara svårare för dig att hålla isär är hårdvara och mjukvara, vad GPU'erna är kapabla till. Det är egentligen det som är intressant, men det är lite svårt för AMD som är så mycket mindre finansiellt att få hela industrin att vända som redan har hoppat på det gröna tåget och dess ekosystem med att isolera mycket som möjligt. Bara initiativet GPUopen är fantastiskt samman med standarder som Mantle, async compute, Freesync.

Jag önskar jag hade mer tid att gå in på djupet, så lägger mer tid numera på att läsa än att skriva. Du fick två youtube länkar ingame som visar något helt otroligt. Allt praktiskt, realtid, in-game...

Snälla bokmärk den här tråden och se hur kommande spel kommer bete sig på respektive arkitektur som utnyttjar bägge arkitekturerna till fullo med Vulkan/DX12. Bara det att många licensierar ID's motorer och det bara är början... Det ska bli MYCKET intressant.

Visa signatur

[ AMD 7800X3D // EK-Block @ custom loop, 2x420mm ][ MSI B650 Tomahawk ][ 32GB G.Skill Z5 Neo @ DDR6000 CL28 1T ][ AMD 7900XTX @ custom loop ][ Corsair 750D // Corsair RM1000X ][ 2TB Samsung 990PRO M.2 SSD ][ Win10 PRO x64 ][ LG 34GN850 ]

Permalänk
Datavetare
Skrivet av Enigma:

Absurd? Först påstår du att min förklaring är absurd när Time Spy inte alls är den största vinsten man sett på GCN kort.

Det är det program som får störst vinst specifikt från att använda "async compute". Det är det enda jag hävdat. Väldigt många verkar inte kunna hålla isär att DX12/Vulkan ger en rad potentiella förbättringar över DX11/OpenGL. Både för Ashes of the Singularity och Time Spy finns resultat med och utan "async compute" fast båda kör med DX12, detta visar specifikt tillskottet från att använda "async compute" och Time Spy ger ungefär 50 % mer än AoS som i sin tur ger näst mest av alla titlar nu.

I Doom kan man inte specifikt slå av "async compute" på GCN, däremot används det inte om man kör med FXAA och man kan därför lite mellan tummen och pekfingret se att tillskottet specifikt från "async compute" är rätt litet i Doom, absolut mindre än AoS. Den stora vinsten här på GCN är att dessa kort underpresterar grovt med OpenGL så blir självklart en stor relativ vinst med Vulkan (och det vare sig man använder "async compute" eller ej).

Skrivet av Enigma:

Nvidia's logik är byggd efter en 8 år gammal API i stora drag. Ser bra ut från start men tappar i längden vilket man ser på samtliga av sista generationer.

Titta på respektive GPUs kapacitet! När man jämför GCN med Kepler så presterar de idag väldigt likvärdigt i spel relativt kortens teoretiska kapacitet, Maxwell och Pascal presterar långt bättre relativt sin kapacitet. En effekt av detta är att Nvidia får betydligt bättre prestanda per Watt då man åstadkommer mer med mindre transistorer. Och det är inte något "Nvidia fanboy statement", det är torra fakta man enkelt kan räkna fram så finns ingen form av subjektivitet här.

Skrivet av Enigma:

Jag litar inte på någon så, utan jag refererar till folk som delar samma uppfattning som mig då jag grävde mer och mer i det jag påstod för att dela här vilket verkar göra dig upprörd. Jag har läst hela den tråden till det inlägget och inte bara hans inlägg. Gör det du också och du kan se mycket av det som jag försöker få sagt. Det står mycket intressant där, alltifrån kod till hårdvara och lite mer info ang 3DMark och dess test som du stenhårt vill ha som en standard över hur korten beter sig i spel med async compute.

Det är ett forum på internet, väldigt många har väldigt starka åsikter om saker de överhuvudtaget inte begriper sig på. I detta fall finns så mycket förstahandsinformation från AMD, Nvidia och i fallet Time Spy en lysande beskrivning direkt från Futuremark som innehåller alla detaljer man behöver för att förstå hur totalt fel de som hävdar att "preemption" hade något med saken att göra är.

Skrivet av Enigma:

3DMark använder sig av nvidia's tolkning av asynkron beräkning, vilket INTE är samma som AMD's GCN baserade lösning.

Fel och fel. Finns bara en tolkning av "async compute", den som DX12 specificerar som den av sitt "multi-engine" koncept. Det är det enda precis varenda DX12 titel har att jobba med och Futurmark slår helt huvudet på spiken med detta

"For GPU work to happen, command lists are executed on queues, which come in variants of DIRECT (commonly known as graphics), COMPUTE and COPY. Submission of a command list to a queue can happen on any thread. The D3D runtime serializes and orders the lists within a queue.

Once initiated, multiple queues can execute in parallel. But it is entirely up to the driver and the hardware to decide how to execute the command lists - the game or application cannot affect this decision with the DirectX 12 API.

This parallelism is commonly known as ‘asynchronous compute’ when work is done on the COMPUTE queue at the same time as work is being done on the DIRECT queue.
DIRECT command list"

Det är här AMD lyckats totalt sätt myror i huvudet på väldigt många. I deras specifika fall så kommer användning av DX12 COMPUTE+DIRECT köer betyda att man kör saker parallellt, för det är hur just AMD valt att mappa dessa köer mot GCN-maskinvaran.

Nvidia har numera valt att inte längre använda de beräkningsköer som finns hos Maxwell då det i praktiken oftast resulterade i lägre prestanda p.g.a. statisk uppdelning av SM mellan beräkning och grafik. Det positiva nu är att spelutvecklarna kan absolut använda både COMPUTE+DIRECT, på Maxwell får man då samma prestanda då allt ändå går in i 3D-kön (som är ett superset av alla andra köer funktionellt) medan Pascal kommer köra saker parallellt.

Intel har hela tiden gjort som Nvidia nu gör med Maxwell, men gissar att man där kommer börja köra COMPUTE-kön på CPU-delen med AVX i framtiden, något som är fullt tillåtet inom DX12 (och Vulkan) specifikationen.

Skrivet av Enigma:

Den ökning du ser i just 3DMark gynnar mest just Pascal för att det har load-balancing över sina beräkningsenheter, men inte Maxwell. Den enda gången man kommer att vilka köra asynkron compute på Pascal är när man inte kan hålla dess beräkningsenheter upptagna, vilket redan så är fallet i dom flesta fall. Testet i 3DMark är snarare ett mycket grafikintensivt test och betydligt mindre compute. Testa kör compute+graphics på Maxwell och se vad som händer i t.ex Doom. Nä just det, vi har inget sånt aktiverat och nvidia "jobbar" på att få full compute+graphics med Pascal. Tror inte det kommer att ske heller, precis av samma anledning att dom sa samma sak med Maxwell. Möjligtvis med kommande Volta.

Doom med Vulkan har just nu två renderingsbackends, en generell som inte använder "async compute" och en som använder "shader instrincts" och därmed inte fungerar på något annat än GCN. Så Doom använder inte "async compute" på något annat än GCN, men man håller på med en till generell backend som använder "async compute". Gissar att Pascal kommer se några få procent boost från detta, det är ungefär vad man kan förvänta sig. 1080 kommer få en större boost än 1070 och 1060 då de senare har mindre shaderkapacitet kontra fix-function delar och rimligen därför har mindre "pipeline bubbles" i sina shaders.

Skrivet av Enigma:

Alla spelutvecklare kommer att följa AMD's tolkning av asynkron beräkning och GCN, för den är en långt mycket bättre implementation.

AMDs "tolkning" i detta fall är tekniskt sett irrelevant då det enda som spelar roll här är DX12 definition av "multi-engine" och motsvarande i Vulkan. Det trista är att AMDs PR-avdelning konstant förvirrar folk genom att använda samma namn i marknadsmaterialet för deras specifika implementation (som också är tekniskt fel då det viktiga i deras implementation inte är det asynkrona, utan att man väljer att köra asynkrona jobb parallellt) som DX12 använder för att, helt tekniskt korrekt, beskriva att två jobb som postas på två olika "engines" (t.ex. COMPUTE resp DIRECT) måste vara asynkrona.

Skrivet av Enigma:

Både Pascal och GCN får en prestandaökning, men titta på ett praktiskt test istället som ID-softwares nya grafikmotor i Doom som rullar på med Vulkan så ser du en riktig ökning. Bägge körs i det spelet med sin egna specifika vendorcode som gynnar bägge till fullo. Fury X presterar hur bra då enligt in-game videos som jag visade? Det säger det mesta, och du vill gärna definiera vad som är logiskt och inte baserat på hur man ska sköta renderingspass tidigare för att nvidia haft makten att definiera detta tidigare, det är iaf så jag uppfattar dig. Det är snarare nvidia som saknar logik att utnyttja parallellism hörredu.

I Vulkan finns en specifik backend för GCN samt det finns en generell som idag inte använder "async compute". Så nej, den senare utnyttjar inte Pascal till fullo just nu och lyssnar man på den youtube video som du postade så körs även den generella Vulkan backend:en alltid med vsync på (vilket inte borde spela jättestor roll förutsatt att man kör på en g-sync skärm och inte går över max frekvens)

Skrivet av Enigma:

Utan att vara programmerare så förstår jag en hel del man lärt sig på vägen kring detta när man är mer duktig på hårdvara och ser hur ofantligt dåligt GCN utnyttjats och varför. Jag kan göra det enkelt du som vill snacka kod då. Varför används hårdvaran exemplariskt i consoler och uppvisar bättre grafik och FPS än någonsin tidigare? Betänk då att det är exakt samma arkitektur som du påstår saknar logik. För vadå? DX11? Jag har redan svaret, men det verkar inte riktigt lika uppenbart för somliga än. På ditt vis så ska man som nvidia implementera logik för att utnyttja DX11 bra. Och inte nog med det, utan man måste, som nvidia också gjort, lägga ner tonvis av arbete på drivrutiner för att få det att fungera, speciellt i multithreading. En sak som verkar vara svårare för dig att hålla isär är hårdvara och mjukvara, vad GPU'erna är kapabla till. Det är egentligen det som är intressant, men det är lite svårt för AMD som är så mycket mindre finansiellt att få hela industrin att vända som redan har hoppat på det gröna tåget och dess ekosystem med att isolera mycket som möjligt. Bara initiativet GPUopen är fantastiskt samman med standarder som Mantle, async compute, Freesync.

Jag önskar jag hade mer tid att gå in på djupet, så lägger mer tid numera på att läsa än att skriva. Du fick två youtube länkar ingame som visar något helt otroligt. Allt praktiskt, realtid, in-game...

Snälla bokmärk den här tråden och se hur kommande spel kommer bete sig på respektive arkitektur som utnyttjar bägge arkitekturerna till fullo med Vulkan/DX12. Bara det att många licensierar ID's motorer och det bara är början... Det ska bli MYCKET intressant.

Har alltid sagt att framförallt Fury X och 390/390X kommer se större boost från "async compute" än någon annan idag existerande GPU. Orsaken är att dessa kretsar är de som underpresterar absolut mest i DX11 jämfört med deras faktiska kapacitet, här finns alltså massor med outnyttjad kraft kvar i shaders.

Den logik som Maxwell/Pascal och till mindre del även Polaris 10 innehåller är saker som bättre prefetchers, större cache och annan logik som ser till att hålla beräkningsenheterna matade med jobb i alla lägen. Är därför helt logiskt att 480, precis som Pascal, ser en mindre vinst från "async compute": dessa kretsar har mer av sin transistorbudget dedikerad till att säkerställa att alla program körs effektivt.

Tror jag förstår samspelet mellan programvara och maskinvara rätt väl. Det AMD försökte med GCN, något som var en katastrof i DX11 (är faktiskt inte speciellt konstigt att det blivit en 80/20 split mellan bolagen), var att lägga en stor del av ansvaret för optimal schemaläggning av jobb på programvaran. Detta är väldigt vanligt inom marknaden för inbyggda-system och där är det vettigt i lägen när man gör väldigt stora serier av kretsar, lite billigare kretsar kommer med råge uppväga den betydligt högre kostnaden för att utveckla programvara (detta är något jag jobbat med många gånger).

Missen AMD gjorde var främst att göra en sådan design under DX11 eran, det finns vissa möjligheter att göra optimeringar i drivrutiner och DX11 gör det möjligt att ge "hints" till drivers om att två saker är asynkrona. Men dels verkar spelutvecklare inte använda detta speciellt mycket och dels verkar inte heller AMD lagt resurser på att faktiskt implementera det i deras DX11 drivare.

Med all rimlig logik kommer GCN att vinna mer på DX12/Vulkan jämfört med Maxwell. 380X och 970 har väldigt snarlik kapacitet, så rent teoretisk borde det vara möjligt att nå 970 prestanda med 380X om man designar ett program utnyttjar DX12 multi-engine helt optimalt. Min poäng här är bara: Maxwell, Pascal och till lite mindre del Polaris har massa logik i kisel som gör att dessa kretsar klarar av att fylla sina beräkningsenheter även om det man matar dem med inte är explicit uppdelat i asynkrona delmoment. Pascal och Polaris kommer fortfarande kunna få en boost av att man gör den uppdelningen, men den kommer aldrig bli lika bra.

Men vänder man på det så är det lite som Core vs Bulldozer, den förra prestera bra i allt medan den senare bara presterar bra i sådant där man kan använda alla trådar. Nu är det inte alls lika illa för grafikkort, framförallt inte nu när spel börjar använda DX12/Vulkan då grafik är något som lämpar sig väldigt väl för att köra saker parallellt (det mesta man gör på skrivbordet är begränsat av latens och inte "throughput" så för desktop-CPUer är det alltid bättre att ha få starka kärnor).

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk
Hjälpsam

För mig är det ganska enkelt.
AMD pushar som fan för DX12, Nvidia gör snarast tvärtom.
ARK är en Gameworkstitel.
http://wccftech.com/ark-survival-evolved-dx12-patch-performan...
11 månader senare saknas fortfarande DX12.
Vi behöver inte titta på tekniken, för att se vart hän det lutar.

Visa signatur

AMD Ryzen 7 1700 | Saphire RX 5700 Pulse XT (Silent Mode) | 64 GB Kingston ECC | https://valid.x86.fr/z2ljhr | Stockkylaren | Bitfenix Whisper M 750W.
AMD Ryzen 9 5900X | AMD RX 5700 | 64 GB Micron ECC | https://valid.x86.fr/5krwxf
HTPC | https://valid.x86.fr/uuzli0 |

Permalänk
Datavetare
Skrivet av Ratatosk:

För mig är det ganska enkelt.
AMD pushar som fan för DX12, Nvidia gör snarast tvärtom.
ARK är en Gameworkstitel.
http://wccftech.com/ark-survival-evolved-dx12-patch-performan...
11 månader senare saknas fortfarande DX12.
Vi behöver inte titta på tekniken, för att se vart hän det lutar.

Och i en värld där pengar regerar, hur kan du på något sätt kritisera Nvidia för att göra fel här? Har man investera massor i både kisel och drivers för att kunna prestera nära kapacitet även när man använder ett så handikappat API som DX11 är det ju en marknadsmässig fördel mot den enda realistiska konkurrent man har som haltar under DX11 (och än mer under OpenGL, så om det var upp till Nvidia hade nog alla spel kör OpenGL...).

Som aktieägare i Nvidia bör man rimligen kräva att de gör vad som är i deras makt att hålla DX11 relevant. Nu lär det ändå bli som det alltid blivit, det kommer ta runt tre år innan majoriteten av speltitlarna är byggd för den nya DX-versionen (d.v.s. för DX12, två år kvar...).

Även AMD inser ju att man lutade sig allt för mycket mot att saker skulle optimeras i programvara. Det fungerar på konsoler då tiden utvecklarna inventerar gör mot en specifik maskinvara som miljoner kunder har, PC är en så homogen plattform att det blir allt för dyrt att göra den typen av optimering utom i väldiga specialfall. Tycker därför det är helt rätt att man i Polaris 10 "offrat" en del av transistorbudget till mer L2-cache, bättre prefetcher och specialdesignad cache för geometri.

Men rent tekniskt har AMD ändå ett problem i att den enklare GP106 kretsen i 1060 presterar helt jämnt med Polaris 10 i 480. Den senare har trots allt 30 % fler transistorer och har också 30 % högre shader-kapacitet, något som man inte riktigt fått betalt för i spelresultat undantaget Doom där det ska bli intressant att se hur mycket "async compute" ger för Pascal (min gissning är max 5 %, men kan ju finnas andra potentiella optimeringar om man specifikt gör en backend för Pascal).

Ekonomin har aldrig intresserat mig speciellt mycket, är tekniken i sig som är intressant. Faktum är att spelande på PC är inte heller speciellt intressant, byggde en spel PC för ca ett år sedan men har konstaterat att det spelade som blir av är på konsol för mig. Så lär bli en PS4 Neo i höst och garanterat en Xbox One: Scorpio nästa år. Kanske köper en ny GPU så man har något att testa lite DX12/Vulkan kod på...

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk
Hjälpsam
Skrivet av Yoshman:

Och i en värld där pengar regerar, hur kan du på något sätt kritisera Nvidia för att göra fel här? Har man investera massor i både kisel och drivers för att kunna prestera nära kapacitet även när man använder ett så handikappat API som DX11 är det ju en marknadsmässig fördel mot den enda realistiska konkurrent man har som haltar under DX11 (och än mer under OpenGL, så om det var upp till Nvidia hade nog alla spel kör OpenGL...).

Som aktieägare i Nvidia bör man rimligen kräva att de gör vad som är i deras makt att hålla DX11 relevant. Nu lär det ändå bli som det alltid blivit, det kommer ta runt tre år innan majoriteten av speltitlarna är byggd för den nya DX-versionen (d.v.s. för DX12, två år kvar...).

Även AMD inser ju att man lutade sig allt för mycket mot att saker skulle optimeras i programvara. Det fungerar på konsoler då tiden utvecklarna inventerar gör mot en specifik maskinvara som miljoner kunder har, PC är en så homogen plattform att det blir allt för dyrt att göra den typen av optimering utom i väldiga specialfall. Tycker därför det är helt rätt att man i Polaris 10 "offrat" en del av transistorbudget till mer L2-cache, bättre prefetcher och specialdesignad cache för geometri.

Men rent tekniskt har AMD ändå ett problem i att den enklare GP106 kretsen i 1060 presterar helt jämnt med Polaris 10 i 480. Den senare har trots allt 30 % fler transistorer och har också 30 % högre shader-kapacitet, något som man inte riktigt fått betalt för i spelresultat undantaget Doom där det ska bli intressant att se hur mycket "async compute" ger för Pascal (min gissning är max 5 %, men kan ju finnas andra potentiella optimeringar om man specifikt gör en backend för Pascal).

Ekonomin har aldrig intresserat mig speciellt mycket, är tekniken i sig som är intressant. Faktum är att spelande på PC är inte heller speciellt intressant, byggde en spel PC för ca ett år sedan men har konstaterat att det spelade som blir av är på konsol för mig. Så lär bli en PS4 Neo i höst och garanterat en Xbox One: Scorpio nästa år. Kanske köper en ny GPU så man har något att testa lite DX12/Vulkan kod på...

Jag kritiserar inte Nvidia för att de vill tjäna pengar, vem vill inte det.

Vad jag säger är att Nvidia är ointresserade av DX12 och att den rimliga orsaken till detta är att de inte tjänar så mycket på det nya gränssnittet.
AMD är däremot betydligt mer intresserade och "puschar" hårt för DX12, orsaken är troligttvis är att deras kretsar går betydligt bättre i DX12 än i DX11.

Vi behöver inte göra någon djupgående analys av kretsarna, för att veta vem som vinner mest, det har redan AMD och Nvidia gjort åt oss.

Sedan kan man givetvis fundera på om AMD inte kunnat vinna ännu mer om det gjort vissa saker annorlunda, tex högre antal ROPS, men faktum kvarstår, mycket talar för att AMD kommer att tjäna på DX12.

Visa signatur

AMD Ryzen 7 1700 | Saphire RX 5700 Pulse XT (Silent Mode) | 64 GB Kingston ECC | https://valid.x86.fr/z2ljhr | Stockkylaren | Bitfenix Whisper M 750W.
AMD Ryzen 9 5900X | AMD RX 5700 | 64 GB Micron ECC | https://valid.x86.fr/5krwxf
HTPC | https://valid.x86.fr/uuzli0 |