Vulkan uppdateras med stöd för flergrafikkortslösningar

Permalänk
Melding Plague

Vulkan uppdateras med stöd för flergrafikkortslösningar

Grafikgränssnittet Vulkan får nu sin första stora uppdatering, där en av nyheterna är stöd för användning av fler än ett grafikkort.

Läs hela artikeln här

Visa signatur

Observera att samma trivselregler gäller i kommentarstrådarna som i övriga forumet och att brott mot dessa kan leda till avstängning. Kontakta redaktionen om du vill uppmärksamma fel i artikeln eller framföra andra synpunkter.

Permalänk
Medlem

Yaaaaaaah!
Jag spår great things to come!

Visa signatur

Tower: ace Battle IV | CPU AMD Phenom II X2 BE unlocked 4cores@3,2GHz | RAM 8GB DDR2@800MHz | MB ASUS M4A785-M | GFK AMD Radeon HD 6850 1GB | HDD Kingston SSD Now 60GB (/) Seagate 2TB(/home) | OS Ubuntu 20.04 LTS
-Numera titulerad: "dator-hipster" då jag har en AMD GPU och dessutom kör Linux.

Permalänk
Medlem

Så den nya uppdateringen är fortfarande låst till en tillverkare, hur är den med olika generationer då?

Permalänk
Medlem

Så om jag förstår det rätt så är det GF eller SLI... men med Vulkan.
DX12 dock kan blanda 2 kort, what ever....?

Tja... oddsen att AMD och Nvidia accepterar dual kort lösningar med 2 olika är väl rätt låg ändå.

Problemet är ju att i båda fallen måste detta kodas av spelutvecklarna själva. Då dessa är snåla, mindre erfarna och ofta inte bryr sig längre än plånboken, lär det bli... minimalt.

Så... hur många här tror (tyvärr) att vi är fast på DX11 2030 fortfarande?

Permalänk
Medlem
Skrivet av Paddanx:

Så om jag förstår det rätt så är det GF eller SLI... men med Vulkan.
DX12 dock kan blanda 2 kort, what ever....?

Tja... oddsen att AMD och Nvidia accepterar dual kort lösningar med 2 olika är väl rätt låg ändå.

Problemet är ju att i båda fallen måste detta kodas av spelutvecklarna själva. Då dessa är snåla, mindre erfarna och ofta inte bryr sig längre än plånboken, lär det bli... minimalt.

Så... hur många här tror (tyvärr) att vi är fast på DX11 2030 fortfarande?

Jag tror om cryengine har bra ekonomi så kommer de kanske lägga krut på det först, för de behöver all prestanda för vissa av deras spel
Sen kommer unity och ue4 bli tvungna att följa efter.
Men innan det så har säkert Idtech redan fixat det

Vad jag menar är att vi kommer säkert se bra implementationer av gameengine-utvecklare först innan vanliga studios och indie.

Permalänk
Inaktiv

Gött, speciellt nu när grafikkorten är så billiga.

Nå det är vanligt att man köper ett grafikkort för att inse att man senare behöver mer kraft att då kunna kombinera i fler programvaror är inte fel, även om programutbudet som använder Vulka är marginellt.

Permalänk
Medlem

Kommer det fortfarande krävas brygga mellan korten, eller kan man köra flera kort utan brygga?

Talades det inte även om att man skulle kunna köras med olika kort/tillverkare?

Permalänk
Medlem

Bra, kan dom trolla fram tillgången på korten och bättre pris samtidigt så är det full pott!

Skickades från m.sweclockers.com

Visa signatur

🖥️ Fractal Design Node 804 • Asrock Fatal1ty X99M Killer • Intel 5820K • Noctua NH-U12S • Corsair Vengeance 16GB • Gigabyte GTX 970 • be quiet! Dark Power Pro 550w • 2x Intel 520 120GB • 2x 1TB • 1x 3TB
💻 Microsoft Surface Pro (8GB/128GB)
 iPhone 11 64GB 🎧 SONY WH-1000XM3
🎵📲 SONY NW-ZX300 64GB [Region changed & Mr Walkman custom firmware loaded] + 256GB xtra • Audio Technica ATH-M50X

Permalänk
Medlem
Skrivet av wargreymon:

Kommer det fortfarande krävas brygga mellan korten, eller kan man köra flera kort utan brygga?

Talades det inte även om att man skulle kunna köras med olika kort/tillverkare?

Kör du Nvidia vet jag ej men med AMD kort lär det inte behövas de gick ju ifrån brygga redan med R9 290/290x.

Visa signatur

Ryzen 5 7600
Rx 6650xt
32Gb

Permalänk
Medlem

Heja Vulkan!!

Visa signatur

AMD Thunderbird 1.33 GHz (133 MHz Bus), Epox 8K7A, 1 x 256MB Corsair PC2100 DDR SDRAM, 20.5GB 7200 RPM Western Digital EIDE, Visiontek GeForce 3

Permalänk
Keeper of The Nvidia Drivers

389.10 GeForce Vulkan 1.1 beta driver

Release Updates

March 7th, 2018 - Windows 389.10, Linux 387.42.05

Full support for Vulkan 1.1
New Extensions
VK_KHR_device_group_creation
VK_KHR_device_group
VK_KHR_maintenance3
VK_KHR_multiview
Updated loader to VulkanRT-1.1.70

https://developer.nvidia.com/vulkan-driver

*Nu fungerar den för alla att ladda ner och inte längre bara för medlemmar.

Visa signatur

AMD FX53 939 | MSI nForce4 939 | Ati Radeon x1800XT OC PE | 2*1024mb G-Skill 1-2-3-2-5 | Comhem 10/1 | Frölunda Indians SM GULD!!!
In Hoc Signo Vinces!

Permalänk
Medlem

VÄNTA NU VA!!! Linux gaming convention visade ju redan detta 2016 på AMD kort. Menar ni att de nu funkar på nvida med? Is så fall YEEEEEES! Fan vad glad jag blir.

Visa signatur

2x Xeon E5-2699 v4, 256gb Quad Channel RAM, 2x nVIDIA 980ti
----
AMD Ryzen 5950X, 128gb Dual Channel RAM, 2x AMD 6900XT
----
Massiv amiga och 3dfx-samling.

Permalänk
Medlem

@wargreymon: Teoretiskt sett är PCIE 16x nog ännu för alla AMD kort. (för nvidia vet jag inte) Har du två fulla AMD 16x kort och kompatibelt moderkort så ska det funkar i linux helt perfekt. man ska inte ens behöva fglrx enligt vissa för passthrough är seamless vid den hastigheten. processorerna av idag fyller ändå inte pipelinen.

Visa signatur

2x Xeon E5-2699 v4, 256gb Quad Channel RAM, 2x nVIDIA 980ti
----
AMD Ryzen 5950X, 128gb Dual Channel RAM, 2x AMD 6900XT
----
Massiv amiga och 3dfx-samling.

Permalänk
Medlem

@anon159643: De må se ut som marginellt nu, men snart har android (nya kerneln vid namn fuschia) vulkan i kernerln och inte som modul. Kommer spara ipc och ström. Vet inte hur apple kommer att möta detta. Antagligen via att läga metal närmare mach (microkernel, XNU i detta fall) eller bara acceptera at deras skit blir omodernt samma som hände när de slogs om pc marknaden.

Visa signatur

2x Xeon E5-2699 v4, 256gb Quad Channel RAM, 2x nVIDIA 980ti
----
AMD Ryzen 5950X, 128gb Dual Channel RAM, 2x AMD 6900XT
----
Massiv amiga och 3dfx-samling.

Permalänk
Medlem

@Paddanx:
Croengine är redan fullt vulkan för linuxversionerna. (har man inte kompatibelt kort så bakslår det till opengl)
Se bara skillnaden på youtube mellan windowsversionen av SS3 BFE och linuxversionen när de kör i Vulkan mode.

Visa signatur

2x Xeon E5-2699 v4, 256gb Quad Channel RAM, 2x nVIDIA 980ti
----
AMD Ryzen 5950X, 128gb Dual Channel RAM, 2x AMD 6900XT
----
Massiv amiga och 3dfx-samling.

Permalänk
Medlem

En allmän fråga: Hur kommer det sig att Vulkan inte är mer populärt än vad det är?
Förutom Doom och BF4 (BF1) som är gjorda av stora studios med stora resurser vad finns det mer?

Visa signatur

Ryzen 9 5950X, 32GB 3600MHz CL16, SN850 500GB SN750 2TB, B550 ROG, 3090 24 GB
Har haft dessa GPUer: Tseng ET6000, Matrox M3D, 3DFX Voodoo 1-3, nVidia Riva 128, TNT, TNT2, Geforce 256 SDR+DDR, Geforce 2mx, 3, GT 8600m, GTX460 SLI, GTX580, GTX670 SLI, 1080 ti, 2080 ti, 3090 AMD Radeon 9200, 4850 CF, 6950@70, 6870 CF, 7850 CF, R9 390, R9 Nano, Vega 64, RX 6800 XT
Lista beg. priser GPUer ESD for dummies

Permalänk
Medlem
Skrivet av Herr Kantarell:

En allmän fråga: Hur kommer det sig att Vulkan inte är mer populärt än vad det är?
Förutom Doom och BF4 (BF1) som är gjorda av stora studios med stora resurser vad finns det mer?

för att spel görs inte på 1 dag... tar flera år med stora team

Visa signatur

"Resistance is futile."

- Georg Ohm

Permalänk
Medlem
Skrivet av Herr Kantarell:

