-
Fototrend

Új hozzászólás Aktív témák
-
pomorski
őstag
Sziasztok,
egy kis okosságra/segítségre volna szükségem többszálas (openmp) programozás kapcsán. Adott egy fortran kód, amit mi írtunk, néhányezer soros egyszálas. Kimértük, hogy vannak olyan részek, amik végrehajtása nagyon-nagyon időigényes, ezért kézenfekvő volt az ötlet, hogy párhuzamosítani kellene openmp segítségével az időigényes blokkokat a lehető legtriviálisabb módon. Az egyik ilyen időigényes blokk az alábbi:
.
.
.
.
.
jb=0
do ib=1,elteres
do kb=1,mutato(ib)
jb=jb+1
jk=0
do ik=1,elteres
do kk=1,mutato(ik)
jk=jk+1
if (ib.eq.ik)then
sl_tmp=0._dp
if(kb.eq.kk)sl_tmp=egyedi_proton_spe(jb,jk,mm/2,n_of_sdet,s)
if(s(jb)%neutron.eq.s(jk)%neutron.and.kb.ge.kk)then
sl_tmp1=egyedi_proton_tbint(jb,jk,mm/2,n_of_sdet,s)
ujhmatp(ib)%hh(kk,kb)=sl_tmp+sl_tmp1
ujhmatp(ib)%hh(kb,kk)=sl_tmp+sl_tmp1
endif
endif
enddo
enddo
enddo
enddo
.
.
.
.
.
ezt az alábbi módon openmp-sítettem (a legbelső vastag betűvel szedett részt):
.
.
.
.
.
jb=0
do ib=1,elteres
do kb=1,mutato(ib)
jb=jb+1
jk=0
do ik=1,elteres!$omp parallel &
!$omp private(kk,sl_tmp,sl_tmp1) &
!$omp reduction(+:jk)
!$omp dodo kk=1,mutato(ik)
jk=jk+1
if (ib.eq.ik)then
sl_tmp=0._dp
if(kb.eq.kk)sl_tmp=egyedi_proton_spe(jb,jk,mm/2,n_of_sdet,s)
if(s(jb)%neutron.eq.s(jk)%neutron.and.kb.ge.kk)then
sl_tmp1=egyedi_proton_tbint(jb,jk,mm/2,n_of_sdet,s)
ujhmatp(ib)%hh(kk,kb)=sl_tmp+sl_tmp1
ujhmatp(ib)%hh(kb,kk)=sl_tmp+sl_tmp1
endif
endif
enddo!$omp end do
!$omp end parallelenddo
enddo
enddo
.
.
.
.
.
de sajnos hülyeséget számol a progi, ha őt -openmp kapcsolóval fordítom le. Ha nem rakom be eme kapcsolót, és a fordító egyszálas üzemmódban fordítja, akkor tökéletes eredményt számol a progi, -csak lassan ugyebár.“Ökölszabályként” tudom, hogy ami értéket kap az “private”, ami felösszegződik, annál használni kell a reduction-t. Illetve azt is, tudom, hogy időként szükség van a “shared”-re is. Sok mindent kipróbáltam, de a kód csak nem akar megfelelő lenni többszálas fordítás esetén. Ötlet?
szerk: Sajnos csak így sikerült beilleszteni a kódot, a formázás eltűnt, bocs.
Új hozzászólás Aktív témák
● olvasd el a téma összefoglalót!
- Apple MacBook
- Futás, futópályák
- Fejhallgató erősítő és DAC topik
- HiFi műszaki szemmel - sztereó hangrendszerek
- MWC 2026: nézni szabad, megérinteni nem
- ThinkPad (NEM IdeaPad)
- Meghozta a régóta várt asztali Ryzen APU-kat az AMD
- OLED TV topic
- Audi, Cupra, Seat, Skoda, Volkswagen topik
- Spórolós topik
- További aktív témák...
- Előrendelés - 2026 MacBook Air retina M5 Chip - Bontatlan - 1 ÉV Apple Gyári garancia
- T14 Gen4 14" FHD+ IPS i5-1345U 16GB 256GB NVMe magyarított (lézerezett) vbil ujjolv IR kam gar
- P14s Gen2i 14" FHD IPS i7-1165G7 T500 16GB 512GB NVMe magyarított (lézerezett) bill ujjolv gar
- X12 Gen2 12.3" FHD IPS érintő Ultra 5 134U 16GB 256GB NVMe IR kam gar
- LG 32MR50C-B. 31.5 hüvelykes ívelt 1500R, 1920x1080 Full HD, 100Hz, AMD FreeSync, VA, Dönthető
- Használt Apple A1243 EMC2171 német kiosztású vezetékes billentyűzet / 12 hónap jótállás
- Új Acer Nitro V15 FHD IPS 144Hz i9-13900H 14mag 16GB 512GB SSD Nvidia RTX 4060 8GB Win11 Garancia
- Xbox One / Xbox Series játékok
- GYÖNYÖRŰ iPhone 14 Pro Max 256GB Space Black -1 ÉV GARANCIA -Kártyafüggetlen, MS4031
- 232 - Lenovo Legion Pro 5 (16IAX10) - Intel Core U7 255HX, RTX 5070
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest

