Keresés

Hirdetés

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

  • huskydog17

    addikt

    LOGOUT blog

    válasz DRB #41 üzenetére

    Nekem is hasonló a gondolkodásmódom, bár Abu azt írta, hogy ez a HSA cucc a hardver és API közé ékelődik be. Tehát így lesz egy plusz lépcsőfok, ami nekem csak egy újabb lassítást jelent, hiszen még egy réteget beiktatnak.

    Amúgy nekem HSA BOLT függvénytárról rögtön az azonos nevű film jutott az eszembe. :D

    Gameplay csatornám: https://www.youtube.com/channel/UCG_2-vD7BIJf56R14CU4iuQ

  • P.H.

    senior tag

    válasz DRB #41 üzenetére

    A HSA a leírt két definíciód között van (ahogy az említett nVidia PTX is pl.):

    - API sok helyen és sok szinten van, előre megírt/megvalósított eljárások összessége, pl. legalapvetőbben OS szinten is így megvalósítható az, hogy egy-egy alkalmazás memóriát foglaljon, írjon/olvasson lemezre, mutasson valamit a képernyőn úgy, hogy ne kelljen a legalacsonyabb szinten megvalósítani külön-külön minden programozónak ezeket (és/vagy az egymás mellett futó programok ne zavarják egymást). Ilyen szempontból a BIOS egy része is API ugyanúgy, ahogy az OpenGL is az, de más-más szinten és célra.

    - az utasításkészleteket közvetlenül megértik a CPU-k, GPU-k, vezérlők (pl. egy-egy SmartCard-szabványnak is eltérő utasításkészlete van, amit megért); ritkábban a nekik megfelelő gépi kóddal, gyakrabban az azt leképező assembly nyelvvel közvetlenül használhatóak (ez például az R600-ra épülő Radeon GPU utasításkészletének leírása). Így bármi megírható rájuk, de az csak azon az architektúrán fut egyáltalán vagy hatékonyan.

    A HSA, a PTX és a többi virtuális ISA a kettő között van: a hardware nem érti meg közvetlenül, ezért fordítani kell külön ARM-ra, x64-re, nVidia-ra, bármire, ami támogatja, de assembly nyelven leírható elemi utasításokból épül fel (mint pl. a PTX), magasabb szintű programozási struktúrák nélkül (nincs for ciklus vagy while se). Egy-egy ilyen vitruális utasítás gépi megvalósítása lehet direkten leképezhető egy-egy gépi utasításra (erre törekszenek a HSA-nál a belépő támogatók, a PTX-nél az nV), vagy sokra (ez a teljesítmény rovására megy, de korábbi hardware-ken is futnak az újabb verzióra épülő programok; gyenge példaként mintha egy AVX-re fordított program is futna egy P3-mon, csak lassan - ezért jó hasonlat a Java).

    Kb. ilyen a viszony a tradicionális API-k és a virtuális ISA-k között, amit ez a dokumentáció mutat , címe "Using inline PTX assembly in CUDA". A PTX-re lefordított bytekódot az nVidia semelyik GPU-ja nem érti meg közvetlenül (a CUDA-programozási környezetek erre fordítanak), a driver-ben van a végső fordító. Viszont egyrészt egyszer, a program az indításakor fordul le PTX-ből arra a gépben levő GPU által megértett gépi kódra, futás közben nem lassít a fordítás ˇ(lásd Java), másrészt erre a szintre lehet más komolyen optimalizálni (mivel a legtöbb vISA utasításnak közvetlenül egy-egy gépi utasítás felel meg; amelynek most nem, annak a következő generációs hardware-ben már meg fog).

    [ Szerkesztve ]

    Arguing on the Internet is like running in the Special Olympics. Even if you win, you are still ... ˙˙˙ Real Eyes Realize Real Lies ˙˙˙

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