Hirdetés
- Samsung Galaxy S25 Ultra - titán keret, acélos teljesítmény
- Samsung Galaxy S25 - végre van kicsi!
- Google Pixel topik
- Samsung Galaxy S23 és S23+ - ami belül van, az számít igazán
- „Új mérce az Android világában” – Kezünkben a Vivo X300 és X300 Pro
- Apple Watch Ultra - első nekifutás
- EarFun Air Pro 4+ – érdemi plusz
- iPhone topik
- Xiaomi 15 Ultra - kamera, telefon
- Xiaomi 14 - párátlanul jó lehetne
Ú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!
- Mr Dini: Mindent a StreamSharkról!
- Intel Core Ultra 3, Core Ultra 5, Ultra 7, Ultra 9 "Arrow Lake" LGA 1851
- Kerékpárosok, bringások ide!
- Android játékok topikja
- Villanyszerelés
- Samsung Galaxy S25 Ultra - titán keret, acélos teljesítmény
- Samsung Galaxy Felhasználók OFF topicja
- A fociról könnyedén, egy baráti társaságban
- Samsung Galaxy S25 - végre van kicsi!
- Kodi és kiegészítői magyar nyelvű online tartalmakhoz (Linux, Windows)
- További aktív témák...
- Apple iPhone 13 /128GB /Kártyafüggetlen / 12 Hó Garancia / akku: 85%
- Game Pass Ultimate előfizetés azonnal, problémamentesen, méghozzá OLCSÓN! Immáron 8 éve!
- Eredeti Lenovo 90W szögleges laptop táp + kerek átalakító egyben eladó
- Apple iPhone 13 Pro Max Graphite ProMotion 120 Hz, Pro kamerák 256 GB-100%-3 hó gari!
- HP 14 Elitebook 640 G10 FHD IPS i5-1345U vPro 10mag 16GB 512GB SSD Intel Iris XE Win11 Pro Garancia
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest




