CLRadeonExtender (GCN assembler, Radeon assembler) mirror - CLRadeonExtender: Add new GPU architecture GFX1011 (Navi with DLOps). · CLRX/CLRX-mirror@a4c9fdf
github.com
No niin, nyt alkaa palaset loksahtelemaan kohdalleen Navi 12:nkin kanssa. Se on siis Navi "1.5" samassa mielessä missä Vega 20 oli "Vega 1.5".
Eroa Navi 10:iin on tuki DeepLearning-käskyille ja HBM2-muisti (2048-bit väylä eli 2 pinoa).
(huomionarvoista on myös että tuolla(kin) on edelleen käytössä GCN-tunniste Naveillekin (GCN1.5 eli "GCN6" ja nyt DL-versiossa GCN1.5.1 eli "GCN6.1" vrt GCN1.4/1.4.1 GCN5/5.1)
Tulipa vilkaistua nyt AMDn käskykantamanuaaleja.
RDNA1ssä ei tosiaankaan ollut noita Vega 20n uusia pienemmän tarkkuuden(fp16 x fp16->fp32, int8 x int8 -> int16, int4 x int4-> int8) konvoluutiokäskyjä
V_DOT2_F32_F16, V_DOT2_I32_I16, V_DOT2_U32_U16, V_DOT4_I32_I8, V_DOT4_U32_U8, V_DOT8_I32_I4 ja V_DOT8_U32_U4 - jotka tuli Vega 20een (Radeon VII/Instinct MI50).
Mielenkiintoista on, että tuleeko Navi 12een tasan nuo samat käskyt, vai tuleeko jotain muutoksia.
Noita tutkiessa tuli eteen jännä yksityiskohta:
GCNssä kaikki käskyt on joko 32 tai 64 bittiä pitkiä. Aiemmin 32-bittisillä floateilla operoivasta FMA-käskystä oli vain 64-bittiä pitkä versio, jossa kohde pystyi olemaan eri kuin mikään lähteistä.
Vega 20ssä tuli uutena myös 32 bittiä pitkä 32-bittisten lukujen FMA-käsky V_FMAC_F32 , jossa summattava operandi ja kohde ovat samoja. Sopii hyvin pistetuloon/konvoluutioon, kun konvoluutiota lasketaan paloittain ja aiempaan osasummaa lisätään uusien kertoimien osa.
Eli 32-bittisillä liukuluvuilla konvoluutiota laskettaessa Vega 20 ei ole teoreettiselta nopeudeltaan sen nopeampi kuin AMDn aiemmat piirit, mutta koodi joka laskennan tekee, on pienempi.
Tämä 32 bittiä pitkä V_MAC_F32-käsky sen sijaan löytyy jo RDNA1:stä. Tajuttu varmaan yleishyödylliseksi pienentämään shader-koodia ihan yleisesti.