AMD julkaisi ensimmäisen CDNA-laskentakortin: Instinct MI100

  • Keskustelun aloittaja Keskustelun aloittaja Kaotik
  • Aloitettu Aloitettu

Kaotik

Banhammer
Ylläpidon jäsen
Liittynyt
14.10.2016
Viestejä
22 630
amd-instinct-mi100-20201116.jpg


Kaotik kirjoitti uutisen/artikkelin:
AMD on julkaissut tänään jo pitkään odotetun, Arcturus-koodinimellä tunnetun ensimmäisen erillisen laskentapiirinsä. AMD Instinct MI100 -nimellä julkaistu laskentakortti on yhtiön mukaan maailman nopein ja samalla ensimmäinen yli 10 teraFLOPSin FP64-suorituskykyyn yltävä HPC-luokan GPU.

AMD:n CDNA-arkkitehtuuriin perustuva Instinct MI100 valmistetaan TSMC:n 7 nanometrin prosessilla, mutta yhtiö ei paljastanut esimerkiksi monestako transistorista se rakentuu. CDNA-arkkitehtuuri itsessään perustuu edelleen kehitettyyn GCN-arkkitehtuurin pohjaan, mutta paljon on myös muuttunut.



MI100:ssa on käytössä 120 Compute Unit -yksikköä, jotka on jaettu neljään Compute Engine -osioon. Jokaisessa CU-yksikössä on perinteisten skalaari- ja vektoriyksiköiden rinnalla Matrix Core Engine, joka on suunniteltu kiihdyttämään matriisilaskuja. MCE-yksiköt laskevat Matrix Fused Multiply-Add- eli MFMA-tehtäviä KxN-matriiseilla INT8-, FP16-, BF16- ja FP32-tarkkuuden luvuilla. MFMA-laskujen tulos lasketaan tarpeen mukaan joko INT32- tai FP32-tarkkuudella.

MI100:n teoreettinen FP32-suorituskyky on 23,1 ja FP64-suorituskyky 11,5 TFLOPSia. FP32-matriisilaskujen teoreettinen maksiminopeus on 46,1 TFLOPSia, FP16-matriisilaskujen 184,6 TFLOPSia ja INT4- ja INT8-laskujen niin ikään 184,6 TFLOPSia. Bfloat16-tarkkuudella teoreettinen maksimisuorituskyky on 92,3 TFLOPSia.

Laskentayksiköiden tukena on 8 megatavua L2-välimuistia jaettuna 32 siivuun. L2-välimuistiin kerrotaan olevaan yhteenlaskettua kaistaa jopa 6 Tt sekunnissa. Yhteensä 4096-bittinen muistiohjain tukee sekä 4- että 8-kerroksisia HBM2-muisteja 2,4 Gt/s:n nopeudella, mikä tarkoittaa yhteensä 1,23 Tt/s:n muistikaistaa ja 32 gigatavua muistia. Laskentakortin TDP-arvo on 300 wattia.

[embed]

Instinct MI100 tukee myös toisen sukupolven Infinity Fabric -linkkiä laskentakorttien välillä ja maksimissaan neljän GPU:n naittamista samaan ryhmään sillan avulla. Kussakin GPU:ssa on kolme IF-linkkiä, joiden myötä neljän MI100-kiihdyttimen välillä on yhteensä 552 Gt/s teoreettista P2P-kaistaa. Prosessoriin kiihdyttimet ovat yhteydessä PCI Express 4.0 -väylän yli.

Yhdessä uusien laskentakorttien mukana julkaistiin uusi avoimen lähdekoodin ROCm 4.0. ROCm-pakettiin kuuluu erilaisia työkaluja kehittäjien tarpeisiin kääntäjistä rajapintoihin ja valmiisiin kirjastoihin. ROCm 4.0:n uusi avoimen lähdekoodin kääntäjä tukee sekä OpenMP 5.0- että HIP-rajapintoja.

AMD:n mukaan valmiita palvelinkonfiguraatioita Instinct MI100 -kiihdyttimillä on luvassa ainakin Delliltä, Gigabyteltä, Hewlett Packard Enterpriseltä ja Supermicrolta.

Lähde: AMD

Linkki alkuperäiseen juttuun
[/embed]
 
Noniin, nyt AMDllä on vihdoin jotain vastaavaa kuin nVidian "tensoriytimet", tosin matalan tarkkuuden kokonaislukuoperaatioiden nopeus on tällä hitaampi kuin nVidian "tensoriytimillä", tämä on selvästi optimoitu liukuluvuille.

Noista FP32-flopseista ja laskentayksikkömääristä voi päätellä, että kellotaajuus on n. 1504 MHz.

Kesti hetki tajuta, millainen tuo matriisiyksikkö todennäköisesti on blokkikooltaan:

FP16-tarkkuudella sen nopeus on 1024 flopsia kellojaksossa eli 512 fp16-tarkkuuden FMA-operaatiota kellojaksossa. Fp32-tarkkuudella taas 256 flopsia kellojaksolla eli 128 FMA-operaatiota kellojaksossa.

GCN:ssä(johon CDNA pohjaa) rekisterin koko on 2048 bittiä, 64 32-bittistä linjaa.

Eli, kiihdyttimen "natiivisyöte" lienee 8x8 FP32-matriisi, joka siis matchää GCNn rekisterin kokoon, mutta kokonaista 8x8-matriisin kertolaskua ei voi laskea kellojaksossa, vaan siihen käytetään neljä kellojaksoa, joka on sama aika kuin GCNssä muutenkin menee suurimpaan osaan laskuoperaatiosta. 8x8-matriisin FMA on 512 yksittäistä FMAta, neljän kellojakson aikana se tekee 128 FMAta/kellojakso.

FP16-tarkkuuden operaatiolla ensimmäinen inputti lienee sitten 8x16-matriisi ja toinen 16x8- jolloin tulosmatriisi on kooltaan sama 8x8, mutta matriisitulos sisälooppina olevaa pistetulos lasketaan 16 verran. Ja tämä lasketaan neljän kellojakson sijasta kahdessa kellojaksossa.

Kaksi kellojaksoa fp16-tarkkuuden kertolaskuille ja kahdeksan tulon summa fp32-tarkkuudella kuulostaa pikaisesti ajateltuna tiukalta, mutta ei todellisuudessa ole sitä, koska kaksi kellojaksoa on tässä vain throughput, ei viive; Nämä operaatiot voi liukuhihnoittaa siten että summaus tulee perässä ja koko operaation viive on usempia kellojaksoja kertolaskujen alusta summan valmistumiseen


Edit: väärin veikkasin; Tässä olikin tullut lisää uusi akkumulaattori-rekisterifilee jonne tulokset menee. jolloin tulosten ei tarvitsekaan mahtua GCNn normaaleihin vektorirekistereihin. Laskeekin epäsymmetrisemmin melkein outer product-tyyliin, säästäen enemmän inputeissa, tuottaen suurempaa outputtia.


Tuo, että bfloatit on hitaampia kuin normaali fp16 on yllättävää; Bloat16-liukulukuyksikön pitäisi kuitenkin olla kooltaan jopa inasen pienempi kuin fp16-liukulukuyksikön, koska mantissassa on vähemmän bittejä mikä pienentää sekä itse kertolaskijaa että vähentää bittejä mm. normalisoinnista. fp16-formaatissa taas eksponentissa on enemmän bittejä, mutta eksponenteille tehdään vain yhteen- ja vähennyslaskuja.

Mutta voi olla, että liittyy siihen että tässä on esim. säästetty jotta on voitu hyödyntää samoja kertolaskimia bfloateille ja fp32lle, bfloat16-moodissa vaan syötetään nollaa alimmille biteille, ja näillä lasketaan puolet bfloat16-operaatioista, ja sitten siellä on omat yksiköt toiselle puolelle. Bfloat16-ja fp32-formaateissa siis 16 ylintä bittiä on täysin samat samalle luvulle.


Vertailua nvidian tensoriytimiin:

Nvidian tensoriytimillä natiiviblokkikoko on pienempi, taitaa Ampere-sukupolvessa olla vain 512 bittiä, eli esim. FP32-tarkkuudella 4x4, eli tällä AMD:n MI100lla blokkikoko on hiukan isompi, mikä vihjaisi että tällä voi olla edellytyksiä parempaan energiatehokuuteen; Matriisiyksikkö laskee tuplasti enemmän laskutoimituksia/sille siirretty arvo kuin nVidian Ampere-sarjan tensoriytimet.
 
Viimeksi muokattu:
Tuo matriisikiihdytin myös selittää sitä, miksi tämä CDNA pohjaa GCNään eikä RDNA:an; GCNn rekisterit on isompia(2048 vs 1024 bittiä), ja mitä isompia on rekisterit, sitä isompaa blokkikokoa voidaan käyttää ja sitä parempi on hyötysuhde (laskentaoperaatiot vs siirretyt operandibitit)
 
Onko tähän liittyen mitään mainintaa joko tuo ROCm 4.0 tukee RDNA/RDNA2 arkkitehtuuria? Olisi jossain vaiheessa NVidialle vaihtoehtoa kuluttajapuolellakin. Ei löytynyt nopealla hakemisella changelogia tai muutakaan vielä tuosta.
Ei ole tietoa. Eikä ROCm 4.0 ole vielä edes saatavilla.

Phoronixin foorumilla AMD:n työntekijät ovat sanoneet (joskus syksyllä iirc) että, RDNA korttien tuki on testaus vaiheessa ja kun testaus on tehty, niin sitten ilmestyy. Samalla totesivat myös, että niiden testaus ei ole ykkös prioriteetti.

Oma arvio on, että ROCm 4.1 on varmaan milloin tuki on tulossa. Joten muutama kuukausi tässä taitaa vielä mennä...
 
Eli muutama kuukausi, että edes jokin tuki on ulkona ja sekin on sitten kakkosluokan prioriteetilla hirveetä tunkkaamista saada perushommat toimimaan. Harmi. Olisi kai tuo noin yleisesti AMD:n koneoppimispuolelle parempaa imagoa ja mindsharea kun laajemminkin ihmiset voisivat heidän korttejaan käyttää. NVidialla pitää jatkaa..
Saisivat nyt ensin kunnolla kilpailukykyistä rautaa pihalle tuolla saralla. Lienee olemattoman pieni porukka, jota kiinnostaisi lisäsäätö ja huonompi suorituskyky ihan vain jotta pääsee käyttämään AMD:n piirejä.
 
Saisivat nyt ensin kunnolla kilpailukykyistä rautaa pihalle tuolla saralla. Lienee olemattoman pieni porukka, jota kiinnostaisi lisäsäätö ja huonompi suorituskyky ihan vain jotta pääsee käyttämään AMD:n piirejä.

Tämä uusi piiri on nimenomaan sitä kilpailukykyistä rautaa.

Aiemmin AMDltä puuttui raudasta oikeat matriisikiihdyttimet, kun nvidialla oli "tensoriytimensä", ja nVidian nopeus neuroverkoilla oli ennen paljon nopeampi. Nyt näissä on oikeat matriiiskiihdyttimet, ja vielä isommalla matriisikoolla kuin nVidialla.
 
Viimeksi muokattu:
Tuo taitaa olla pääosin koneoppimis puolelle ja mahdollistaa enemmän muistia vaativien mallien koulutuksen. CDNA näyttäisi olevan vahvoilla HPC puolella tuon hyvän FP64 suorituskyvyn takia, minkä vuoksi se näyttää olevan suosikki super koneisiin.

Ihan suoria kilpailijoita nämä on keskenään. fp16-matriisien kertolaskuja mihin tämä on optimoitu tarvii NIMENOMAAN koneoppimisjutuissa, HPC-puolella taas vaaditaan suurempia laskentatarkkuuksia.

ja joo, Ampere A100ssa on silti n. 1.5x enemmän fp16-vääntöä tensoriyksiköillä, mutta se lienee myös selvästi isompi ja kalliimpi piiri.
 

Olikin kuitenkin selvästi erilainen kuitenkin kuin mitä oletin, ei laskekaan 8x8 (fp32) - tai 16x8 ja 8x16 (fp16) -matriisien kertolaskua kuten luulin, vaan siellä onkin erikseen akkumulaattorirekisterit tulokselle ja yhteenlaskuinputille, ja laskee selvästi epäsymmetrisemin, enemmän outer product-tyyliin, mutta ei kuitenkaan ole ihan puhdas outer product koska siellä on myös pistetuloa mukana.

Eli fp32-tarkkuudella matriisin koko maksimissaan 32x2 joka kerrotaan siis 2x32-matriisilla, eli fp32-tarkkuudella laskee siis yhdellä käskyllä maksimissaan 1024 2-kokoista pistetuloa (ylimääräisellä yhteenlasku-inputilla) (4096 flops / käsky)

bf16-tarkkuudella matriisien koko on sitten maksimissaan 32x4, kerrotaan 4x32-matriisilla, eli 1024 4-kokoista pistetuloa (ylimääräisellä yhteenlasku-inputilla) (8192 flops / käsky)

fp16-tarkkuudella matriisien koko on maksimissaan 32x8 joka kerrotaan sitten 8x32-matriisilla, eli fp16-tarkkuudella laskee siis yhdellä käskyllä maksimissaan 1024 8-kokoista pistetuloa (ylimääräisellä yhteenlasku-inputilla) (16384 flops / käsky)


Ja uusi käsky voidaan matriisiyksiköllä aloittaa 16 kellojakson välein.
 

Statistiikka

Viestiketjuista
261 761
Viestejä
4 546 142
Jäsenet
74 843
Uusin jäsen
Demonvr4

Hinta.fi

Back
Ylös Bottom