Hirdetés

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

  • wad

    tag

    válasz vanhalen #27 üzenetére

    Eddig, ha valaki CPU-n és GPU-n egyaránt futtatható szoftvert akart produkálni, akkor ugyanazt az algoritmus két fajta implementációban (OpenCL és pl. C++) kellett megírnia és fenntartania. (Ez nem feltétlenül járt a kód megkétszereződésével, köszönhetően a nyelvek szintaktikai közel azonosságának, de mindenképpen többletmunkát és bonyolultabb kódot eredményezett.) A CPU-s drivernek köszönhetően egy az egyben ugyanaz a kód vált futtathatóvá mindkét platformon.

    Alapvetően két oka lehet annak, hogy miért akar valaki GPU helyett, vagy mellett CPU-n futtatni:
    1. Szélesebb körű kompatibilitás: azokon a gépeken is eldöcög a szoftver, amelyekben nincs OpenCL-t támogató GPU.
    2. Nem minden algoritmust lehet optimálisan párhuzamosítani GPU architektúrára. Bizonyos esetekben az ideális 50-100-szoros sebességbeli különbség helyett nagyságrendileg "csak" a CPU számítási teljesíményét kapjuk vissza. Ilyenkor számottevő gyorsulást eredményezhet, ha az algoritmusunkat a GPU mellett párhuzamosan a CPU-n is futtatjuk.

    Kiegészítés: Még nem olvastam erre vonatkozó tesztet, és magam sem próbáltam, de az OpenCL-es kód CPU-n elvileg lassabb futást eredményez, mintha ugyanazon algoritmus C nyelvű implementációját hagyományos módon (pl. OpenMP) párhuzamosítottuk volna. Valamennyi sebességet tehát áldozni kell az univerzális kódért.

    [ Szerkesztve ]

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