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

  • Fiery

    veterán

    válasz Petykemano #227 üzenetére

    Alapveto kulonbseg van a x86/x64 vonal es a GPGPU vonal kozott. x86-on ha egyszer, veres veritekkel optimalizalod a kododat -- adott esetben assembly betetekkel -- SSE/AVX1/AVX2/AVX-512-re, onnantol minden, ezeket az utasitaskeszlet kiegesziteseket tamogato processzoron hibatlanul fog futni a kodod, modositas es bibelodes nelkul. A jelenlegi es jovobeni ilyen processzorokkal sem lesz, nem lehet gond. A kodod, az elkeszitett szoftvered ezzel "future proof".

    GPGPU vonalon viszont 2 lehetoseged van. Vagy CUDA, es az NVCC-vel binarist forditasz adott compute capability-t celozva. Ez tok jo, csak ugye ha jon egy uj GPU generacio (pl. Pascal), akkor ahhoz forditanod kell (marmint celszeru megtenni) uj binarist, tehat nem tudsz altalanos ervenyu binaris kodot kesziteni, ami minden jovobeni nVIDIA GPU-n is egyforman remekul fog futni. Vagy CUDA+OpenCL vonalon tudsz kernel source-ot szallitani a szoftvereddel, de akkor meg on-the-fly kell forditani, kiteve magad annak a problemanak, ami mar 10 eve nincs megoldva, azaz hogy a CUDA/OpenCL fordito lehet, hogy lefagy, crash-el vagy csak ugy altalaban sz*r binarist fordit az adott vason, amin epp futtatjak a szoftvered. Tehat az x86/SSE/AVX binarissal ellentetben, az on-the-fly forditott GPGPU kod futasa es az eredmeny helyessege abszolut nincs garantalva. Hasonlo, mint az orosz rulett, csak nem hal bele senki :)

    [ Szerkesztve ]

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