Keresés

Hirdetés

Új hozzászólás Aktív témák

  • szabi80sz

    tag

    válasz mallee #14 üzenetére

    Pontosan melyik részéről adjak linket?
    Tehát a lényeg PCI-E 3.0 előtt, pl. Cuda esetében az első lépések:
    1. megfelelő mennyiségű rendszermemóriát lefoglalni az adatoknak (amiken a párhuzamos műveleteket végre kell hajtani).
    2. ezt a területet feltölteni adatokkal.
    3. videomemóriát lefoglalni a 2-es pontban megadott adatoknak (ezt lehet párhuzamosan is végrehajtani az 1 és 2 lépésekkel)
    4. átmásolni a rendszermemóriából az adatokat a videomemóriába.
    Ezt gyorsítaná, ha kihagynák a lassú rendszermemóriát és a felesleges másolást.
    Ha vége van a számításoknak, akkor attól függően, hogy a keletkezett adatokat hol dolgozzuk fel még jöhet egy videomemóriából a rendszermemóriába történő másolás (régi vagy új helyre, de szállal ezt -a lefoglalást új hely esetén- is lehet gyorsítani). Majd fel kell szabadítani a lefoglalt video- és rendszermemóriát. Ez mind a végén: sok idő (főleg a lassú rendszermemória műveletek).
    Saját méréseken alapszik az általam leírt dolog, de ha érdekel: itt van pár részlet az induláshoz:
    http://supercomputingblog.com/cuda/cuda-tutorial-1-getting-started/
    (saját mérést ajánlok, ahol az első 4 lépést és az utolsó másolás/felszabadítást külön méred a konkrét számítás(ok)tól az eredmény meglepő lesz -a számítások során sok lebegőpontos műveletet ajánlok- ). A Cuda sdk-ban (GPU Computing SDK) is van ilyen mérő program, ez innen szedhető le (nem emlékszem a nevére, de végig kell próbálgatni) :
    http://developer.nvidia.com/cuda-toolkit-40 .
    Régebben mértem: ezért pontosabban nem tudok segíteni, mivel most egy Firepro-t használok és OpenCl-t, ezen nem foglalkoztam mérésekkel (korábban elég meggyőző volt a Cuda-s és a rendszermemóriám nem gyorsult sokat, a vid.kártya számítási teljesítménye igen). Pár példa nálam (néhány éves mérések) : Művelet: sin (nem csak ezt néztem: mást is, de kb. hasonló eredmények jöttek ki, ezeket az adatokat nem jegyeztem fel). 512-es blokk méret 33553920 db float adat (tömbben). Mértékegység: ms.
    Athlon 64 X2 (dual chanel mem ddr2 800Mhz) + Geforce 9800Gt, 16x pci-e 1.1 :
    Lefoglalás: 181, Felszabadítás+visszamásolás: 91, számítás: 67.3 a processzor szálak nélkül: 3815
    Intel Atom 330 + Geforce 9800Gt, 16x pci-e 2.0 :
    Lefoglalás: 233, Felszabadítás+visszamásolás: 192, számítás: 67.1 a processzor szálak nélkül: 8894
    (Tehát: Lefoglalás+felszab.+visszam. Athlon esetnén: 272 ms, míg maga a számítás 67.3 ms. Bonyolultabb számítások esetén ez a 67.3 ms többszörösére is nőhet, de még mindig túl nagy a "felesleges" idő a számításokhoz képest, aminek nagy része eltűnne PCIE3.0 esetén. A feldolgozandó adat mennyiségének növekedése a lefoglalási- és másolási időket nagy mértékben tovább növeli. A rendszermemóriák sebessége: kb. 2szeresére nőtt a mérésem óta, míg a hasonló kategóriájú Geforce általános számítási sebessége kb. 4-5szörösére -amd pedig hasonló kategóriában még gyorsabb-, tehát látható, hogy a fenti "felesleges" műveletek egyre nagyobb nyűgöt jelentenek, amire a Pcie3.0 megoldás lehetett volna).

    [ Szerkesztve ]

Új hozzászólás Aktív témák