Hirdetés
- HiFi műszaki szemmel - sztereó hangrendszerek
- Olcsó vs. drága egér: melyiknél érzed meg igazán a különbséget?
- Kormányok / autós szimulátorok topikja
- Milyen videókártyát?
- Multimédiás / PC-s hangfalszettek (2.0, 2.1, 5.1)
- Milyen RAM-ot vegyek?
- Melyik tápegységet vegyem?
- Fujifilm X
- Brutálisan elszállhat az új PC-s Snapdragon fogyasztása
- OLED TV topic
Új hozzászólás Aktív témák
-
válasz
proof88
#2621
üzenetére
Na átírtam a függvényeket, hogy referenciaként kapják meg a vectorokat. Ez megoldotta a problémát, most már csak kb. másfélszer lassabb a függvényekbe szedett kód a spagettinél. Ezt már be lehet szerintem tudni a függvényhívás idejének. Valójában észrevettem, hogy a vectorok nagy részét már így is referenciaként kapja és nem úgy, ahogy szombaton mutattam. Erre úgy emlékszem azért volt szükség, mert ha értékként adtam át, akkor csak a függvényen belül létrehozott másolatban változtatta meg az értéket, de az eredetit nem módosította. Most átírtam referenciára azokat a vectorokat is, amelyeknek nem kell az értékét változtatni, ezért előzőleg nem írtam át őket referenciára.
Egyébként valóban azért adtam át mindent pointerként a függvényeknek, mert én C-t tanultam és nem C++ -t. Bár mostanában már C++ -t használok, és próbálom kihasználni az előnyeit a C-hez képest, de sajnos én még mindig C-ben írom a programokat C++ -os beütéssel. Próbálom megtanulni minél jobban a C++ -ban való kódolást.
Egyébként kivettem a pointereket és referenciaként adtam át őket a függvénynek, de ez a sebességen már nem változtatott.
Kösz a segítséget
-
válasz
proof88
#2615
üzenetére
Sajnos most hétvégén nem érem el a végleges verziót, de a függvény paraméterek nem változtak. Azok így néznek ki:
void InTheInfiniteTube(double *v1, double *v2, double *v3, int *sz2, double *xbe, double *ybe, double *zbe)
void AroundTheCylinder(double *v1, double *v2, double *v3, double xy_det_tav, double hatarszog, int *sz2, double *xbe, double *ybe, double *zbe)
void FreePath(double *v1, double *v2, double *v3, vector<vector<double>> hkm, vector<double> hkm_E, double *xbe, double *ybe, double *zbe, double *E1)
void ComptonScatter(double *v1, double *v2, double *v3, double *E1, int *sz_E, vector<double> E_tarolo)
void PhotoEffect(double *E1, int *sz_E, vector<double> E_tarolo)
void PairProduction(double *xbe, double *ybe, double *zbe, double *v1, double *v2, double *v3, double *E1, int *sz_E, vector<double> E_tarolo, vector<double> hkm_E, vector<vector<double>> hkm)
Végülis túlnyomórészt pointereket adok át nekik. Meg a vector-okat, de azok is pointerként működnek, mint a tömbök, nem? vagy legalábbis nem hiszem, hogy az okozná a problémát

-
válasz
proof88
#2613
üzenetére
Rendben, köszi!
Még egy kérdést engedjetek meg. Ez a programom eredetileg egy nagy spagetti kód volt, egy forrás fájllal és kb. 400 sorral. Mivel egy csomó ismétlődő rész volt benne, ezért egyértelműen adta magát a dolog, hogy egyes részeiből függvényt csináljak. De ekkor az a teljesen váratlan és megdöbbentő dolog történt, hogy a kód kb. 50-ed (!) részére lassult. Ami eddig 2-3 mp-es futás volt, az most 2 perc. És gyakorlatilag semmi mást nem csináltam, csak az ömlesztett kódot kicsit rendeztem azzal, hogy függvényt csináltam egyes részeiből. Kérdésem, hogy ez a függvény hívás tényleg ennyire időigényes dolog, hogy ennyire belassítja a futást?Egyébként először az eredeti forrás fájlba tettem a függvényeket is, a main() előtt definiálva. A futási sebességen nem változtatott, hogy utána a függvényeket külön forrásfáljban definiáltam és header-ben deklaráltam. A program egyébként egy NaI szcintillációs detektort szimulál fotonok detektálása közben. Mivel ez egy elég jól párhuzamosítható dolog, ezért az eredeti célom az volt, hogy CUDA-ra írom át a kódot, de lesokkolt, hogy mennyire belassult attól, hogy függvényekbe szedtem. Így szinte nincs is értelme átírni GPU-ra, mert még ha 10x-esére is gyorsul, akkor is jóval lassabb lesz, mint a spagetti-kód.
-
proof88
addikt
-
InterFox
senior tag
Új hozzászólás Aktív témák
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Synology NAS
- VPN topic
- Apple Watch
- Xiaomi 15 - kicsi telefon nagy energiával
- HiFi műszaki szemmel - sztereó hangrendszerek
- Okos Otthon / Smart Home
- Kínai és egyéb olcsó órák topikja
- Olcsó vs. drága egér: melyiknél érzed meg igazán a különbséget?
- Kerékpárosok, bringások ide!
- Beárazták a Nubia Z80 Ultra európai verzióját
- További aktív témák...
- Gigabyte rtx 5070 bontatlan.
- miniITX félkonfig i7-6700, RX580 8gb, AsRock B150M ITX
- ASUS ROG STRIX RTX 2080 Ti OC 11GB (ROG-STRIX-RTX2080TI-O11G-GAMING)
- Eladó egy Clevo PA71HS-G i7 7700hq Gtx1070 Kérlek olvasd végig a hirdetést
- DELL latitude 5410 Tartós Üzleti Laptop 14" -70% i5-10210U 4Mag 8Gb 256GB SSD FHD IPS
- IKEA Format lámpák eladóak (Egyben kedvezménnyel vihető!)
- Bomba ár! HP EliteBook 845 G7 - Ryzen 5 4650U I 8GB I 256SSD I 14" FHD I Cam I W11 I Gari
- BESZÁMÍTÁS! Asus TUF Z690 i7 14700KF 32GB DDR5 1TB SSD RX 6900XT 16GB Zalman Z1 PLUS EVGA 850W
- Azonnali készpénzes AMD Radeon RX 9000 sorozat videokártya felvásárlás személyesen/csomagküldéssel
- Apple iPhone 11 64GB, Kártyafüggetlen, 1 Év Garanciával
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Laptopműhely Bt.
Város: Budapest




