Keresés

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

  • Abu85

    HÁZIGAZDA

    válasz #Morcosmedve #20722 üzenetére

    Ez bonyolultabb. Nézd úgy, hogy a GDS egy nagyon gyorsan elérhető memória a lapkán belül, gyorsabb bármelyik gyorsítótárnál és a Global Ordered Append csoportból a GlobalOrderedCountIncrement függvénnyel megoldható a wave-ek sorrendben történő futtatása. Ehhez azonban az kell, hogy a multiprocesszorok ne futtassanak egy wave-nél többet egy feldolgozótömbön. Az AMD azért implementálja a hardverben így, mert a sorrend egy belső memória alapján lesz kialakítva, ugyanis mindig lesz egy look-up, hogy melyik wave jön. Ha minden look-up kimegy a memóriába, akkor az akármilyen memória mellett eléggé megöli a sebességet. Emellett járulékos veszteség az is, hogy a mai SIMT architektúrák úgy fedik el a memória késleltetését, hogy több wave-et futtatnak, de most a sorrendbe rendezés miatt csak egyet futtathat minden feldolgozótömb, vagyis itt is buknak egy csomót. Erre vezette be egyébként a GCN4 az utasítás-előbetöltést, hogy a szükséges adat már akkor ott legyen valamelyik a multiprocesszor gyorsítótárában, amikor a kérés megtörténik. Emiatt nem kell a memóriáig menni, amivel visszanyernek egy csomót az elméletben elbukott késleltetésből.

    A fogyasztás a mérnökök számára nem egy célparaméter. Amit nekik észben kell tartani az a hatékonyság. Ilyen formában nyilván egy GDS+utasítás-előbetöltés a leghatékonyabb, mert gyakorlatilag GlobalOrderedCountIncrement függvény mellett is a lehető legkisebb lesz a késleltetés. Például van egy programod, ami fut 200 fps-sel, de szeretnéd a wave-eket sorrendben futtatni, akkor a GlobalOrderedCountIncrement függvény ezt GCN1/2/3-on megteszi úgy 150 fps mellett, GCN4-en megteszi 190 fps-sel, míg ha a memóriához kell kimenni, akkor ugyanez 30 fps-re csökkenti a teljesítményt. Így már egészen átalakul a hatékonysági sorrend. Ilyen formában egyébként az adott effektet már érdemes a GlobalOrderedCountIncrement függvény nem hatékonyan kezelő hardvereken tiltani, de nyilván a szabványba érdemes belerakni, mert a Microsoft is tudja, hogy a többi cég is fejlődik, tehát egy-két generáció és támogatni fogják. Valószínű egyébként, hogy több shader modell 6.0-s wave ops intrinsics függvényt maga a Microsoft akar, mert megy a vita arról, hogy a mostani specifikáció mennyire jó-e az Intelnek és az NV-nek. A wave scan és prefix kb. semennyire. Az AMD-nek ezekre direkt utasítása van, míg a többieknek semmi. A WaveBallot sem valami előnyös 64 bites maszkolással. A GCN-re ez illik, míg a többire nem. De áthidalható gondokról van szó. Az igazi probléma a Global Ordered Append csoport lesz.

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