Nvidia uppges omdefiniera antalet CUDA-kärnor i Geforce RTX 3000

Det obscena antalet CUDA-kärnor i Geforce RTX 3000-serien kan förklaras av att Nvidia till synes ändrar hur antalet kärnor räknas.

Under Nvidias stora Geforce-evenemang avtäcktes Geforce RTX 3000-serien och de prestandavinster bolaget menar att Ampere-arkitekturen medför. Bolaget nämnde inte konkreta specifikationer under själva videoströmmen, men när detaljer publicerades på seriens produktsida tappade många hakan över antalet angivna CUDA-kärnor, inklusive SweClockers-redaktörer.

Ampere är här – Geforce RTX 3080 dubblerar prestandan hos RTX 2080

I den nya uppställningen bestyckas Geforce RTX 3090 enligt Nvidias uppgifter smått galna 10 496 CUDA-kärnor, vilket tar steget ned till fortfarande rejäla 8 704 och 5 888 stycken för RTX 3080 respektive RTX 3070. Ställt mot föregående generation representerar det ett hutlöst skutt då Geforce RTX 2080 Ti, RTX 2080 och RTX 2070 besitter 4 352, 2 944 och 2 304 CUDA-kärnor. Orsaken till det stora steget kan vara att Nvidia inte räknar CUDA-kapaciteten likadant för RTX 3000-serien.

Officiella uppgifter från Nvidia själva saknas, men ett flertal analyser pekar på att kapaciteten i grafikkortens beräkningsenheter (SM) inte har paritet med sina motsvarigheter i Turing-arkitekturen. Turing-kretsen TU102 är bestyckad med två flyttalsenheter för 64-bitarsberäkningar (FP64) per beräkningsenhet (SM), vilket ger totalt 144 FP64-enheter för TU102. Under presentationen av RTX 3000-korten antyder Nvidia att SM-enheterna och deras CUDA-resurser jobbar på ett annorlunda sätt än tidigare.

AmpereSM.jpg

En beräkningsenhet (SM) i Ampere för datacenter innehåller FP64-enheter, vilka ska vara ersatta av FP32 i Ampere för Geforce. SM-upplägget i övrigt kan potentiellt vara detsamma.

SM-enheterna i Ampere kan utföra både dubbla flyttalsberäkningar (FP+FP) eller flyttal och integerberäkningar (FP+INT) per klockcykel, istället för endast FP+INT som är fallet i Turing. En spekulativ förklaring till detta är att Nvidia har dubblerat antalet FP32-enheter i varje SM, och helt enkelt ersatt FP64-enheterna med dessa. Då de sistnämnda är mer komplexa än sin FP32-motsvarighet frigörs utrymme till en stor ökning av FP32-enheter, och detta kan vara förklaringen till det stora antalet angivna CUDA-kärnor.

I forumet delar ständige teknikvirtuosen @Yoshman med sig av en karaktärstypiskt insiktsfull analys av hur det nya upplägget i RTX 3000-familjen kan påverka prestanda, och prestanda i spel specifikt:

En av nyheterna i Turing var ju att kunna köra FP+INT samtidigt samma cykel. Just som GN spekulerar om är det väldigt sannolikt att Ampere endera kan köra FP+FP (så dubbla FP32 prestandan) eller FP+INT (identiskt med Turing, vilket halverar FP32 kapaciteten till att bli samma som Turing räknat per SM och MHz) samma cykel.

Och är också övertygad om att detta är ett väldigt bra designbeslut då det man gör på grafikkort ytterst sällan har exakt 1:1 fördelning mellan FP32+INT (kan vara fallet i vissa GPGPU fall, men är inte optimalt för spelprestanda), vilket i praktiken betyder att Turing har för stor INT kapacitet om man tittar på just spel-fallet.

Genom att möjliggöra FP+FP eller FP+INT är det nu möjligt att helt dynamiskt skifta mellan 100 % FP32 + 0 % INT till 50 % FP32 + 50 % INT beroende på vad som krävs för tillfället. Moderna spel verkar ofta ligga på 20 - 40 kanske 50 % INT andel, vilket betyder att ställd mot Turing (räknat per CUDA-kärna) blir en faktiskt effektivitet på Ampere någonstans mellan x0,5 (vid 50 % INT) till x1,0 (vid 0 % INT).

En SM består dock av mer än bara enheter för integer- och flyttalsberäkningar. Upplägget för övriga SM-komponenter som registerenhet, schemaläggare, load/store och funktionsenheter (SFU) förefaller vara desamma i Ampere som i Turing, även om det exakta upplägget inte är känt i skrivande stund. Om upplägget är detsamma innebär det dock inte att 10 496 CUDA-kärnor i Geforce RTX 3090 måste vara en "förskönad" definition från Nvidias sida, åtminstone inte helt.

En CUDA-kärna är i grund och botten en relativt enkel räkneenhet (ALU) som ska utföra adderingsberäkningar (Fused Multiply-Add, FMA). Om kapaciteten för FP64-beräkningar offrats till förmån för dubblerad FP32-kapacitet innebär det fortfarande att kapaciteten har ökat. Vad det påverkar är i vilken grad en SM och dess CUDA-kärnor kan utnyttjas och i vilka situationer de kan utnyttjas fullt ut. Om övriga komponenter utöver CUDA-kärnor inte dubblerats innebär det också att effektiviteten i Amperes SM-enheter inte motsvarar Turing-varianterna fullt ut.

Flera partnertillverkare anger antalet CUDA-kärnor i Geforce RTX 3090 till 5 248, alltså hälften av vad Nvidia anger. Det är oklart om det ska ses som att de anger vad de ser som det "riktiga" antalet CUDA-kärnor, eller om det helt enkelt är en kvarstod från när produktinformation skickats till butiker inför Geforce-eventet. Produktlanseringar inbegriper relativt långa ledtider där äldre uppgifter inte alltid behöver matcha det som presenteras i slutändan.

Hur stora skillnaderna mellan Ampere och Turing är sett till SM-enheter och CUDA-kärnor återstår att se när Nvidia presenterar en djupgående genomgång av Ampere-arkitekturen för konsumenter. Då går det också att göra ett mer konkret utlåtande om Nvidias påstående om CUDA-kapacitet i Geforce RTX 3000 är förskönad eller ej, och hur det kan tänkas påverka prestanda i praktiska scenarion.

Läs mer om Nvidia "Ampere":

I butiken: SweClockers Hardware Dreams

Surfar du SweClockers om nätterna? Drömmer du om nästa datorbygge? Denna midnattsblå t-shirt är specialdesignad för tvättäkta entusiaster som älskar datorer och hårdvara.

Köp här!