Permalänk
Medlem

Kommer GPGPU konkurrera ut CPU?

Läste om att nvidias VD, Jen-Hsun Huang om jag minns rätt, sa något i still med att "snart kommer vi att fixa så att GPGPU tar över CPUns jobb". Stämmer detta eller är det bara för att hypa nvidias grafikkort?

Någon som vet hur långt de har kommit inom GPGPU? Pratas om hundra (tusen?) gånger mer prestanda. Men man blir ju lite osäker på om det bara är marknadsföringssnack eller ej...

Permalänk
Medlem

Kollade just den lilla biten där han säger det på någon presskonferans nyligen men har ingen koll hur det kommer att bli, men jag tror att det ör möjligt, sen när det verklighet är klart en annan fråga. time will tell.

Visa signatur

Moderkort: Aorus z390 elite CPU: INTEL i9 9900KS
SSD: 970 evo plus 1TB Intel 750 1.2TB, Samsung 850 PRO 1TB GPU: Titan X Pascal
Ljud: PC360Sennheiser+SB ZxR RAM: Corsair Vengeance lpx 2600mhz cl15 32GB
SKÄRM1: Asus Rog Swift PG279Q 165hz 27" 2560x1440 CHASSI: Define R5
SKÄRM2: ASUS PB278QR 27" 2560x1440 KYLNING: NH-D15 NÄTDEL: Corsair AX860W

Permalänk
Medlem

Finns väl redan en tråd om detta när det var en nyhet på Sweclockers?

Fördelen hos CPUer är att de kan göra så mycket olika saker medan en gpu kan göra få saker (instruktioner) väldigt parallelt. En CPU idag hanterar stora program och har stora cacheminnen. En GPU kärna små program och litet cacheminne.

För att svara på din fråga tror jag man kommer se betydligt bättre APUer i framtiden där CPU och GPU delar L3 cache och mycket jobb kan göras i GPUn med CPUn som schemaläggare och övervakare.

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
Inaktiv

Man får komma ihåg att JHH för sin agenda och han har snackat om detta i nästan tio år. Problemet är, nu som då, att Nvidia inte får tillgång till x86-instruktionerna och deras Tegra är det få som vill använda. Finns lyckade implementationer av ARM men Nvidia räknas inte bland dessa.

Kommer inte hända på många år, speciellt så länge PC-marknaden är så x86-beroende som den är. CPU'n lär förbli kung många år framåt.

Permalänk
Datavetare

Grovt kan man dela in problem i tre klasser. Självklart kan man kan göra alla möjliga uppdelningar, just den här uppdelningen är gjort för att belysa fördelar och brister med GPGPU

  • strikt sekventiella problem: många interaktiva applikationer hamnar i denna grupp, man utför en sekvens med uppgifter där uppgift M ofta är beroende av uppgift N (N>M och skillnaden är relativt liten)

  • uppgiftsparallella problem: "multitasking" och många serverapplikationer hamnar i denna grupp, här har man många oberoende uppgifter som kan utföras samtidig, det jobb som behöver utföras i varje enskilt fall kan skilja sig åt

  • dataparallella problem: urtypsexemplet är matrismultiplikation, resultatet för varje cell beräknas med samma operationer men med olika data för varje cell (väldigt mycket kan beskrivas som matriser så detta är mer generellt än man kan tro), många varianter av bild- och signalbehandling hamnar även här

GPUer är rätt odugliga på de två första och helt överlägsen en CPU i det sista fallet. Så program som jobbar med saker som passar in i 3:e gruppen bör konverteras till GPGPU, men en GPU kan inte ersätta en CPU i de två första fallen.

Sedan är verkligheten mer komplicerad än så. Finns en gradvis skala där man har kombinationer av 1/2 <-> 3, ju oftare man växlar mellan 1/2 samt 3 ju mindre blir boosten av GPGPU p.g.a. overhead. Lösningen då är att i stället använda SIMD (SSE/AVX på x86).

SIMD passar också bättre i fall där det finns viss varians i vilka instruktioner som ska appliceras på varje indata-cell. "Bredden" för SIMD är typisk 2-8 medan den är 32 för Nvidia och 64 för AMD, SIMD hanterar därför obalans mellan vilka operationer som ska appliceras långt mer effekt än GPU.

Det har varit rätt skralt med GPGPU-optimerade program på skrivbordet fram till rätt nyligen, men nu börjar det leta sig in i de program där GPGPU har stor potential (t.ex. Adobes programvaror).

TL;DR
För dataparallella problem krossar GPGPU en CPU, för övriga problemtyper är CPU överlägsen. Framöver lär GPGPU bli vanligare men det kan inte ersätta CPU.

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

Ok tack för era tankar! Detta var något som jag blev nyfiken på när man började med detta,
tänker främst när nvidia släppte Fermi och satte ett L2-cache block mitt i hela smeten för att säga "vi kan också, Intel". Sedan har de bara varit framme och nosat, men om jag förstått det rätt från er så är det alltså långt kvar.

Intressant område. Jag kan CUDA (läs: arbetat/kodat en del men är absolut ingen expert, snarare steget efter nybörjare) och skulle vilja testa på några småprojekt som har med GPGPU att göra. Ska kika lite på nätet och se om jag kan hitta något underhållande.

Den som lever får se helt enkelt

Permalänk
Medlem

Vad jag tror han menade är att som redan är sagt, att dom vill ta bort uträkningar från CPUn och lägga allt sånt emot GPUn som kan hantera det bättre, vilket eventuellt kan leda till att CPU tillverkare kan fokusera på det som CPU:er är bra på och GPU tillverkare kan ta över den delen som GPU:er gör bättre. Och på så vis "tar över CPU:ns jobb".

Visa signatur

C#/MonoGame Fanatiker.
Pixel Artist & Game Developer