Ongelma

Yritän laskea suorittimen / grafiikkasuorittimen suorituskykyä, mutta en ole varma, teenkö sen oikein .

Sanotaan, että meillä on:

  • Kaby Lake -prosessori (kello: 2,8 GHz, ytimet: 4, säikeet: 8)
  • Pascal-GPU (kello: 1,3 GHz, ytimet: 768).

Tämä Wiki-sivu sanoo, että Kaby Lake -prosessorit laskevat 32 FLOPS (yhden tarkkuuden FP32) ja Pascal-kortit laskevat 2 FLOPSia (yksi tarkkuus FP32), mikä tarkoittaa, että voimme laskea heidän FLOPS-suorituksensa seuraavilla kaavoilla:

CPU:

TOTAL_FLOPS = 2.8 GHz * 4 cores * 32 FLOPS = 358 GFLOPS 

GPU:

TOTAL_FLOPS = 1.3 GHz * 768 cores * 2 FLOPS = 1996 GFLOPS 

Kysymykset

  1. [SOLVED] Suurin osa näkemistäni oppaista (kuten tämä) käyttävät fyysisiä ytimiä kaavassa. En ymmärrä, miksi älä käytä ketjuja (loogisia ytimiä) sen sijaan? Eikö ketjuja ole luotu nimenomaan kaksinkertaistamaan liukulaskennan suorituskykyä? Miksi jätämme ne sitten huomioimatta?

  2. [SOLVED] Teenkö sen ollenkaan oikein? En löytänyt yhtä luotettavaa lähdettä FLOPS: n laskemiseen, kaikki Internetissä olevat tiedot ovat ristiriitaisia. I7 7700HQ Kaby Lake -prosessorille löysin FLOPS-arvot niin alhaisiksi kuin 29 GFLOPS , vaikka yllä oleva kaava antaa meille 358 GFLOPS-arvoa. En tiedä mihin uskoa.

  3. Onko Node.js / Python / C ++: ssa cross-platform (Win, Mac, Linux) -kirjasto, joka vain palauttaa kaikki GPU-tilastot, kuten ytimen varjostus, kello, käytettävissä olevat komentojoukot (tai FP32, FP64 FLOPS-arvot), jotta voisin laskea teoreettisen enimmäissuorituskyvyn itse? On melko naurettavaa, että emme voi saada FLOPS-tilastoja suoraan suorittimelta / GPU: lta täytyy ladata ja jäsentää wiki-sivu saadaksesi arvon. Jopa C ++: ta käytettäessä näyttää siltä (en todellakaan tiedä), että meidän on ladattava 2 Gt: n CUDA-työkalupakki vain saadaksesi pääsyn Nvidia GPU: n perustietoihin, kuten ytimien määrään – mikä tekisi sovelluksen tekemisen käytännössä mahdottomaksi. saatavilla muille, koska kukaan ei lataa 2 Gt: n sovellusta.

Kommentit

  • Osittaisena vastauksena usko, että soitat ” säikeitä ” on temppu, jonka avulla ydin voi isännöidä kaksi ketjua kerrallaan (hyper En ole varma täysin yksityiskohdista siitä, miten Intel teki tämän, mutta mielestäni se liittyy putkilinjojen reikien täyttämiseen ja vastaaviin. Tätä ei periaatteessa tapahdu. Jos lasket jotain raskasta, mutta työpöydän käyttöjärjestelmää varten on tällä tavoin järkevää.Jos olet kiinnostunut todellisesta laskentatehosta, vaikka tämä ei yleensä ole
  • @KyleMandli kiitos selvennyksestä, luulen että sillä on järkeä
  • Yksi osa ehdotettua laskentaa on taajuus. Oletan, että tiedät, että nykyaikaisella laitteistolla ei ole -taajuutta. Toimintataajuus vaihtelee lämpötilan ja virrankulutuksen (esim. Useimmat grafiikkasuorittimet) tai käskyjoukkojen käytön ja käytön (esim. Useimmat x86-suorittimet) ja mahdollisesti kaikkien mainittujen tekijöiden perusteella.
  • Sinä ’ ll on korvattava MHz kaikkialla GHz: llä.
  • Siellä ’ ei ole yksittäisiä ” todellinen ” suorituskyky. Esimerkiksi kun kerrotaan suuria matriiseja Volta-grafiikkasuorittimilla, ” todellinen suorituskyky ” on lähellä teoreettista, 90 huippua sekunnissa. Samalla kun harjoittelet resnet-50, se ’ on enemmän kuin 20 toppiä sekunnissa – medium.com/@yaroslavvb/…

vastaus

Voit laskea tämän GFLOP-hinnat tavalla, mutta nykyisen laitteiston luvut ovat melko merkityksettömiä:

  • Liukulukuoperaatiot edellyttävät vaihtelevaa määrää kellojaksoja. Lisäys on yleensä halvempi kuin kertolasku, mutta kukin yleensä kestää enemmän kuin yhden kellosyklin 2,8 miljardista syklistä.

  • Kun sinulla on hyperlanka, sinulla on kaksi säiettä käynnissä yhdessä ytimessä, mutta ytimessä on silti vain yksi liukuluku-lisäysyksikkö, joten nämä kaksi säiettä eivät voi suorittaa liukuluku-lisäyksiä samanaikaisesti.

  • Liukulukuoperaatiot ovat energianälkäisiä ja energia muuttuu lämmöksi. Kun teet paljon FLOP-tiedostoja, prosessorit ylikuumenevat ja laskevat kellotaajuuksiaan.

  • Jos käytät oikeita ohjeita, voit tehdä liukulukujen kertolaskuoperaatioita (FMA), jotka tekevät kertolaskuista ja lisäyksistä nopeammat kuin näiden toimintojen tekeminen erikseen.

  • Samoin SIMD-ohjeiden avulla ydin voi tehdä saman toiminnon useilla tiedoilla samanaikaisesti – sanoa, lisätä neljä paria liukuluku numeroita yhdessä, jolloin saadaan 4 FLOP-arvoa samaan aikaan. Mutta tämä vaatii ongelman, jossa algoritmi todella vaatii tämän tapahtuvan, sen sijaan että käytettäisiin ensimmäisen lisäyksen tuloksia toisessa. Tämän seurauksena SIMD-ohjeet vaikuttavat vain nopeuteen, jolla jotkut algoritmit voidaan suorittaa, mutta eivät toisiin.

  • Tärkeintä on, että suoritat yleensä haluat tehdä toimintoja muistista tuleville tiedoille, mutta tietojen siirtäminen päämuistista prosessoriin vie paljon kauemmin kuin mitä tahansa datan toimintoja – kuten kerroin 100 pidempi (suuruusluokka). Joten et yleensä näe edes pientä osaa prosessorien teoreettisesta liukulukutehosta todellisissa sovelluksissa: yleensä huomattavasti alle 10% teoreettisesta huipputehosta.

Toisin sanoen huipputehon laskemisesta on tullut eräänlainen merkityksetön liiketoiminta: Sillä ei ole mitään tekemistä prosessorin todellisen suorituskyvyn kanssa.

Kommentit

  • Voit myös keskustella siitä, kuinka SIMD-liukulukuyksiköt voivat lisätä teoreettista huippusuoritusta.
  • Kiitos panoksestasi, kaverit, ymmärrän nuo kohdat ja ymmärrän kuinka edistyneet ohjeet sarjat vaikuttavat liukulukuihin. Luulen, että ’ pysyn vain teoreettisen maksimin kanssa toistaiseksi. Toivon, että olisi olemassa ainakin kaava, joka arvioi FLOPS: n todellisen suorituskyvyn heti CPU laskee tietyn toiminnon.
  • @AlekseyHoffman Ei ole kaavaa, vain mittauksia. div id = ”fd68a555a6”>

miksi TOP 500 -luettelo perustuu todellisiin suorituskyvyn mittauksiin, ei teoreettiseen huippusuoritukseen.

  • @BrianBorchers Kyllä, hyvä idea.
  • Vastaus

    Voi lukea venäjäksi – kuinka FLOPS lasketaan .

    GHz ei näytä FLOPSia. Yksi prosessori, jolla on sama GHz, voi olla paljon nopeampi kuin toinen, jolla on sama GHz.

    P.S. gpu-s ” rx 590 ” ja hyvin vanhat ” r7 250x ” on lähes sama GHz. Mutta … tämä ei edes ole oikein verrata heidän suorituskykyään)

    Kommentit

    • Hei tervetuloa scicompiin! Stackexchangessa on parempi, jos viesti on itsenäinen (katso täällä ). Yritä muokata vastausta artikkelin perustietojen parantamiseksi, jotta viesti paranisi.

    Vastaa

    Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *