Aktív témák
-
BadGe
aktív tag
fuck multithreading. 54 sec vs 2 sec, és nem 2 processzortól gyorsult 27szeresre a végrehajtás. (mióta két maggal gazdálkodok, a nyers erő bedőlése után mindíg rájövök, hogy dualcore nélkül is lehet gyorsítani).
vegyük ki a képletből hogy esetleg szar kóder vagyok. elvégre ha valami tud 27x gyorsabb lenni akkor elég szar lehetett az alap, de nem, az eset egyáltalán nem nyilvánvaló:
két egymásba ágyazott ciklus, kb 53000x53000 lefutással. (önállóan ez kb 2,5 mp valami kamu tevékenységgel)
a neheze természetesen a ciklusmagokon belül kezdődik, itt durva poligon/poligon tartalmazás vizsgálatok következnek ami poligononként sokezer pont esetén tényleg nem piskóta. Ez kb magyarázza is az 54 mp-es végrehajtást, végülis kivárható. (oké, durvább esetben volt ez 14 perc is, de azt most nem tudtam mérni, a lényeg hogy a lassúságot megmagyaráztam a feladat számításigényével (tényleg az))
az OMP kapcsán viszont elég gyorsan kiderül ha valami nem túl hatékony:
esetembem kis varázslás után elkezdett mindkét mag dolgozni, fasza, 50 helyett 100% proc terhelés, nézzük a futásidőt: 54 sec. basszameg.
ezután a ciklust annyira levágdostam hogy a végén már csak a két egymásba ágyazott 53000-es ciklus futott, szintén 54 másodpercig. pedig a durva poligonos műveleteket még el sem kezdte... (fent már írtam , hogy a nyers ciklus csak 2,5mp-ig futott volna)
kiderült, hogy az adatstruktúrák miatt kb 167GB adatot mozgatok (tulajdonképpen sima tömb[x].val tömb[y].val műveletek). 167 GB már sok szerintem a DDR-nek. nem számoltam nagyon pontosan utána. Maga a tömb 3,5 megás vagyis nem túl cache barát...
megoldás: szétdobáltam a végrehajtást egy 4x4 (később 6x6)-os mátrixba így egyszerre csak kisebb területek kevesebb (cache barát) adatmennyiségét kell feldolgoznom, egyébként pontosanugyanúgy mint eddig.
eszméletlen.
ezek után akkor most nekifoghatnék ismét egy kis többszálasításnak, de egyelőre minek
most gyorsult 27x-re a program. a maradék 2-őt elteszem jövőre, hátha még akkor is tart a válság és már csak izomból gyorsíthatok
ge.
tehát tanulság: a cache csodákra képes. (a lefutás szám is csökkent, de mint írtam pusztán a ciklus végrehajtások önmagukban nem lettek volna ennyire lassúak, ha nem kell várakozniuk a memóriából becsordogáló adatokra).
ez azért fontos kérdés, mert mert a processzorok és a memóriák nem 27x gyorsabbak, nem lehet a végtelenségig szarul megírt programokkal újabb hardverekre várni.
persze ha nem lett volna a duplamag akkor még mindíg azt hinném, hogy a poligonok miatt lassú a végrehajtás.
-
BadGe
aktív tag
Gyönyörű firma vagyok, de TI sem panaszkodhatok. Mi a fenére kell az a sok proci ha senki nem használja? Bár a témával nem elsősorban ez volt a célom de a magok használatára algoritmusok szintjén alkalmas az úgynevezett OpenMP
természetesen el kell olvasnotok, és ha nem lenne egyértelmű akkor itt egy egyszerű példa:
#include <omp.h>
...
#pragma omp parallel for
for ( i = 0 ; i < ndxHeader; i++ )
{
NormalizeLine2( i, treshold, mincount );
}a fenti kód N x gyorsabblesz ha több proc-ot haszál a géped. A feladat szétosztása hatékonyabban történik mintha az oprendszer thread kezelő rutinjait használnánk. kicsit izés...
a példa nagyon egyszerűnek tűnhet, de kb ez volt az első ami tényelg működött. pl egy sima tömb feltöltés adatokkal nem igazán ad meggyőző eredményt. aztán pl nem lehet kiugrani a ciklusból, szóval minél egyszerűbb a végrehajtás annál jobb.
működés: a ciklusból a háttér rendszer annyi kis ciklust készít amennyi procod van és ezeket külön-külön elindítgatja. pl egy 1000000 ciklus esetén (szándékosan nagy a szám) lesz pl 4 ciklusod: 0..249999, 250000..499999 stb...
persze ennél kifinomultabb a dolog és bizonyos szinten szabályozható is.
stb.
de igazából engem egy platform független thread kezelő környezet érdekelne...
-
BadGe
aktív tag
Üdv. programozó vagyok. és öreg. és már 2 napja nem ittam
(nem bélám, nem félredugásról beszélek...)
a címben javasolt beszélgetős témakör a legkevésbé sem triviális több szálas program végrehajtásról szól.... aki ért hozzá valószinűleg tudja miről beszélek.. akár csinálta (és szeretettel látjuk a javaslatait) akár csinálná (és akkor pedig a kérdéseinek örülük nagyon).
A témakör nagyon tág...
rögtön vitaindítónak egy saját sete-suta tapasztalat:
akkor érdemes valamit többszálúvá tenni ha a feldolgozás ideje emberi érzékszervekkel is mérhető.... (tizedmásodperces nagyságrend) viszont pl teljes mérékben érthetetlen számomra, hogy pl egy frame based játékban hogyan használhatunk több magot... oké megy +1 a fizikának.. és a többi?
ge.
<<< majd postolgatok, de mivel egyfelől ritkán hasznos a téma, másfelől nem is értek hozzá igazán, így nem igérem hogy ez önmagában érdekes "thread"-et eredményez majd. America needs YOU! >>>
Aktív témák
- Apple asztali gépek
- Mozilla Firefox
- sellerbuyer: Mivel fotózz és videózz 2025-ben? Elég egy mobil vagy kell egy kamera?
- Folyószámla, bankszámla, bankváltás, külföldi kártyahasználat
- Milyen videókártyát?
- Audi, Cupra, Seat, Skoda, Volkswagen topik
- Vicces képek
- Miskolc és környéke adok-veszek-beszélgetek
- Villanyszerelés
- Mikrotik routerek
- További aktív témák...
- Féláron eladó vadonatúj razer blade 14 rtx 3080ti
- 500 ezerrel ár alatt! Vadonatúj garanciás razer blade 16 oled kijelző rtx 4070
- Hardverapró árérték bajnoka! Razer blade rtx 3080 ti i9 32gb ddr5 4k kijelző 144hz!
- Eladó kiskergaris 18TB-os Seagate EXOS X18 Enterprise HDD
- Félkonfig // I7 7700, GTX 1070, 16 GB DDR4
- BESZÁMÍTÁS! GIGABYTE A520M R5 5600X 16GB DDR4 512GB SSD RTX 2060 Super 8GB Zalman ZM-T7 Corsair 550W
- AKCIÓ! Apple Mac Studio M1 MAX 2022 32GB 512GB számítógép garanciával, hibátlan működéssel
- Apple iPhone 14 Pro Max / Kártyafüggetlen / 256GB / 12Hó Garancia / 87% akku
- Lian Li LCD-s 360mm-es vízhűtés akciós áron eladó!
- BESZÁMÍTÁS! Gigabyte A520M R5 5500 16GB DDR4 512GB SSD RTX 2060 Super 8GB Rampage Shiva A-Data 600W
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Laptopműhely Bt.
Város: Budapest