En allmän fråga: Hur kommer det sig att Vulkan inte är mer populärt än vad det är?
Förutom Doom och BF4 (BF1) som är gjorda av stora studios med stora resurser vad finns det mer?

Det enkla svaret:
Någon betalar dem för att inte göra det.

(Finns det något företag som har en konkurerande produkt, och som också kanske har en spelkonsol som skulle vinna på detta?)

Permalänk
Medlem
Skrivet av Paddanx:

Så om jag förstår det rätt så är det GF eller SLI... men med Vulkan.
DX12 dock kan blanda 2 kort, what ever....?

Tja... oddsen att AMD och Nvidia accepterar dual kort lösningar med 2 olika är väl rätt låg ändå.

Problemet är ju att i båda fallen måste detta kodas av spelutvecklarna själva. Då dessa är snåla, mindre erfarna och ofta inte bryr sig längre än plånboken, lär det bli... minimalt.

Så... hur många här tror (tyvärr) att vi är fast på DX11 2030 fortfarande?

Se det så här:
Om man går över till Dx12 innebär det att det mesta av lågnivå-pilleriet för att få ut så mycket som möjligt ur grafikkortet flyttas över från grafikkortets drivrutin till den som kodar spelet.
NVidia har en arme av drivrutinskodare, AMD en bråkdel av det.
Vem har +90% av grafikkortsmarknaden?
Vem anses ha bättre prestandavinster i Dx12 jämfört med Dx11?
Vem förlorar mest på att man går över till Dx12?
Smack!

Permalänk
Medlem
Skrivet av ThomasLidstrom:

Se det så här:
Om man går över till Dx12 innebär det att det mesta av lågnivå-pilleriet för att få ut så mycket som möjligt ur grafikkortet flyttas över från grafikkortets drivrutin till den som kodar spelet.
NVidia har en arme av drivrutinskodare, AMD en bråkdel av det.
Vem har +90% av grafikkortsmarknaden?
Vem anses ha bättre prestandavinster i Dx12 jämfört med Dx11?
Vem förlorar mest på att man går över till Dx12?
Smack!

Du säger det, men ändå levererar ändå AMD bättre DX12 prestanda idag, då deras kort är mer optimerade för det så de har båda för och nackdelar där.

Jag tänker inte göra detta till ett AMD/Nvidia argument dock, utan vill mer titta på detta som ett frågande argument var alla de dussintals spel som lovades komma redan 2016... vi sitter här nu 2 år senare och väntar än, där nästan alla spel är DX11 än.

Och man kan inte tvinga dem genom att ta bort DX11... för då skulle befintliga spel sluta fungera. Så vi kommer vara fast i detta o optimerade hel-vete till DX11 ett tag till, då ingen utvecklare vill lägga jobbet på att göra det till Vulkan/DX12.

Alla är så förtjusta i att vilja ha utveckling, men här står den verkligen stilla, då ingen vill betala för det.

Skrivet av HappyPie:

Jag tror om cryengine har bra ekonomi så kommer de kanske lägga krut på det först, för de behöver all prestanda för vissa av deras spel
Sen kommer unity och ue4 bli tvungna att följa efter.
Men innan det så har säkert Idtech redan fixat det

Vad jag menar är att vi kommer säkert se bra implementationer av gameengine-utvecklare först innan vanliga studios och indie.

Jo jag hoppas detta också. Det verkar som att om iag motorerna byggs på det, så borde det finnas anledning för spelen att gå den vägen. Vi sitter ju trots allt i världen där enkel trådig CPU prestanda är begränsat och vi behöver betydligt mer hårdvaru-optimeringar även på GPUerna, då det är svårare och svårare att få mer prestanda på annan sätt.

@danedi Ingen tvivlar på att det är bättre, men allt man sett är små-skalig teori test eller koncept. Färdiga spel med Vulkan är väldigt få till antalet.

Permalänk
Avstängd

Intressant att Microsofts proprietära DirectX stödjer att kombinera grafikkort från olika tillverkare, medan Khronos öppna Vulkan kräver grafikkort från samma tillverkare.

Permalänk
Medlem
Skrivet av Paddanx:

Du säger det, men ändå levererar ändå AMD bättre DX12 prestanda idag, då deras kort är mer optimerade för det så de har båda för och nackdelar där.

Jag tänker inte göra detta till ett AMD/Nvidia argument dock, utan vill mer titta på detta som ett frågande argument var alla de dussintals spel som lovades komma redan 2016... vi sitter här nu 2 år senare och väntar än, där nästan alla spel är DX11 än.

Och man kan inte tvinga dem genom att ta bort DX11... för då skulle befintliga spel sluta fungera. Så vi kommer vara fast i detta o optimerade hel-vete till DX11 ett tag till, då ingen utvecklare vill lägga jobbet på att göra det till Vulkan/DX12.

Alla är så förtjusta i att vilja ha utveckling, men här står den verkligen stilla, då ingen vill betala för det.

Jo jag hoppas detta också. Det verkar som att om iag motorerna byggs på det, så borde det finnas anledning för spelen att gå den vägen. Vi sitter ju trots allt i världen där enkel trådig CPU prestanda är begränsat och vi behöver betydligt mer hårdvaru-optimeringar även på GPUerna, då det är svårare och svårare att få mer prestanda på annan sätt.

@kemuffkamelen Ingen tvivlar på att det är bättre, men allt man sett är små-skalig teori test eller koncept. Färdiga spel med Vulkan är väldigt få till antalet.

Tack för att du inte "gick igång" på Nvidia vs AMD-sandlåde-skvättandet!

Alla spel som har stöd för Dx12, Vulkan, Mantle kör jag i just dessa lägen.
På så vis ser jag till att Steam, Origin etc noterar användningen.

En sak som håller tillbaka en omfattande spridning av Dx12 är att det kräver Win10.
Det var väl inte förrän nyligen Win10 gick om Win7, Vulkan är mer lovande då det är näst intill oberoende av OS.

Sedan tror jag att det kan röra sig om ett mindre paradigmskifte ibland spelkodarna. Man säger att Dx12/Vulkan är "close to the metal". Många (de flesta?) spel nu för tiden är iterationer av samma speltitel där man gjort vissa ändringar. Att byta från Dx11 till Dx12/Vulkan innebär arktitekturella ändringar, något jag misstänker att spelstudiona vill undvika så långt det är möjligt.
Denna ursäkt har dock inte nya titlar.

Permalänk
Medlem
Skrivet av ThomasLidstrom:

Tack för att du inte "gick igång" på Nvidia vs AMD-sandlåde-skvättandet!

Alla spel som har stöd för Dx12, Vulkan, Mantle kör jag i just dessa lägen.
På så vis ser jag till att Steam, Origin etc noterar användningen.

Låter som klokt tänkt, men problemet är ju att de är verkligen minoritet.
Ska man dock lita blint på den statistiken så kör vi alla Intel HD GPU

Skrivet av ThomasLidstrom:

En sak som håller tillbaka en omfattande spridning av Dx12 är att det kräver Win10.
Det var väl inte förrän nyligen Win10 gick om Win7, Vulkan är mer lovande då det är näst intill oberoende av OS.

Nja.. Win 10 har både gått om Win 7 och sedan tappat allt igen när väl Kina räknades med. Win 10 är mionoritet än, folk vill bara inte räkna dem. Allt beror ju på hur man räknar, och var man mäter, vilket inte säger mer än... att man kan vrida faktan som man vill.
Ska man ta Stream som du påpekat ovan, är Win 7 stor majoritet än:
http://store.steampowered.com/hwsurvey/directx/'

Windows 7 64 bit
69.68%
-3.06%
Windows 10 64 bit
25.85%
+2.78%

Med det sagt så är Win 10 kravet ju inget som påverkar Vulkan, och problemet är ju att ändå kan dessa två inte ens tillsammans dra sig över 10% från DX11 nivån.
Jag tror inte det hjälper att majoriteten av GPUer idag är just DX11 optimerade heller. Dessa vinner ju inget på DX12, vilket gör intresset svalt.

Skrivet av ThomasLidstrom:

Sedan tror jag att det kan röra sig om ett mindre paradigmskifte ibland spelkodarna. Man säger att Dx12/Vulkan är "close to the metal". Många (de flesta?) spel nu för tiden är iterationer av samma speltitel där man gjort vissa ändringar. Att byta från Dx11 till Dx12/Vulkan innebär arktitekturella ändringar, något jag misstänker att spelstudiona vill undvika så långt det är möjligt.
Denna ursäkt har dock inte nya titlar.

Lite detta jag också inte begripit. PS4an och XBox är båda skrivna med någon form av "close to metal" grafik API. Skulle tro XBox mer eller mindre kör en modifierad DX12 och PS4an troligen använder Vulkan/OpenGL (gissningsvis). Så varför inte dessa optimeringar och grunder letat sig ut till nyare spel är liten "head scratcher", då de redan gör denna optimering/omskrivning idag.

Som @HappyPie skrev ovan så tror jag att spelmotorerna måste göras om med det i tanken. Detta är naturligtvis något som tar mycket tid, och sedan måste spelen göras efter detta. Men ändå... DX11 är lika gammalt som just Windows 7, tom äldre (2008 väl?). Och om nu detta kallas föråldrat, och ska upphöra om 2 år... vad är inte DX11 då!?

Visst har nya iterationer kommit, tex 11.3 2015 tror jag det var som var tillsammans med DX12, men detta är också låst till Windows 10, vilket gör det meningslöst för utvecklare som vill täcka hela marknaden. Tror 11.2 är väl den senaste "öppna" versionen som kör idag, och den är från 8.1, som trots allt MS redan kastat i graven (tyvärr).

Vi får se.
Jag har lite oro att det är mycket makt och företags fiffel som pågår dock, för det är konstigt att man vill utveckla allt, men samtidigt hålla kvar i ett 10 år gammalt API...

Permalänk
Datavetare
Skrivet av Herr Kantarell:

En allmän fråga: Hur kommer det sig att Vulkan inte är mer populärt än vad det är?
Förutom Doom och BF4 (BF1) som är gjorda av stora studios med stora resurser vad finns det mer?

Har ställt frågan till ett par spelutvecklare om vad deras val av API för 3D-grafik är grundat på. Svaret är betydligt mindre spännande än de förklaringar konspirationsteoretiker svänger sig med.

Orsaken är att datorspelmarknaden utanför Windows i de flesta fall inte är ekonomisk försvarbar att jaga om det medför en icke-trivial merkostnad. Tidigare när valet stod mellan DX och OpenGL var ett stort problem med OpenGL att många saker var för löst specificerade medan DX hade (och har) en lång rad tester som verifierar att olika implementationer uppför sig på samma sätt.

Här har man alltså en merkostnad i form av testning med OpenGL. Just detta är något man specifikt jobbat med i fallet Vulkan.

Men ökad testkostnad är inte den enda orsaken. En kanske ännu större orsak är att DX varit dominerade så länge att både interna och externa verktyg är idag först och främst anpassade till DX. Det är helt enkelt associerat med en merkostnad för att använda Vulkan i form av både lägre produktivitet (fram till att verktygen är lika bra) samt kostnad för att köpa nya externa verktyg (som i vissa fall kanske inte finns ännu) samt uppdatera interna verktyg.

Lyfter man då blicken ett steg till så börjar nog polletten kring värdet av "lågnivå APIer" allt mer trillar ned. Både förvånad och inte förvåna att det tagit så här lång tid. Inte förvånad då programmerare är generellt extremt usla på att bedöma var flaskhalsarna i ett system ligger, förvånad då spelprogrammerare tillsammans med kanske OS-utvecklare och de som skriver drivrutiner är långt bättre än genomsnittet på att skriva högpresterande kod.

Lågnivå APIer kan inte få GPUn att jobba snabbare på något relevant sätt, dessa APIer är guld värda på konsoler därför att de kan avlasta CPU-delen som där är primär flaskhals! Även "async compute" är guld värd på konsoler då det är ännu ett sätt man kan flytta last från en relativt svag CPU till en i sammanhanget kraftig GPU.

För PC gäller det omvända, här är nästan alltid GPU-delen primär flaskhals. Att då använda "async compute" för att avlasta CPU vore ju rent kontraproduktivt, kvar finns några specialfall som kan ge 5-10 % prestandavinst.

Vidare är Nvidias DX11 drivare ett ingenjörsmästerverk på att ta något som helt saknar explicit parallellism och sprida ut det över CPU-kärnor. Det helt utan att man som spelutvecklare behöver lägga några resurser på detta. I DX12/Vulkan är sådana optimeringar omöjliga från Nvidia/AMDs sida, all form av parallellism måste explicit komma från spelmotorn.

I praktiken skalar Nvidias DX11 trick inte till speciell många kärnor, potentialen är högre i DX12/Vulkan (men lång ifrån så hög som många vill tro). Fast i dagsläget spelar det rätt liten roll, dels gör Nvidias DX11 drivare i många lägen ett minst lika bra jobb som spelprogrammerare gör med DX12 och dels är har vi fortfarande kvar huvudproblemet att det är GPU och inte CPU som är primär flaskhals.

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

@Yoshman: Som du nämnde är GPU:n flaskhalsen på PC idag och att avlasta CPU:n skulle vara kontraproduktivt, men hur är det med dessa nya api:er om de kan effektivisera vissa delar av renderingsmotorn för GPU:n räkning?
Finns det någon större vinning i med att minska t.ex. overhead eller utnyttja andra funktioner med dessa nya api:er?
Eller är det försumbart mellan ett hårt optimerad DX11 spel från drivrutinernas sida till och från ett optimerat DX12/Vulkan spel från spelutvecklarnas sida?

Permalänk
Datavetare
Skrivet av HappyPie:

@Yoshman: Som du nämnde är GPU:n flaskhalsen på PC idag och att avlasta CPU:n skulle vara kontraproduktivt, men hur är det med dessa nya api:er om de kan effektivisera vissa delar av renderingsmotorn för GPU:n räkning?
Finns det någon större vinning i med att minska t.ex. overhead eller utnyttja andra funktioner med dessa nya api:er?
Eller är det försumbart mellan ett hårt optimerad DX11 spel från drivrutinernas sida till och från ett optimerat DX12/Vulkan spel från spelutvecklarnas sida?

"Overhead" är ju i detta fall i princip uteslutande CPU-overhead, DX12/Vulkan är dels strukturerad på ett sätt som helt eliminerar vissa typer av beräkningar samt det finns mer potential att sprida dyra "draw-calls" över flera CPU-kärnor (fast rent praktiskt har ett sådant stöd existerat redan sedan DX10).

Det som primärt begränsar GPUn är ju dess kapacitet att köra shader-kernels. Exakt vad man kan göra i shaders styrs av HLSL version och DX feature-level, normalt sett är ju detta samma på en viss GPU vare sig man kör DX11 eller DX12. Vulkan följer rätt nära i vad som är möjligt, i 1,1 är ju en nyheterna att det är ännu mindre skillnad mot DX på denna punkt.

Om man fortsätter att smacka på fler CPU-kärnor och kanske än mer om man fortsätter trycka in kapacitet i SIMD-delen (SSE/AVX) i framtida CPUer är ju den mer logiska utvecklingen att, likt hur man nyttjade SPEs på PS3, börja flytta vissa jobb från GPU till CPU! Problemet här är att bara en delmängd av det GPUn används till i ett spel är praktiskt lämpligt att köra på SIMD (en CPU har t.ex. inte i närheten samma bandbredd som en GPU, så allt som är kraftigt bandbreddskrävande är no-go).

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 ställt frågan till ett par spelutvecklare om vad deras val av API för 3D-grafik är grundat på. Svaret är betydligt mindre spännande än de förklaringar konspirationsteoretiker svänger sig med.

Orsaken är att datorspelmarknaden utanför Windows i de flesta fall inte är ekonomisk försvarbar att jaga om det medför en icke-trivial merkostnad. Tidigare när valet stod mellan DX och OpenGL var ett stort problem med OpenGL att många saker var för löst specificerade medan DX hade (och har) en lång rad tester som verifierar att olika implementationer uppför sig på samma sätt.

Här har man alltså en merkostnad i form av testning med OpenGL. Just detta är något man specifikt jobbat med i fallet Vulkan.

Men ökad testkostnad är inte den enda orsaken. En kanske ännu större orsak är att DX varit dominerade så länge att både interna och externa verktyg är idag först och främst anpassade till DX. Det är helt enkelt associerat med en merkostnad för att använda Vulkan i form av både lägre produktivitet (fram till att verktygen är lika bra) samt kostnad för att köpa nya externa verktyg (som i vissa fall kanske inte finns ännu) samt uppdatera interna verktyg.

Lyfter man då blicken ett steg till så börjar nog polletten kring värdet av "lågnivå APIer" allt mer trillar ned. Både förvånad och inte förvåna att det tagit så här lång tid. Inte förvånad då programmerare är generellt extremt usla på att bedöma var flaskhalsarna i ett system ligger, förvånad då spelprogrammerare tillsammans med kanske OS-utvecklare och de som skriver drivrutiner är långt bättre än genomsnittet på att skriva högpresterande kod.

Lågnivå APIer kan inte få GPUn att jobba snabbare på något relevant sätt, dessa APIer är guld värda på konsoler därför att de kan avlasta CPU-delen som där är primär flaskhals! Även "async compute" är guld värd på konsoler då det är ännu ett sätt man kan flytta last från en relativt svag CPU till en i sammanhanget kraftig GPU.

För PC gäller det omvända, här är nästan alltid GPU-delen primär flaskhals. Att då använda "async compute" för att avlasta CPU vore ju rent kontraproduktivt, kvar finns några specialfall som kan ge 5-10 % prestandavinst.

Vidare är Nvidias DX11 drivare ett ingenjörsmästerverk på att ta något som helt saknar explicit parallellism och sprida ut det över CPU-kärnor. Det helt utan att man som spelutvecklare behöver lägga några resurser på detta. I DX12/Vulkan är sådana optimeringar omöjliga från Nvidia/AMDs sida, all form av parallellism måste explicit komma från spelmotorn.

I praktiken skalar Nvidias DX11 trick inte till speciell många kärnor, potentialen är högre i DX12/Vulkan (men lång ifrån så hög som många vill tro). Fast i dagsläget spelar det rätt liten roll, dels gör Nvidias DX11 drivare i många lägen ett minst lika bra jobb som spelprogrammerare gör med DX12 och dels är har vi fortfarande kvar huvudproblemet att det är GPU och inte CPU som är primär flaskhals.

Tack för svar!

Om jag minns rätt var tidigare DX (säg 9-11) populära då det fanns mycket färdigt i APIerna medans OpenGL var mer basic och utvecklarna fick själva ta fram mycket funktioner.
Och jag trodde att Vulkan hade sänkt instegströskeln en del.

Något jag märkt i mitt yrkesliv är att många programmerare som inte har mycket HW bakgrund inte tänker på begränsningar i hårdvaran oavsett om det gäller ARM-CPUer eller GPUer. Intels CPUer och AMD Zen är väldigt tacksamma. Mycket cache och smart prefetch gör att de presterar bra med kod som inte är optimerad.

Visa signatur

Ryzen 9 5950X, 32GB 3600MHz CL16, SN850 500GB SN750 2TB, B550 ROG, 3090 24 GB
Har haft dessa GPUer: Tseng ET6000, Matrox M3D, 3DFX Voodoo 1-3, nVidia Riva 128, TNT, TNT2, Geforce 256 SDR+DDR, Geforce 2mx, 3, GT 8600m, GTX460 SLI, GTX580, GTX670 SLI, 1080 ti, 2080 ti, 3090 AMD Radeon 9200, 4850 CF, 6950@70, 6870 CF, 7850 CF, R9 390, R9 Nano, Vega 64, RX 6800 XT
Lista beg. priser GPUer ESD for dummies

Permalänk
Datavetare
Skrivet av Herr Kantarell:

Tack för svar!

Om jag minns rätt var tidigare DX (säg 9-11) populära då det fanns mycket färdigt i APIerna medans OpenGL var mer basic och utvecklarna fick själva ta fram mycket funktioner.
Och jag trodde att Vulkan hade sänkt instegströskeln en del.

Något jag märkt i mitt yrkesliv är att många programmerare som inte har mycket HW bakgrund inte tänker på begränsningar i hårdvaran oavsett om det gäller ARM-CPUer eller GPUer. Intels CPUer och AMD Zen är väldigt tacksamma. Mycket cache och smart prefetch gör att de presterar bra med kod som inte är optimerad.

Förstod inte själv varför spelutvecklare såg det som så trevligt att ha x86 både på PC och konsoler. Nu efter att hör lite mer på vilken nivå vissa AAA-studios har på deras teoretiska bevis (eller mer avsaknad av sådana) kring att man implementerat multi-CPU specifika optimeringar som låsfria algoritmer korrekt går det upp varför...

I vissa fall gör man ju saker där det rätt enkelt går att bevisa att vad man gör kommer innehålla potentiella data-race. Här verkar det mest handla om att "det kraschar tillräckligt sällan, i alla fall på x86, så är OK"... Samma kod på t.ex. ARM kan vara väldigt instabil.

ARM har en långt mindre strikt minneskonsistensmodell jämfört med x86, så felaktig synkronisering ger oftare buggar. Så x86 är bättre för multicore? Tvärtom, en mindre strikt minneskonsistensmodell ger fler möjligheter till optimeringar som kan vara extra fördelaktiga om man har många kärnor. Lite mer viktigt att programmerarna gör rätt dock (men även här finns lite fler möjligheter till optimeringar).

Är egentligen x86 som är undantagsfallet (ihop med SPARC) och inte ARM. I princip alla RISC-designer lämnar väldigt många frihetsgrader öppna när det kommer till vad som är tillåtet när flera kärnor gör minnesoperationer utan explicit synkronisering. Så olika kärnor inte skriver till samma minnesadresser har RISC-modellen en rad fördelar. ARMv8 är den enda design med "perfekt" match mellan HW och vad C11, C++11 och Java5 (och självklart i senare versioner, listar här första version när modellen slogs fast) behöver.

Angående utvecklingsverktyg. Finns väldigt många saker man inte riktigt kan påverka med Vulkan, t.ex. att många grafiska verktyg har betydligt bättre stöd DX än för andra saker.

Men vissa saker har man absolut putsat på i Vulkan jämfört med OpenCL, t.ex.

  • man har nu en väldefinierad "intermediate language" (IL) för shaders, likt HLSL för DX. Detta gör det möjligt att ha en gemensam kompilator i stället för att kompilatorn är en del av drivrutinerna (vilket varit fallet för både OpenCL och OpenGL). Är betydligt enklare att säkerställa att olika implementationer uppför sig på samma sätt om man har en välspecad IL att utgå från

  • Vulkan har flera krokar för att underlätta benchmarking och profiling!

Problemet är lite att det är en fördel mot OpenGL, men egentligen ingen fördel jämfört med DX11/12.

Hade Apple varit med på Vulkan-spårket vore nog framgången helt säkrad, tyvärr så kör de ett eget race med Metal. Finns ändå en god chans att Vulkan lyckas då Android använder det.

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:

Förstod inte själv varför spelutvecklare såg det som så trevligt att ha x86 både på PC och konsoler. Nu efter att hör lite mer på vilken nivå vissa AAA-studios har på deras teoretiska bevis (eller mer avsaknad av sådana) kring att man implementerat multi-CPU specifika optimeringar som låsfria algoritmer korrekt går det upp varför...

I vissa fall gör man ju saker där det rätt enkelt går att bevisa att vad man gör kommer innehålla potentiella data-race. Här verkar det mest handla om att "det kraschar tillräckligt sällan, i alla fall på x86, så är OK"... Samma kod på t.ex. ARM kan vara väldigt instabil.

ARM har en långt mindre strikt minneskonsistensmodell jämfört med x86, så felaktig synkronisering ger oftare buggar. Så x86 är bättre för multicore? Tvärtom, en mindre strikt minneskonsistensmodell ger fler möjligheter till optimeringar som kan vara extra fördelaktiga om man har många kärnor. Lite mer viktigt att programmerarna gör rätt dock (men även här finns lite fler möjligheter till optimeringar).

Är egentligen x86 som är undantagsfallet (ihop med SPARC) och inte ARM. I princip alla RISC-designer lämnar väldigt många frihetsgrader öppna när det kommer till vad som är tillåtet när flera kärnor gör minnesoperationer utan explicit synkronisering. Så olika kärnor inte skriver till samma minnesadresser har RISC-modellen en rad fördelar. ARMv8 är den enda design med "perfekt" match mellan HW och vad C11, C++11 och Java5 (och självklart i senare versioner, listar här första version när modellen slogs fast) behöver.

Angående utvecklingsverktyg. Finns väldigt många saker man inte riktigt kan påverka med Vulkan, t.ex. att många grafiska verktyg har betydligt bättre stöd DX än för andra saker.

Men vissa saker har man absolut putsat på i Vulkan jämfört med OpenCL, t.ex.

  • man har nu en väldefinierad "intermediate language" (IL) för shaders, likt HLSL för DX. Detta gör det möjligt att ha en gemensam kompilator i stället för att kompilatorn är en del av drivrutinerna (vilket varit fallet för både OpenCL och OpenGL). Är betydligt enklare att säkerställa att olika implementationer uppför sig på samma sätt om man har en välspecad IL att utgå från

  • Vulkan har flera krokar för att underlätta benchmarking och profiling!

Problemet är lite att det är en fördel mot OpenGL, men egentligen ingen fördel jämfört med DX11/12.

Hade Apple varit med på Vulkan-spårket vore nog framgången helt säkrad, tyvärr så kör de ett eget race med Metal. Finns ändå en god chans att Vulkan lyckas då Android använder det.

Jag tror mycket av det som lockat med x86 i konsoler är att man vet ungefär hur koden kommer bete sig vid portar till PC och vice versa. Man minns de där SPU(?) i PS3 som rätt få kunde utnyttja effektivt.

ARM är ju något galet energieffektiv. Det är ju till stor del därför vi inte ser så mycket x86 i mobiltelefoner.

Jag höll på med embedded utveckling till ARM ett tag. Tror det var ARMv5 eller v7. Var ganska mycket trixande och fällor. "Aha på sida 862 i databladet står det visst att blabla inte funkar medans man hanterar interupts och liknande". ARMv8a är trevlig! Att använda NEON är ju inte alltid helt trivialt. Som tur är finns lite open source libraries och tror att det har hänt en del. Har för mig att gcc kan med lite hjälp förstå när den kan användas osv.

Okej intressant! Mmm med vulkan till android kanske spel går att porta relativt smärtfritt mellan olika plattformar.

Visa signatur

Ryzen 9 5950X, 32GB 3600MHz CL16, SN850 500GB SN750 2TB, B550 ROG, 3090 24 GB
Har haft dessa GPUer: Tseng ET6000, Matrox M3D, 3DFX Voodoo 1-3, nVidia Riva 128, TNT, TNT2, Geforce 256 SDR+DDR, Geforce 2mx, 3, GT 8600m, GTX460 SLI, GTX580, GTX670 SLI, 1080 ti, 2080 ti, 3090 AMD Radeon 9200, 4850 CF, 6950@70, 6870 CF, 7850 CF, R9 390, R9 Nano, Vega 64, RX 6800 XT
Lista beg. priser GPUer ESD for dummies

Permalänk
Skrivet av Paddanx:

Så om jag förstår det rätt så är det GF eller SLI... men med Vulkan.
DX12 dock kan blanda 2 kort, what ever....?

Tja... oddsen att AMD och Nvidia accepterar dual kort lösningar med 2 olika är väl rätt låg ändå.

Problemet är ju att i båda fallen måste detta kodas av spelutvecklarna själva. Då dessa är snåla, mindre erfarna och ofta inte bryr sig längre än plånboken, lär det bli... minimalt.

Så... hur många här tror (tyvärr) att vi är fast på DX11 2030 fortfarande?

Problemet med DX12 och Vulcan var just att en av deras större säljpunkter var just lättare implementation av multi-GPU, ett koncept som AMD och Nvidia nu har sänkt till graven

Visa signatur

PC #1 CPU: R5 1600 @3.8 Motherboard: B350-A PRIME GPU: EVGA 1080 Ti
PC #2 CPU: i7 3770K @4.2 Motherboard: P8P67 GPU: AMD R9 290X