- Kiemelkedően csendes ASUS VGA jött a Noctua közreműködésével
- Mini kijelzős SSD-hűtő a Thermalright névjegyével
- Windows: mi történik valójában Leállításkor, Alvó módban és Újraindításkor?
- Gyenge Wi-Fi otthon? – a leggyakoribb hibák és megoldások
- Korábbi vezetője szerint 40 milliárd dollár kell az Intel versenyképességéhez
- Melyik tápegységet vegyem?
- Vezetékes FÜLhallgatók
- Intel Core i5 / i7 / i9 "Alder Lake-Raptor Lake/Refresh" (LGA1700)
- Lopakodva befutott a Radeon RX 9060
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- Milyen videókártyát?
- Azonnali informatikai kérdések órája
- AMD Ryzen 9 / 7 / 5 9***(X) "Zen 5" (AM5)
- Milyen egeret válasszak?
- Fejhallgató erősítő és DAC topik
Hirdetés
Ú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.
Új hozzászólás Aktív témák
- Kínai és egyéb olcsó órák topikja
- WoW avagy World of Warcraft -=MMORPG=-
- Samsung Galaxy Z Fold7 - ezt vártuk, de…
- Melyik tápegységet vegyem?
- Lexus, Toyota topik
- Vezetékes FÜLhallgatók
- Intel Core i5 / i7 / i9 "Alder Lake-Raptor Lake/Refresh" (LGA1700)
- Lopakodva befutott a Radeon RX 9060
- Gyúrósok ide!
- Okosóra és okoskiegészítő topik
- További aktív témák...
- Új HP VICTUS Gamer Tervező Laptop 16,1" -40% Bivaly i7-13700H 14Mag 16GB/1TB RTX 4070 8GB FHD 144Hz
- Samsung Galaxy Watch 6 44mm GPS Fekete
- BESZÁMÍTÁS! Gigabyte Aorus B450 R7 5700X 16GB DDR4 512GB SSD RTX 3060Ti 8GB ZALMAN I3 NEO 650W
- BESZÁMÍTÁS! Asus B550M R9 5900X 32GB DDR4 1TB SSD RTX 4070 SUPER 12GB Be Quiet! Silent Base 601 850W
- BESZÁMÍTÁS! MSI B550M R7 5700X 32GB DDR4 1TB SSD RTX 4070 12GB NZXT H710I Be Quiet 650W
- Olcsó Notebook! Lenovo Ideapad 3! Ryzen 3 3250U / 8GB DDR4 / 128GB SSD
- Telenor 5G Indoor WiFi Router (FA7550) + töltő
- BESZÁMÍTÁS! MSI A320M R3 4100 16GB DDR4 120GB SSD 500GB HDD GTX 1050Ti 4GB Zalman T7 NBASE 600W
- Dell 5050 i5 7500 8Gb RAM 128Gb SSD
- LG 24GQ50F-B - 24" VA / 1920x1080 FHD / 165Hz 1ms / AMD FreeSync Premium / Adaptive Sync / HDR 10
Állásajánlatok
Cég: FOTC
Város: Budapest