Hirdetés
- Sub-ZeRo: Euro Truck Simulator 2 & American Truck Simulator 1 (esetleg 2 majd, ha lesz) :)
- eBay-es kütyük kis pénzért
- GoodSpeed: Márkaváltás sok-sok év után
- bambano: Bambanő háza tája
- Luck Dragon: Asszociációs játék. :)
- sziku69: Fűzzük össze a szavakat :)
- Autódiagnosztika: a gyakorlatban
- sziku69: Szólánc.
- Mr Dini: Mindent a StreamSharkról!
- Magga: PLEX: multimédia az egész lakásban
Új hozzászólás Aktív témák
-
joysefke
veterán
válasz
Cathulhu
#2620
üzenetére
Nem értem hogy egyáltalán min vitatkozunk. Azt sem értem, hogy mi a problémád az unrollingra írt két mondatommal.
Ha jobban tudod, hogy mi az unrolling, akkor kérlek írd le, hogy hol a probléma a kijelentésemmel és ne wikipediát idézz, mert én akkor meg a Mestert idézem: https://www.agner.org/optimize/optimizing_cpp.pdf (c.h 12.3)
Tehát még egyszer: A loop unrolling sok minden optimalizációra (lehet) jó, ezek közül az egyik, hogy lehetőséget ad(hat) automatikus vektorizálásra, mivel több (2-4-8-16 attól függően hogy mennyi adatelem fér egy vektorba) skalár adaton végzett ciklustörzset egyesít egy nagyobb ciklustörzzsé, ahol az egy-egy skalár adaton végzett műveletet helyettesíteni lehet nagyobb vektorműveletekkel.
Lehet hogy te arra gondoltál, hogy egy konstans hosszúságú loop
Ahhoz hogy ez a fordító által automatikusan megvalósítható legyen a kódnak egyszerűnek kell lennie: az egymás után következő ciklusok között csak könnyen feloldható függőség lehet. Bonyolult függőségeket és branchelést nem fog tudni magától feloldani/kezelni a fordító.
Attól függetlenül, hogy a compiler bizonyos egyszerű skalár kódrészleteket (pld for ciklussal egyenként végiggyalogolok egy tömb összes elemén és hozzáadok az aktuális elemhez valami konstansot) hatékonyan tud vektorizálni, ennek még zéró köze van egy SIMD- utasításokat használva kézzel optimalizált kódhoz.
Erre mondtam azt, hogy ha Pistike ír mondjuk egyszerű képmanipulációs szoftvert skalár műveletekkel, mondjuk egy Sepia filtert, ami ugye az egyik legegyszerűbb RGB adatokon dolgozó algoritmus, a compiler nem fog tudni a skalár kódból érdemi SIMD kódot generálni.
Az ok pedig annyi, hogy a hatékony SIMD kódhoz elengedhetetlen, hogy a bemeneti és köztes adatok struktúráját hozzáigazítsd a vektoros feldolgozáshoz. Ez nagy munka. Az RGBA adatokat pld transzponálni kell, hogy a bemeneti [RGBARGBARGBARGBA] helyett kapj valami ilyet:
[RRRR] [GGGG] [BBBB] [RRRR] [GGGG] [BBBB] stb stb (az A alapvetően nem kell a szépiához).Aztán ott van a branchelés. Ha a módosított képen valamelyik színkomponens nem 0-255 közé esik, akkor csonkolni kell. Ezt sem fogja tudni érdemben automatikusan skalárról vektorra fordítani a compiler.
stb stb stbAz MKL az intel sajat, zart forrasu kodja, kb termeszetes, hogy bunteti a nem intel procikat
Nem, nem természetes. Itt arról van szó, hogy ha a dispatcher nem intel procit detektál, akkor rá sem engedi az AVX2 kódra, akkor sem, ha a proci egyébként támogatja azt.
Ennyi erővel az intel fgv könyvtárak akár az x86-os kódot is tilthatnák AMD-n.
Egyébként attól, hogy egy kódot AVX2 -t használva írtak meg, az még nem lesz önmagában ideális egyszerre Skylakere és mondjuk ZEN2-re.
Az intel nyilván a saját AVX2-t tudó processzoraira fogja az AVX2 -t használó kódrészletet optimalizálni. Figyelembe veszi az L1/L2 cache méretét asszociativitását, adott SIMD utasításból hányat tud egyszerre végrehajtani a mag és mekkora az utasítás késleltetése stb. A sebességet mérik is, és nyilván úgy csiszolják, hogy a legjobb legyen a saját procijuknak. Tehát az AMD proci itt is hátrányban lenne, de legalább nincsen szándékosan kigáncsolva. (mintha skalár kódot futtatna enyhén szuboptimális vektorkód helyett)Tehát én azt várnám el az ilyen gyártói fgv könyvtáraktól, hogy ha a konkurens processzor tudja a szükséges utasításkészletet, akkor az is fusson rá az optimalizált útvonalra.
A fenti hosszú irományom lényege pedig az, hogy semmilyen compiler nem fog saját kútfőből skalár kódból vektor kódot csinálni eltekintve pár low hanging fruit leszedésétől.
-
joysefke
veterán
válasz
Cathulhu
#2620
üzenetére
Az MKL az intel sajat, zart forrasu kodja, kb termeszetes, hogy bunteti a nem intel procikat, de ennek semmi koze az 512-hoz, hiszen a legtobb intel proci se tamogatja azt.
Pontosan erről beszélek. Amikor vektorkódnál hátrányban van az AMD akkor nem azért van hátrányban mert "csak" AVX2-t támogat és nem AVX512-t mint a legmodernebb szerver/ws intelek, hanem azért, mert az AMD-proci nem fog ráfutni a számára legoptimálisabb kódútra, hanem egy csomó szoftverben skalár kódot fog végrehajtani, pedig futtathatná az AVX2-es kódutat is. ez az igazi hátrány
Ezen a problémán nem egy esetleges AVX512 támogatás fog segíteni, hanem ilyen olyan módon rá kell bírniuk a szoftvergyártókat, hogy gondoskodjanak róla, hogy az AMD is az AVX kódot futtassa, ha ez nem megoldható MKL alapon, akkor más libraryt kell keresni.
Nemelyik fordito kepes skalar kodot automatikusan vektorizalt kodra optimalizalni, es ehhez nincs szukseg a programozonak explicit SIMD kodot irnia, a forditonak kell eleg intelligensnek lennie (es itt megint felmerul az ICC partatlansaga).
A fordító soha nem fog helyetted vektorkódot írni.
Egyszerű for ciklusokat fog automatikusan unrollolni, ha nem érzékel az egymás után következő ciklusok között függőséget/branchelést, illetve egy csomó alap fgv van még vektorizálva (pld egy némely stringművelet).
Egy "skalár megírt Cinebench"-ből semmilyen fordító nem fog CB20-at csinálni...
Új hozzászólás Aktív témák
- Apple Watch
- Milyen alaplapot vegyek?
- Épített vízhűtés (nem kompakt) topic
- One otthoni szolgáltatások (TV, internet, telefon)
- Milyen autót vegyek?
- Filmvilág
- Apple asztali gépek
- PlayStation 5
- Sub-ZeRo: Euro Truck Simulator 2 & American Truck Simulator 1 (esetleg 2 majd, ha lesz) :)
- eBay-es kütyük kis pénzért
- További aktív témák...
- G.SKILL Trident Z5 Royal Neo Silver 64GB (2x32GB) DDR5 6000MHz CL30 - Élettartam garancia
- XFX Quicksilver AMD Radeon RX 7800 XT Magnetic Air - Arctic White - Alza garancia 2028.02.25.
- Apple iPhone 15 128GB,Újszerű,Dobozával,12 hónap garanciával
- ASUS Vivobook S14 OLED - Ultra 5 226V - 16/512GB - Garancia
- 32GB DDR5 RAM-ok tesztelve, garanciával, számlával (a Te nevedre kiállítva)!
- Bomba ár! Lenovo IdeaPad V110-15ISK: i5-6G I 8GB I 500GB I 15,6" HD I Cam I W11 I Garancia!
- BESZÁMÍTÁS! ASUS TUF B760M i9 14900K 32GB DDR4 1TB SSD RX 7900 XTX 24GB ZALMAN Z1 Plus Seasonic 850W
- Hutt C6 ablaktisztító robot / 12 hó jótállás
- GYÖNYÖRŰ iPhone 14 Pro Max 128GB Black -1 ÉV GARANCIA - Kártyafüggetlen, MS3915, 100% Akkumulátor
- HIBÁTLAN iPhone 12 mini 64GB Black -1 ÉV GARANCIA - Kártyafüggetlen, MS3818, 100% Akksi
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest

