You are on page 1of 47

chng trc cp mc thp tip cn to ra quy trnh hoc v

chia s d liu gia chng. May mn thay, nhiu phng php cho php cc nh
pht trin tp trung vo mc cao hn ca thit k ng dng v li cc
c ch qun l ch v chia s d liu vi thi gian chy cc th vin v cc
trnh bin dch. Trong mt trng hp l tng, trnh bin dch qun l tt c mi
th, t vic xc cc b phn ca cc m chy song song thng qua vic cung
cp cc c ch h tr song song . Tuy nhin, nu khng c s gip t cc
nh pht trin, cng ngh trnh bin dch hin ti s him khi c th khai thc tt
c cc x l song song trong mt ng dng. Vic m rng ngn ng thng dng
nht v thng c sn cho x l song song l OpenMP API.
Cc c im k thut OpenMP nh ngha mt API cho php cc nh pht trin
thm ch th m ni tip ca h s gy ra cc trnh bin dch sn xut
mt phin bn song song ca cc ng dng. Chng ny m t c hai song song
t ng c cung cp bi nhiu trnh bin dch v lm th no cc API OpenMP
c th sn xut cc ng dng song song t cc m s serial.
S dng song song t ng sn xut mt ng dng song song.
Hu ht cc trnh bin dch c th thc hin mt s mc song song t ng.
Trong mt th gii l tng, song song t ng s ch l mt ti u ha trnh bin
dch, nhng hin ti c nhng hn ch ng k vo nhng g c th t c.
y l ndoubtedly mt khu vc m s ci thin trong thi gian. Tuy nhin, trong
nhiu trng hp, n c th h tr cc trnh bin dch trong vic a ra cc m
song song.
Trong phn ny, chng ta s khm ph nhng kh nng ca c Oracle Solaris
Studio v Intel trnh bin dch thc hin song song t ng. Cng nh kh
nng thc hin song song t ng, n cng quan trng cho cc trnh bin dch
c th cung cp thng tin phn hi trn cc phn ca m c song song v
nhng g c ch song song ca cc khu vc khc ca m.
Trnh bin dch hin ti ch c th t ng parallelize vng. Loops l mt mc tiu
rt tt cho song song bi v chng thng c nhc i nhc li, v vy cc khi
m do s tch ly thi gian ng k. Nh tho lun trc , bt k khu vc
song song phi thc hin cc cng vic quan trng vt qua bt k chi ph m
phi gnh chu song song.

Trnh bin dch Solaris Studio C s dng l c xautopar cho php t ng song
song v c xloopinfo bo co thng tin v mc song song c. Bng lit
k 7.2 cho thy kt qu bin dch on m ny.

C hai vng trong m ny, v mc d cc trnh bin dch c qun l


parallelize vng u tin, n khng th parallelize vng th hai. Trnh bin
dch bo co rng cc cuc gi chc nng trong vng lp th hai dng li song
song ca cc loop.We s tho lun v trnh vn ny phn sau ca.
Trnh bin dch Intel s dng cc ty chn cho php song song song song v
cc ty chn mnh bo co bo co thnh cng ca n. Cc trnh bin dch
cng c ngng ty chn mnh {n}, kim sot ngng m cc trnh bin dch s
parallelize mt vng lp. Cc ty chn mnh threshold0 s lm cho trnh bin
dch parallelize tt c cc vng ng c vin; mc nh mnh threshold100 ch ra
rng trnh bin dch nn parallelize ch nhng vng m chc chn s c hng
li. Bng lit k 7.3 cho thy sn lng t cc bin dch ca Intel trn cc tp tin
cng mt ngun. L c fno chc nng v hiu ha chc nng ni tuyn ni tuyn
trong cc trnh bin dch v m bo rng cc m c to ra l nh nhau cho
hai trnh bin dch.

S lng song song c s dng trong vng lp c kim sot bi cc bin


mi trng OMP NUM . Bng lit k 7.4 cho thy hiu sut ca m khi chy vi
mt v hai ch . N rt hu ch kim tra thi gian bo co cho cc m ni
tip v song song. Thi gian s dng l nh nhau trong c hai trng hp, trong
ch ra rng hai m cng mt s lng cng vic. Tuy nhin, thc t, hoc
tng, thi gian l t hn cho cc phin bn song song. iu ny l c
mong i. Pht tn mt lng khng i cng vic qua hai l tng s dn
n mi thread hon tt mt na cng vic.

Nh mt v d phc tp hn song song t ng, xem xt cc vng lp trong Lit


k 7.5, m s nhn mt ma trn ca mt vc t v t kt qu trong mt vector
th hai.

Bng lit k 7.6 cho thy kt qu ca bin dch m ny vi trnh bin dch Solaris
Studio.

Trnh bin dch khng cng nhn mt trong cc vng lp for nh vng m c th
c song song. L do cho iu ny l kh nng kh rng ca gia cc ca hng
ra [i] v cc gi tr c s dng xc nh cc vng rng buc, * hng * v
col. Mt yu cu trnh bin dch t ng parallelize vng lp l cc gii hn
vng lp phi duy tr lin tc. Mt ca hng cho mt trong nhng ranh gii vng
lp s vi phm hn ch . V vy, n khng phi l mt hnh thc ca vng lp
c th c t ng song song. L mt lp trnh, n s l bt thng vit m
m da vo cc ca hng cc phn t trong mng thay i ranh gii vng lp,
nhng i vi cc trnh bin dch, cc gi nh an ton duy nht l nhng sc
mnh b danh.
Cch mc ch chung nht ca sa cha ny l t cc gii hn vng lp thnh
cc bin cc b tm thi. iu ny loi b kh nng rng cc gii hn vng lp
sc b danh vi mt trong cc ca hng trong vng lp. i vi cc m trong Lit
k 7.5, n rt d dng thc hin cc thay i tng ng v vt qua cc
gii hn vng lp theo gi tr ch khng chuyn chng nh con tr n cc gi
tr. Bng lit k 7.7 cho thy cc vng lp sa i

Lit k 7.8 cho thy sn lng t cc trnh bin dch khi bin th mi ca m l
bin son.

Vic sa i m kch hot cc trnh bin dch nhn ra cc vng l ng c


vin
cho song song, nhng trnh bin dch t mt vn v cc yu t ch ra bi
hin sc mnh b danh vi cc yu t ch ra, hoc bi cc ma trn, mat, hoc bi
cc vector, vec. Mt cch gii quyt iu ny l s dng mt con tr hn ch
iu kin gi v tr ca mng u ra. Bng lit k 7.9 ch m i cho iu
ny.

Sau khi iu chnh ny i vi m ngun, trnh bin dch c th sn xut mt


phin bn song song ca vng lp, nh trong Lit k 7.10.

Trnh bin dch Solaris Studio to ra hai phin bn ca vng lp, mt phin bn
song song v mt phin bn ni tip. Khi chy, cc trnh bin dch s xc nh
xem s lng chuyn i ca vng lp l cao cho cc phin bn song song
chy nhanh hn so vi cc phin bn ni tip.
Trnh bin dch bo co rng cc vng lp dng 8 trong Lit k 7.9 c mt s
ph thuc khng an ton, ng l do cho quyt nh ny s c tho lun trong
phn tip theo, "Xc nh v Gim parallelizing."
Trong hai vng trong cc m, cc trnh bin dch song song qu trnh vng ngoi
nhng khng phi cc vng trong. y l quyt nh tt nht lm cho hiu
sut. Cc ch thc hin cc cng vic cn song song ng b ha mt khi
cng vic hon thnh song song. Nu cc vng ngoi l song song, sau cc
ch cn phi ng b ha ch mt ln cc vng ngoi hon tt. Nu cc
vng trong c thc hin song song, sau cc ch s phi ng b ha
mi ln mt ln lp ca vng lp bn ngoi hon thnh. S lng cc s kin
ng b ha s bng vi s ln m cc vng ngoi l iterated.Hence, l hiu
qu hn lm cho cc vng ngoi song song
Xc nh v parallelizing Gim
Khi mt vng lp lm gim mt s lng ln cc d liu xung mt tp hp nh
hn cc gi tr, cc hot ng c gi l gim. Cc v d in hnh ca vic
gim c tnh tng ca mt dy s, nh th hin trong Lit k 7.11.

to ra mt gim song song, cc nh iu hnh gim cn phi c hon thc


hin cc hot ng theo mt th t khc nhau khng phi gy ra mt kt qu
khng chnh xc. Cc hot ng gim c th l cng, tr, nhn, v cc hot ng
hp l, chng hn nh AND hoc OR, cng nh cc hot ng MIN v MAX khi p
dng cho mt dy s.
Tuy nhin, mt s hot ng trn cc s du chm ng khng th c sp xp
li m khng gy ra mt s khc bit s tim nng u ra. Vic b sung cc
gi tr du chm l mt v d tt v iu ny. C nhng tnh hung m thm A v
B v sau C s cho mt gi tr s khc nhau v thm C v A v sau B. Th t
ca cc hot ng ny l quan trng. y khng phi l mt vn duy nht
m song song; m s serial c nhng hn ch t hng cng. Tuy nhin, i vi
m song song, hn ch ny c th ngn chn mt trnh bin dch t sn xut mt
phin bn song song ca mt cu trc m.
xem xt mt v d gi to, gi s bn c mt mng cc s du chm ng c
sp xp t cc yu t ln nht cc phn t nh nht. Khi bn tng hp cc
yu t trong mng ny, cc gi tr c th t n mt im m tng tr nn
qu ln rng vic thm cc yu t nh vo khon tin ny khng gy nh hng,
bi v s gia tng t hn c th c ng k nh l mt s gia tng trong vic t
chc bin tng.
Gi s bn ly mng ny cng v s dng hai ch tnh ton kt qu. mi
Ch tnh tng tng phn hn mt na ca dy s. Cc ch u tin tnh
ton tng ca na u ca mng, trong c danh sch cc s lng ln. Cc
ch th hai s tnh ton tng ca na th hai ca mng, c cha danh sch
ca nhng con s nh. By gi cc ch th hai s tnh mt gi tr nh hn
nhiu cho tng s phn ca n. Khi hai gi tr tch cc nh c thm vo vi
nhau, n c nhiu kh nng l kt qu ln hn l ln nht trong hai gi tr. Ngc
li, nu mt gi tr nh c thm vo mt gi tr ln hn nhiu, c kh nng l
kt qu s ging ht vi gi tr ln hn. Hu qu ca vic ny l cc gi tr nh s
tch t li v c ghi li trong tng tnh bng cc si th hai.
Vo cui ca vng song song, cc gi tr t c hai ch c thm vo sn
xut
kt qu cui cng. Cc gi tr m cc si th hai tnh l c kh nng ln
gy ra mt s thay i nh trong gi tr khi thm vo kt qu ln t cc ch

u tin. Cc kt qu trong vic tnh ton bng cch s dng hai ch c kh


nng l khc nhau t cc kt qu tnh ton bng cch s dng ch c mt si. S
khc bit c th ch l trong con s ng k nh, hoc thm ch n c th l mt
s khc bit lm trn. Nhng, kt qu c tim nng c th khc nhau.
Mt s trnh bin dch t ra quyt nh v vic liu thc hin ct gim di
s kim sot ca ngi s dng. Trnh bin dch Solaris Studio yu cu ngi
dng xc nh c
xreduction parallelize hot ng gim. Trnh bin dch Intel khng yu cu mt l
c b sung nhn gim. Chng ta c th nhn thy kt qu ca vic s dng l
c ny trn cc m t Lit k 7.5 u ra hin th trong Lit 7.12.

Cc u ra trnh bin dch cho thy rng n cng nhn cc vng trong dng 8
v khng khai bo n mt ph thuc khng an ton. Thay vo , vng lp c
bo co l khng c li parallelize. y l hnh vi d kin; nh chng ta
tho lun trc y, l hiu qu hn nhiu parallelize cc vng ngoi v ri
khi vng lp bn trong nh m ni tip.
Gim c hin din nhiu m, v n thng thch hp parallelize h min
l cc nh pht trin l nhn thc c rng iu ny c th gy ra mt s khc
bit trong kt qu to ra.
T ng song song ca cc Codes Cha cuc gi.
Chng ti tho lun v tc ng n hiu sut ca cc cuc gi n cc thi
quen khc trong Chng 2, "M ha cho hiu sut." Vn c bn vi chc nng
gi khc l trnh bin dch khng c tng nhng g thng thng m c th
lm-n c th thay i d liu ton cu hoc c l khng bao gi quay tr li. V
l do ny, mt vng lp cha cc cuc gi chc nng c th khng, ni chung,
c t ng song song.
R rng, s hn ch ny c th ngn cn mt s lng ln cc vng m nu
khng c th c song song mt cch an ton. Ni hin nhin nht, ni y s
l mt vn s c ku gi cc hm ton hc. Hn ch ny c th c chng
minh bng cch s dng phin bn sa i ca m ma trn vector t Lit k 7.9.
Listing 7.13 hin th m ny c sa i.

Khi bin dch, cc cuc gi n phm ti () gy ra song song t ng tht bi,


nh th hin trong Lit k 7.14.

Trnh bin dch Solaris Studio coi sin () l mt "xy dng trong chc nng", nhng
v
mt nh pht trin c th cung cp mt thc hin thay th hoc c th xen vo
cc cuc gi chc nng, n khng nhn cc cuc gi tr khi c bo lm nh
vy. L c cho php nhn c xy dng trong cc chc nng c xbuiltin.
Khi c ny c cung cp, sn lng t cc trnh bin dch c hin th trong
Lit k 7.15.

Tuy nhin, cc cuc gi n cc hm ton hc chim t l nh ca cc cuc gi


m
c th gp phi trong vng. Khng c cch no tiu chun biu th rng mt
cuc gi n mt chc nng c th c thc hin mt cch an ton song song,
mc d cc trnh bin dch c nhn c th thc hin cc c ch c th c s
dng. Cch tt nht kch hot mt vng lp c cha mt chc nng gi
c song song t ng l do ni tuyn chc nng. Ni tuyn thay th mt cuc
gi n mt hm vi cc m thc t cho hm c gi. Chc nng ni tuyn c
th c kch hot vi mt l c bin dch ni chung hoc mt l c cho php
mt thi quen c th c inlined. Listing 7.16 cho thy mt bin th ca m
ni mt phn ca vic tnh ton c thc hin bi mt thi quen.

Khi m ny c bin dch, trnh bin dch khng t ng parallelize cc vng v


chng c cha mt cuc gi m c th khng an ton. Tuy nhin, khi cc m
c bin son mc ti u ha ca xO4 hoc cao hn, trnh bin dch s t
ng thc hin ti u ha ni tuyn, trong loi b cc cuc gi v cho php
cc vng lp c song song. iu ny c th hin trong Lit k 7.17.

Gip Compiler trong T ng parallelizing M


Cc m c hin th trong Lit k 7.18 c mt vn rng ca tim nng. Cc
thay i ca cc yu t trong mng myarray cng c th thay i cc gi tr c
tr n bi chiu di nu n xy ra l mt thnh vin ca myarray.

N c th thay i m mt trnh bin dch c th t ng parallelize it.One


cch gii quyt ny s c ch nh chiu di l mt con tr hn ch trnh
trnh bin dch s bit rng cc ca hng mng s khng lm thay i gi
tr tr ti theo chiu di. Mt phng php khc c th t mt gi tr c tr

n bi chiu di vo mt bin tm thi. Phng php th hai ny c mt li th


ch n khng da vo s h tr cho cc t kha hn ch.
Trong nhiu tnh hung, trnh bin dch s c th parallelize vng nu mt s cc
vn rng ca tim nng c gii quyt bng cch s dng cc bin tm thi
hoc loi c s dng con tr restrictqualified. Cc m c hin th trong Lit k
7.19 trin lm mt s vn rng ca tim nng.

Vn u tin l trnh bin dch thy l n khng nhn ra cc vng lp dng


10 l mt trong c th c song song. iu ny l do thay i d liu>
array1 c th thay i gi tr ca cc d liu bin> chiu di. Vn l trnh bin
dch khng th bit bao nhiu ln lp ca vng lp s c thc hin, do , n
khng th phn chia cc ln lp li gia nhiu ch . Vn ny c th c
gii quyt bng cch ly mt bn sao ca cc d liu bin> chiu di v s dng
nh l s lp li gii hn vng lp.
iu ny chuyn i cc vng lp thnh mt trong c th c cng nhn bi
trnh bin dch, nhng trnh bin dch vn khng th parallelize n bi v c rng
ca tim nng gia c t d liu> array2 v ghi d liu> array1. Vn ny c
th c gii quyt bng cch lm cho a phng hn ch con tr c trnh
m tr n hai mng. Listing 7.20 cho thy ngun sa i.

Trong mt s trng hp, cc trnh bin dch c th s dng versioning ca vng


lp t ng parallelize m tng t nh trong Lit k 7.19. Trnh bin dch to ra
nhiu phin bn ca vng lp, v cc phin bn thch hp c chn ti thi gian
chy. Mt phin bn ni tip ca cc vng lp c s dng khi c rng ca gia
cc ca hng b nh trong vng lp v cc bin c s dng bi cc vng
lp. Trong cc m trong Lit k 7.19, cc ca hng d liu> array1 sc b danh
vi d liu> array2, d liu> chiu di, hoc cu trc c tr n bi d liu.
Mt phin bn song song c to ra s dng khi khng c rng ca nh vy
Cc k thut ci thin cc c hi m mt trnh bin dch c th t ng
parallelize
mt ng dng c th c tm tt nh sau:
Theo mc nh, hu ht cc trnh bin dch s gi nh rng tt c cc con
tr c th b danh. iu ny c th c gii quyt bng cch lm cho cc bn
sao cc b d liu bt bin, bng cch xc nh mt aliasing gi nh mnh m
hn, hoc bng cch khai bo con tr vi t kha hn ch
Trnh bin dch c th yu cu thm c cho n sn xut phin bn song
song ca tt c cc vng. y c th l mt l c cho n cho php thc hin
song song ca cc ct gim, v d nh c xreduction cn thit bi trnh bin dch
Solaris Studio. Ngoi ra, n c th l mt l c lm thay i ngng m cc
trnh bin dch s xem xt mt vng lp c li nhun parallelize. V d, cc
trnh bin dch Intel c threshold0 c mnh. Cui cng, c th c l c b sung
cho trnh bin dch nhn ra cc vng lp cha cc cuc gi n cc chc nng
ni ti l an ton parallelize; trnh bin dch Solaris Studio i hi c xbuiltin
cho mc ch ny.
Trnh bin dch khng th parallelize vng cha cc cuc gi n cc chc
nng, tr khi h chc chn rng cc cuc gi chc nng l khng c tc dng
ph. Trong mt s trng hp, c th c ch th bin dch c th c t vo
trong m ngun ca ng dng cung cp s khng nh ny. Trong cc trng

hp khc, n c th c c th buc cc trnh bin dch ni tuyn chc nng,


sau s kch hot n parallelize vng lp kt qu.
T phn ny, n nn c r rng rng trnh bin dch c th t ng trch
xut mt s song song t mt tp hp con ca cc ng dng. Kch thc ca cc
tp con c th c tng ln bng cch s dng cc thng tin phn hi c
cung cp bi trnh bin dch v mt s k thut c m t y. Tuy nhin, kh
nng ca trnh bin dch hin ti thc hin song song t ng b hn ch, v
mt s thay i m ngun xut y c th lm gim r ca cc m
ngun.
Ngoi ra, cc API OpenMP cung cp mt cch l song song trong mt
m s bng cch lm thay i ti thiu vo m ngun. Vi hu ht cc trnh bin
dch, n c th c s dng ngoi vic song song t ng nhiu ng dng c
th c song song.
S dng OpenMP sn xut mt ng dng song song
Vi OpenMP, ch th trong cc m ngun c s dng th hin cc cu
trc song song. Nhng ch th ny bt u vi cm t OMP #pragma. Di l c
bin son ph hp, chng c c bi trnh bin dch v c s dng to ra
mt phin bn song song ca cc ng dng. Nu c bin dch yu cu khng
c cung cp, cc ch th c b qua. Cc c im k thut API OpenMP chi
tit cc ch th cng nh th vin cuc gi xc nh hoc sa i cc thng s
thi gian chy nh s lng hin ti ca ch . Nh chng ta thy trong
Chng 3, "C hi Xc nh cho song song," mt li ch ca vic s dng cc ch
th OpenMP l n tch song song t cc thut ton. M ny c th c c m
khng cn phi lo lng v vic lm th no song song c thc hin. Mt s u
im khc s dng OpenMPare nh sau:
Cc ch th ch c ghi nhn khi bin dch vi mt l c bin dch c bit,
do , cc c s cng mt ngun c th c s dng to ra cc phin bn
ni tip v song song ca cc m. iu ny gip n gin ho g li v n l
tng i d dng xc nh xem, cho mt vn nht nh, cc phin bn
song song to ra mt cu tr li khc nhau cho cc phin bn ni tip v do
cho d mt li l v song song hoc cc thut ton ban u.
Mi ch c gii hn trong phm vi cc khu vc ca m m n c p
dng .consequently, cc nh pht trin c th tp trung vo vic lm cho phn
quan trng ca m song song m khng cn phi c quan tm v vic thay
i phn cn li ca cc m h tr song song ny. iu ny thng c gi
l kh nng thc hin song song gia tang.
C l li th ln nht l trnh bin dch v th vin h tr chu trch nhim
cho tt c cc cng vic song song v qun l thi gian chy ca ch .
N c l l d nht chng minh vic s dng OpenMP ch th thng qua
cc v d n gin trong Lit k 7.21. Ch th ca OpenMP c ch nh in m.

Cc m trong Lit k 7.21 cho thy cc ch OpenMP c th c t trn


cc vng lp m n c p dng. Ch th ca OpenMP t gnh nng ca vic
m bo m l an ton thc hin song song trn cc nh pht trin, khng
phi trn cc trnh bin dch. Mc d cc trnh bin dch s sn xut mt phin
bn song song ca vng lp, n l n cc nh pht trin m bo rng y
l mt ti u ha an ton thc hin. Mt v d ca ni ny c th khng an
ton l nu hai mng c mt s mc trng lp, sau phin bn song
song khng th to ra kt qu tng t nh cc phin bn ni tip.
Ch th ca OpenMP c ba phn:
+ #pragma OMP bo cho trnh bin dch m mt ch th OpenMP nhng g
sau l.
+ song song cho trnh bin dch bt u mt vng mi song song. Tr
khi c quy nh khc, tt c cc ch s thc thi m trong khu vc song song.
+ cho cho trnh bin dch rng tip theo cho vng lp phi c thc hin
song song.
Nhiu ch s lm vic trn cc phn c lp ca mt lot cc ln lp
li. Cui cng ca vng lp, cc ch s i cho n khi tt c cc ln lp li
hon tt trc khi phn tip theo ca cc m c thc thi.
Tuyn b c a ra trong on m ny l v d n gin nht c th,
nhng n minh ha chnh xc nhng g cc c im k thut OpenMP nhm
mc ch t c.
S dng OpenMP parallelize Loops.
OpenMP t mt s hn ch i vi cc loi vng m c th c song
song. Cc th vin runtime cn c th xc nh im bt u v im kt thc
cho cc cng vic c giao cho mi thread. Do , nhng hn ch sau y l
cn thit:
+ Vng lp c phi l mt vng lp ca hnh thc ny:for (biu thc init;
biu thc kim tra; biu hin tng)
+ Cc bin vng lp c nhu cu ca mt trong cc loi sau y: a du
hoc khng du s nguyn, mt con tr C, hoc C ++ ngu nhin iterator truy
cp.

+ Cc bin vng lp cn phi c khi to vo mt u ca dy.


+ Cc bin cn c tng (hay gim) bng mt vng lp bt bintng.
+ Cc biu thc kim tra cn phi c mt trong>,> =, <, hoc <=. Vic
so snh cn c vi mt gi tr bt bin vng lp.
Di nhng iu kin ny, n c th cho thi gian chy c nhng vng
lp v phn chia phm vi lp i lp li n cc ch hon thnh cng vic.
Vng m khng tun th cc thng s k thut s cn phi c c cu li trc
khi h c th c song song s dng song song OpenMP cho xy dng.
Runtime Hnh vi ca mt ng dng OpenMP
OpenMP trnh c s dng mt s kt hp ca bin dch h tr cng vi mt
th vin runtime. Bin dch s dng cc ch th trong cc m ngun sn xut
khi thch hp codetogether vi cc cuc gi cn thit vo th vin runtime.
V d, khi cc trnh bin dch gp mt ch nh mt khu vc song song,
trnh bin dch s sn xut ra mt khi mi ca m s c thc hin bi cc
ch song song. Cc th vin thi gian chy l chu trch nhim phn cng
cng vic cho cc ch khc nhau.
OpenMP sau mt loi m hnh ng ba-gia. Cc th vin thi gian chy s
to ra mt i ng cc ch . Khi mt khu vc song song l gp phi, cng vic
s c chia gia cc thnh vin ca i bng ny trong bi. Vo cui ca cc
khu vc, cc ch ban u, gi l cc si tng th, s tip tc thc hin cc m
sau khi khu vc. Cc ch khc, c gi l ngi lao ng, s ch i cho
n khi thread tng th t n khu vc tip theo song song v lm vic mi
c giao cho h. S ch s c s dng c thit lp bi cc bin mi
trng OMP NUM , nhng iu ny c th c iu chnh bi cc ng dng
trong thi gian chy bi cc cuc gi vo cc th vin h tr thi gian chy. V
d, xem xt cc m trong Lit k 7.22.

Khi bin dch v chy, mi ch ca s theo quy nh ca OMP NUM


s thc hin cc khu vc song song. i vi cc trnh bin dch Solaris Studio
nhn cc ch th OpenMP, n cn c xopenmp. L c xloopinfo cho trnh bin

dch cung cp thng tin v song song n c thc hin. Listing 7.23 cho thy
sn lng ca bin dch v chy chng trnh ny. Mi mt trong hai ch thc
hin cc khu vc song song v in ra .

Bin Scoping Bn trong OpenMP Regions Parallel


Mt trong nhng kha cnh phc tp ca song song l cc phm vi bin
c s dng trong cc khu vc song song. Trong Lit k 7.24, c bn bin c
s dng trong cc khu vc song song: i, chiu di, array1, array2 v. Cc bin c
th c scoped hoc l chia s, do mi thread c phiu cng mt bin, hoc
nh t nhn, trong mi thread c bn sao ca chnh n ca bin.
Cc vng lp phn i cn phi c t nhn ca mi ch mi thread
c n bn sao ca chnh ca bin. Cc bin array1 v array2 c chia s. mi
ch hot ng trn mt phm vi ring bit ca cc gi tr, v vy khng c
chia s d liu thc t. Chiu di bin cng c chia s gia cc ch , nhng
v n khng c sa i, n khng quan trng cho d l scoped nh chung
hoc ring. C th thy cch trnh bin dch Solaris Studio scoped cc bin
bng cch s dng cng c phn tch m er src vo i tng tp tin c to ra,
nh th hin trong Lit k 7.24.

Cc quy tc v vic Phm vi bin mc nh trong OpenMP l kh phc tp.


cctm tt n gin ha cc quy tc l h xc nh l bin lp cm ng nh lt
nhn, bin c nh ngha trong m song song nh l t nhn, v cc bin nh
ngha bn ngoi khu vc song song nh c chia s. iu ny cn ph hp
trong cc tnh hung n gin nhng c th khng thch hp trong nhng ngi
phc tp hn. Trong nhng tnh hung ny, n l tt hn t xc nh Phm vi
bin. Cc quy tc xc nh phm vi mc nh c th c v hiu ha bng cch
s dng mc nh mnh (khng c), m s gy ra cc trnh bin dch ra mt li
cho bt k bin m xc nh phm vi khng c xc nh. Cc bin c th c
scoped theo ring hoc chia s bng cch s dng cc khon t nhn (cc
bin) hoc chia s (cc bin), tng ng. Listing 7.25 cho thy ngun gc bin
i t xc nh Phm vi bin.

Gim parallelizing S dng OpenMP


Khng phi tt c cc bin th c scoped hoc l chia s hay t nhn. V
d r rng nht ca mt tnh hung phc tp hn l gim. Listing 7.26 cho thy
mt v d v mt gim. Tng bin c tnh ton bng cch thm tt c cc
phn t trong mng.

Mc d cc d liu bin c khi to vi mt trong cc gi tr bn ngoi


khu vc song song, gi tr ny khng c thng qua vo cc bn sao tin rng
mi thread c c bn trong khu vc song song. Do , cc gi tr c in l
khng xc nh. khi to cc gi tr ca cc bin trong khu vc song song vi
gi tr ca n c t chc trc khi khu vc, cc bin cn c khai bo s dng
cc khon firstprivate (bin). iu ny ni vi trnh bin dch bao gm cc m

m cc bn sao gi tr hin c vo cc bn sao tin c t chc theo tng ch


trong khu vc song song. Listing 7.29 cho thy m i.

Mt trng hp khc l ni m cc gi tr ca mt bin c s dng sau


khi mt khu vc song song. Trong trng hp ny, iu quan trng l gi li
cc gi tr c ghi vo bin ny bi cc thread thc thi lp cui cng ca
vng. iu ny bo tn ng ngha ca chng trnh ni tip. Cc khon cho php
iu ny xy ra l lastprivate (bin). iu khon ny cng c h tr trn cc
phn song song, m s c gii thiu sau. Listing 7.30 cho thy mt v d v
cch s dng lastprivate gi li gi tr cui cng c vit vo bin.

Ci thin vic phn phi S dng Scheduling


Cc lch trnh mc nh cho mt song song cho cc vng lp c gi l
lp lch tnh. Vic lp i lp li c chia u, trong khi lp lin tip, gia cc
ch . Nu c hai ch lm vic hon thnh 100 ln lp li, cc ch u
tin s hon thnh 50 ln lp u tin, v cc ch th hai s hon thnh 50
ln lp li ln th hai. Chng trnh ny hot ng tt trong cc tnh hung m
mi ln lp mt cng mt lng thi gian. Tuy nhin, trong mt s trng hp,
mt s tin khc nhau ca cng vic s c thc hin trong mi ln lp. Do ,
c hai ch c th hon thnh cng mt s ln lp li, nhng ngi ta c th
c nhiu vic phi lm trong nhng ln lp li. Listing 7.31 cho thy mt v d v

iu ny. S ln lp li c thc hin trong cc thi quen calc () ph thuc vo


cc gi tr thng qua vo n. Cc gi tr c chuyn thnh thi quen ch yu
ph thuc vo gi tr ca bin vng lp cm ng i. Vi lch trnh tnh, ch m
c c gn cc gi tr cao hn ca ti s mt nhiu thi gian hon thnh
work ca h.

Listing 7.32 cho thy kt qu ca vic bin dch v chy m ny s dng


mt v hai
.

Trong trng hp ny, i t mt n hai gim thi gian chy t khong


5 giy n 3,5 giy. iu ny l t hn so vi m rng quy m tuyn tnh. L

tng nht, tng gp i s lng thread nn gim mt na thi gian chy. L do


cho vic m rng quy m ngho ny l cng vic c phn b khng u gia
hai ch . Cc ch s tnh ton cc kt qu forthe gi tr thp hn ca ti
s c t lp i lp li hon thnh trong thread thanthe vng trong cng l tnh
ton gi tr cao hn ca ti.
Chng ti c th gii quyt iu ny bng cch thay i lch trnh ca cc
vng lp. Thay v c mt tnh lch trnh, chng ta c th s dng mt lch trnh
nng ng. Mt lch trnh nng ng c ngha rng cng vic c chia thnh
nhiu khi ca cng trnh. Nh mi thread hon thnh mt on ca cng vic,
phi mt on tip theo ca cng vic. iu ny m bo rng mt ch m
hon thnh cng vic ca mnh nhanh hn kt thc ln lm nhiu khi, trong khi
mt si m mt rt nhiu thi gian hon thnh tng on ca cng vic s
kt thc hon thnh t trong s h. Nng ng, lp lch trnh c la chn bng
cch s dng lch trnh quy nh ti khon (nng ng). Listing 7.33 cho thy m
i.

Chy m ny c sa i v kt qu nn tng tng t trong mt thi


gian chy ca 2,5 giymt na n lung runtime gc.
Nng ng, lp k hoch trnh cc vn v phn phi cc cng vic
ng u gia cc ch .
Tuy nhin, n cng phi gnh chu cc chi ph thi gian chy hn. y
khng phi l rt r rng trong v d nh ny. Thay v s dng mt chui m
chng minh n, n l tng i n gin gii thch l do cho s gia tng trong
chi ph.

Vi lch trnh tnh, cc ch c gii hn lp li ca h khi h bt u,


v mt ln hon thnh, h c th ch i mt ro cn cho n khi tt c cc
ch khc hon thnh. Khng c ng b ha gia cc ch trong khu vc
song song.Ngc li, lch trnh nng ng yu cu mi ch hon thnh mt
n v lm vic l ngn hn nhiu so vi nhng chia s ca tng s ln lp.
Mi ln mt si hon thnh on ngn ny ca cng vic, n phi ly cc on
tip theo. Mi ly ca mt on ca cng vic l mt im serialization tim
nng, bi v tt c cc ch phi hp tc xc nh nhng ngi c on
tip theo. V vy, s gia tng chi ph xut pht t hai yu t tim nng: s ni
mt on mi ca cng vic l chi ph truyn thng ly v theinterthread khi mi
on lm vic mi c ly.
Kch thc mc nh ca cc khi cho mt lch trnh nng ng l mt. Mi
thread thc hin mt s lp li duy nht trc khi tr li lm vic nhiu hn. iu
ny c th l qu thp gi tr, kt qu trn khng ng b ng k. Mt tham s
b sung c th c trao cho cc khon lch phi cc kch thc on s dng.
Tham s ny c th l mt gi tr tnh hoc c th c tnh ti thi gian chy.
Listing 7.34 cho thy mt v d v s dng lp lch nng ng vi mt gi tr kch
thc chunk tnh ti thi gian chy

Mt ch lp lch trnh c hng dn. Vi lch trnh hng dn, kch


thc ca cc on cng vic c giao l t l thun vi s lng cng vic cn
li. V vy, ban u cc ch s c giao khi lng cng vic ln, nhng sau
h s nhn c nhng phn nh hn cho n khi tt c cc cng vic c
hon thnh. Lp k hoch hng dn cng c th ly mt tham s ty chn
xc nh kch thc on nh nht c s dng. Kch thc on ti thiu mc
nh l mt s lp li duy nht. Bng lit k 7,35 cho thy mt v d v lp k
hoch hng dn.

C hn hai ch lp lch trnh: t ng v thi gian chy. Lch trnh (t


ng)khon s li cc quyt nh lp k hoch cho cc h thng thi gian
chy xc nh automati-bit. Mnh lch (runtime) cho php cc mi trng
OMP bin SCHEDULE xc nh loi ca lch s.
Lp lch tnh cng c th ly mt tham s kch thc on ty chn. Nu
kch thc chunk c quy nh cho vic lp lch tnh, cng vic c phn chia
thnh cc n v tng ng kch thc chunk nh. Chng c phn phi
round-robin vi ngi lao ng. iu ny c ngha rng mt s ngi lao
ng khng c cng vic c giao cho h hoc c rng mt s ch kt
thc vi nhiu khi cng vic hn nhng ngi khc. Trong trng hp khng c
mt kch thc chunk quy nh, cng vic c chia u trn tt c cc ch .
S dng Phn Parallel Thc hin lm vic c lp
OpenMP phn song song cung cp mt cch khc parallelize m thnh nhiu n v c
lp vi vic c th c giao cho ch khc nhau. Phn song song cho phpcc nh pht
trin gn cc phn khc nhau ca m khc nhau. Hy xem xt mt tnh hung
m trong qu trnh ang c khi to mt ng dng cn thit lp hai danh sch lin
kt. Listing 7.36 cho thy mt v d.

Cc khu vc c gii thiu song song bng cch s dng ch th #


pragma OMP song song. Trong ny
V d, n c kt hp vi cc ch th phn sn xut ra mt tuyn b
n. iu ny xc nh cc khu vc ca m nh c cha mt hoc nhiu phn
ca m m c th c thc hin song song. Mi phn c nhn c xc nh
bng cch s dng ompsection ch th # pragma. iu quan trng nhn thy
cc du ngoc m v gn gi m biu th ofcode phm vi bao gm trong cc
phn song song v cng biu th cc m trong mi song song section.In s vng
mt ca ning rng l, phn song song s ch p dng i vi cc m lineof sau.
Tt c cc ch ch i cui khu vc phn song song cho n khi tt
c cc cng vic c hon thnh, trc khi bt k m tip theo c thc
thi.
Mc d phn song song tng phm vi ca cc ng dng m c th c
song song s dng OpenMP, n c nhng hn ch m cc x l song song l tnh
nh ngha trong m ngun. nh ngha tnh ny song song hn ch mc rng
c th c d kin t ng dng. Phn song song thc s hiu qu ch trong tnh

hung m l mt hn ch, c hi tnh x l song song. Trong hu ht cc


trng hp khc, nhim v song song, m chng ta s tho lun sau , c th
l mt gii php tt hn.
Parallelism nested
Cc OpenMP API cng h tr x l song song lng nhau. y, mt khu
vc song song l gp phi bn trong mt khu vc song song. y c th l mt
cch hu hiu t c tng parallelismby c nhim v hoc cc phn song
song cung cp nhin bng ht song song v sau s dng mt song song
dnh t c song song hn na trong nhim v hoc khu vc.
Nestedparallelism cng rt hu ch trong cc tnh hung m cc thut ton
quy l trong t nhin.
Listing 7.37 cho thy mt v d v x l song song lng nhau ni hai phn
song song cha song song cho rng ch th khi to hai mng cc gi tr. H tr
x l song song lng nhau c th c kch hot thng qua cc bin mi trng
OMP lng nhau hoc thng qua mt cuc gi n b OMP thng lng vo nhau
() vi mt gi tr khc hn khng. Tuy nhin, s h tr ca OMP b lng vo nhau
() l ty chn. N c th c xc nh liu song song lng nhau c kch hot
hay khng thng qua mt cuc gi n OMP c lng vo nhau ()

Tuy nhin, song song lng nhau rt phc tp, do , cuc tho lun chi tit
c tri vi cc vn bn chuyn v ch ca OpenMP.
S dng OpenMP cho ng xc nh nhim v song song
Cc c im k thut OpenMP 3,0 gii thiu nhim v. Mt nhim v l
mt khi m s c
thc hin ti mt s im trong tng lai bng mt trong nhng i bng
ca ch . Mi ln ch th nhim v l gp phi trong thi gian chy, mt nhim
v mi c to ra v thm vo danh sch cc cng vic hy vng s hon thnh.
C s ny cho php OpenMP gii quyt nhiu vn m trc y ch c th
c gii quyt bng cch s dng thanh lch . Nh mt v d, n c th
towrite mt phin bn ca my ch ting vng t Chng 5, "S dng POSIX
Threads," s dng nhim v OpenMP. V d ny kt hp song song gia cc vng,
phn song song, v song song lng nhau, cng vi ng dng tasks.The song
song s dng cc phn song song bt u c mt khch hng v mt si li
xe.
Listing 7.38 cho thy m ngun lm iu ny. Code ny s dng song
song lng nhau, v vy iu ny cn phi c kch hot mt cch r rng bng
cch gi OMP b lng vo nhau () vi mt gi tr khc. Phn song song r rng
yu cu hai ch bng cch s dng cc ch num (2) khon. Lu rng
thc hin chnh xc, m da trn vic c t nht hai CPU o. Nu ang chy trn
mt h thng ch vi mt CPU o duy nht, m s khng hot ng chnh xc bi
v n s b tr hon trong khi thc hin cc echothread () m v s khng bao gi
c c thc hin cc driverthread ().

Listing 7.39 cho thy m cho cc li xe hoc khch hng l mt phn ca


ng dng. y codeuses mt song song cho cc vng lp trong m iu khin
khi ng nhiu yu cu n my song song. Cc m iu khin chia s mt
sockaddr duy nht trong cu trc gia tt c cc ch . Mi thread c mt
bn sao ring ca s bin, m gi ID ca socket l ti m ra cho cc my
ch. Mi ln lp ca vng lp s gi mt chui cc my ch v sau ch i
phn ng ca n.

Listing 7.40 cho thy m my ch. Ny c mt kt ni n v ra mt mt


nhim v mi x l m kt ni n.

M ny s dng ba ch OpenMP. Chng ti gp OMP song song


ch th, m l bt u ca mt khu vc song song, nhng khng phi ch
n OMP,m ni vi trnh bin dch m ch c mt thread l thc thi m km
theo. Nh tho lun trc , tt c cc ch s thc thi m trong khu vc
song song theo mc nh. Ch duy nht ny l trch nhim chp nhn cc kt
ni gi n v sau sn xut cc nhim v mi, x l cc chi tit ca kt ni.
Cui cng, ch th nhim v OMP bao quanh khu vc ca m l c
thc thi nh l nhim v. Dng sui bin c scoped nh firstprivate theo mc
nh, v vy mi cng vic c mt bn sao ring ca bin. Trong cng vic,
bin ny c gn gi tr m n nm gi ti thi im cc nhim v c

to ra. Nhim v mi sau x l sau vng li ca d liu c gi vo cm


ring.
Listing 7.41 cho thy kt qu ca vic bin dch v chy m ny vo mt
chiu bnmy. Cc ng dng kt qu cn phi c lin kt vi cc th vin
socket (lsocket) v th vin cc dch v mng (lnsl). iu quan trng quan st
l cc bi gi v nhn cc thay i cm, ch ra rng cng vic ang c phn
phi trn tt c cc ch c sn.

Gi d liu ring cho Ch


C th thit lp d liu thread-a phng s dng cc ch th
threadprivate OpenMP.Ch th ny lm vic trong mt cch tng t nh t khai
ch , m t trong Chng 5, trong vic a ra mi thread gi mt bn sao
ring ca mt s bin. Listing 7.42 cho thy mt v d v khai bo mt bin
threadprivate.

Cc gi tr ca bin threadprivate c th tn ti song song gia cc vng.


Ccquy nh iu chnh khi iu ny s xy ra l hi phc tp nhng c th c
tm tt nh

yu cu rng s ch ang hot ng l nh nhau cho hai khu vc song


song.C nhng hn ch khc v cc bin threadprivate. Nu m ny song songs
dng cc nhim v v cc gi tr ca bin ph thuc vo th t m cc nhim v
c hon thnh, sau gi tr ca n s khng th on trc.
Trong phn ni tip ca trnh thc thi ca ng dng, cc bin s tr li gi
trt chc bi cc ch ch. iu ny c th c chng minh bng cch s
dng m c hin th trong Lit k 7.43.The bin i l si nhn. Trong thread
tng th, n c thit lp gi gi tr -1, nhng khu vc trn c chng ng
song song, n c thit lp gi thread ID. Mi ch s thit lp gi tr ca i
cho ID ch ca n. ID ca thread tng l s khng. Bn ngoi khu vc song
song, cc tham chiu n cc bin i gii quyt cc gi tr c t chc bi cc
ch ch. V vy, phin bn cui cng ca bin i s bng khng.

L do chnh s dng cc bin threadprivate l gi mt gi tr trong


mt khu vc song song, khng nht thit phi qua vng song song. Do , c th
c cc yu cu sao chp mt gi tr vo mt khu vc. Cc bn mnh copyin
gi tr t cc si tng thnh cc gi tr threadprivate t chc bi cc ngi lao
ng. iu khon ny c th c t trn cc vng song song. Listing 7.44 cho
thy mt v d v cch s dng mnh copyin. Cc gi tr ca bin i trong khu
vc song song s l -1 cho ch .

Ch th copyprivate c th c s dng truyn b cc gi tr ca mt


threadprivate bin tnh trong mt khu vc duy nht cho tt c cc ch . Mc
d iu ny p dng cho cc singledirective, tc ng ca mnh l phn
cui ca khu vc duy nht m gi tr c sao chp t cc ch duy nht cho
tt c cc ch khc. iu ny c th c s dng cho vic khi to cc bin
threadprivate hoc s ph bin ca mt gi tr mi cho tt c threads.Listing
7.45 cho thy mt v d v cch s dng copyprivate. Trong v d ny, ch s
nhn c gi tr 2 cho bn tin ca h bin i.

Kim sot Runtime Environment OpenMP


Cc mi trng runtime OpenMP c th c kim sot trong ln n ba
cch khc nhau. Chng ta gp cc bin mi trng OMP NUM thit lp
s lng cc ch m chng trnh s dng. Tuy nhin, n cng c th thit lp
ny thng qua cc cuc gi chng trnh i vi cc th vin thi gian chy hoc
thm ch l cc khon t vo cc ch th trong m ngun. Khon s ghi ln
cc thit lp t cc cuc gi n cc chc nng API, v nhng willoverride bt k

ci t mi trng. Phn ny tho lun v cc thit lp khc nhau c th c


cu hnh v cc ty chn c sn cho cu hnh chng.
Thit lp S ch
Nh thy trc y, s lng cc ch c s dng bi mt ng
dng OpenMP c th c thit lp thng qua mi trng bin OMP NUM . N
cng c th thit lp s lng cc ch bng cch s dng chc nng gi OMP
thit num (), nh th hin trong Lit k 7.46.Calls OMP thit num () thay
i gi tr mc nh cho tt c cc vng song song tip theo. N c th xc nh
s lng cc bng cch s dng chc nng gi OMP c max (). Cc chc
nng gi OMP get num () s tr v mt ID duy nht cho mi ch .

S ch cho mt khu vc song song c th c quy nh trong cc ch


(ch ) khon m ngun usingthe num. Cc gi tr cho s lng cc ch
c th c c nh, hoc n c th l mt s nguyn tnh ton da trn mt s
yu t khc. Listing 7.47 cho thy mt v d v cch s dng mt gi tr c nh
cho vic ny.

Mnh num s ghi ln cc gi tr mc nh ch cho song song single


ny
khu vc. Cc khu vc song song ti s li ly gi tr mc nh cho s lng
, tr khi iu ny cng c mt khon num.
C mt bin mi trng khc c th thit lp s lng cc ch . OMP
THREAD LIMIT t s ti a ca ch c cho php. l mt thc hin quy
nh v vic gii hn ny s c p dng trn tt c cc n lc s dng
hn gii hn ny. Cc gi tr cho gii hn ny c th thu c thng qua cc ch
gii hn OMP get chc nng gi ().
An thc hin OpenMP c th tn vinh cc bin mi trng OMP NNG
NG.
Bin mi trng ny c th c thit lp hoc l ng hoc sai. Nu n
c thit lp l true, sau thc hin OpenMP c th phn ng vi cc iu
kin v thi gian chy s dng t hn so vi yu cu cho bt k khu vc song
song. Bin ny c th c thit lp trong thi gian chy vi mt cuc gi n
OMP thit lp nng ng (), v gi tr ca n c th c c bi mt cuc gi
n OMP c c nng ng ().
Thit Scheduling Runtime Vng
Vic lp k hoch cho vng vi mnh lch trnh thi gian chy c kim
sot vi cc bin mi trng OMP LCH. Cc lch trnh cng c th c thit lp
trong thi gian chy thng qua mt cuc gi n OMP b lch trnh (), v cc lch
trnh hin ti c th thu c thng qua mt cuc gi n OMP c c lch trnh
(). Cc chc nng cuc gi c c v thit lp lch trnh nhn hai tham s.
u tin l mt s nguyn cho bit lch trnh yu cu. Th hai l kch thc on
(tham s th hai s c b qua cho lch trnh m khng yu cu mt kch thc
chunk). Cc lch trnh c sn c OMP sched tnh, OMP sched nng ng, OMP
sched hng dn, v OMP sched t ng. Listing 7.48 chng minh bng cch s
dng cc cuc gi c c v thit lp lch trnh.

Xc nh Kch Stack cho Worker Threads


Kch thc ngn xp ca cc ch tng th c thit lp thng qua cc
mi trng h iu hnh bnh thng. iu ny c th c thay i bng cch
s dng lnh ulimit trn nn tng UNIX-like. Trn Windows, mc nh kch thc
ngn xp c thit lp ti thi gian lin kt.
Kch thc mc nh ngn xp cho mi si nhn to ra bi thi gian chy
th vin ca OpenMP thc hin c th. Ty thuc vo yu cu ngn xp khng
gian, iu ny efaultmay khng . Cc bin mi trng OMP STACKSIZE xc
nh ngn xp khng gian cho cc ngi lao ng. Khng c cuc gi vo cc
th vin runtime m b kch thc ny.
Cc bin mi trng c mt s vi mt hu t bt buc. Mt s khng c
hu t c coi l l kilobyte, hu t B ch ra rng s lng l byte, hu t K ch
ra rng n l kilobyte, hu t M c din gii theo megabyte, v hu t G ch
gigabyte.
ang ch lm vic hon thnh
i vi hu ht cc cu trc song song, c mt ro cn tim n cui
m bo rng tt c cc ch hon thnh cng vic ca mnh trc khi khi
m tip theo c bt u. Phn ny m t cc ty chn trong OpenMP cho vic
thay i hnh vi mc nh ro cn.
Cho php Ch Tip tc Execution Ngoi mt Region Parallel
Mnh nowait p dng song song vi, phn song song, v ch duy nht.
Tt c nhng ch th c mt ng ch i cui khu vc song song. S dng cc
ch th c ngha l cc ch trong khu vc song song s tip tc vo vng m
tip theo sau khi h hon thnh mt hin ti m khng cn ch i cho cc
ngi lao ng khc hon thnh cng vic ca h. Listing 7.49 cha mt v
d v hai cho rng vng lp qua hai dy khc nhau trn hai b khc nhau ca
cc bin. Mt khi cc ch hon thnh cc vng lp u tin, khng c l do
ti sao h khng nn bt u lm vic vo vng th hai. Ty chn ny c th
c biu th bng cch dn nhn cc vng u tin vi cc khon nowait. Phn
th hai gi khon ch i tim n, v vy thc hin s khng c tip tc cho
n khi tt c cc ch hon thnh cng vic ca h vo vng th hai.

Ch Gy i n khi tt c cc ch hon thnh cng vic ca


h Ch th ro cn t mt ro cn r rng trong mt khu vc song song. Trong
Lit k 7.50, ch th hng ro c s dng vi ch th tng th m bo rng
tt c cc ch ch i trong khi thread tng th hon thnh nhim v ca
mnh. Cc ch th tng th khng c mt iu khon ch i tim n, v vy m
khng ch hng ro, cc si n c th in sn lng ca n trc khi phn
master. Vi ro cn ni ny, cc m s lun lun in ra chui "Master thread"
trc khi n in ra chui "Single thread".

ang ch All Tasks Child hon thnh Khi mt ng dng c s dng


song song nhim v, n c th hu ch ch i cho tt c cc nhim v tr em
hin nay t mt vng song song hon thnh trc khi tip tc thc hin. Ch
th taskwait m bo rng iu kin ny c p ng. Hy xem xt cc m c
hin th trong Lit k 7.51

Trong v d ny, ch th taskwait c s dng m bo rng cc cng


vic con hon chnh trc khi nhim v ph huynh thc hin cng vic ca mnh,
l in n cc gi tr ca bin i. Trong trng hp khng c ch th taskwait, n
s c th cho cc nhim v ph huynh in sn lng ca n trc cc nhim v
con in ca h. Listing 7.52 cho thy u ra t ng dng ny.

Hn ch vic Threads Thc hin mt Vng M


C nhng tnh hung m n l cn thit hn ch s lng cc ch c
th thc thi mt khi m. V d, c th c l do thut ton m ch c mt ch
duy nht nn thc hin mt vng m. Ngoi ra, cho ng n, n c th l cn
thit m bo rng ch mt ch duy nht ti mt thi im thc thi mt
vng m. n cng c th l cn thit hn ch s lng cc thi mt khu vc

song song nu khng c cng vic cho ch hn hon thnh. Phn ny


m t nhiu cch m s lng cc ch c th c hn ch.
Thc hin mt Vng M S dng mt ti c thn
Chng ti gp nhau ch th duy nht trong phn "S dng OpenMP cho
ng Defined Nhim v song song. "Ch th duy nht xc nh rng ch c mt
ch s thc thi m trong khu vc. Tt c cc ch khc s i cho m ny
s c thc hin trc khi tip tc. Mnh nowait c th c s dng nu
cc ch khc nn tip tc thc hin trc khi cc ch duy nht hon thnh
thc hin. i vi mt v d v cc ch th n, xem Lit 7.40..
Cho php Ch Thy ch n Thc hin mt Vng M
Ch th ca tng th l tng t nh cc ch th duy nht ch n ch xc
nh mt Ch cn thc hin cc khu vc km theo. C hai s khc bit gia
cc ch th. u tin l n xc nh rng cc ch tng th l mt trong s
lm cng vic; cc ch th duy nht khng xc nh ch s thc hin cng
vic. S khc bit th hai l cc ch th tng th khng gy ra cc ch khc
ch i cho cng vic trong khu vc s c hon thnh trc khi tip tc.
Ch th ca thy rt hu ch trong cc tnh hung m ch c mt thread cn
hon thnh cng vic. N m bo rng cng mt ch lun lun thc hin
cc khu vc ca m, v vy bt k bin thread-a phng s mang theo hn t
hnh trc . iu ny c th hu ch cho vic pht sng v chia s cc gi tr
ca cc bin gia cc ch . Mt v d v cc ch th tng th c th c nhn
thy trong V d 7.50.
Hn ch Thi hnh mt Vng M mt ch n
Cho ng n, i khi n l cn thit hn ch mt vng m n ch
c thc hin bi mt ch duy nht ti mt thi im. iu ny c th t
c bng cch s dng ch th quan trng. Listing 7.53 cho thy mt cch rt
hiu qu ca vic thc hin gim bng cch s dng mt ch th quan trng
m bo rng ch c mt si thay i bin gim bt c lc no.

Cc ch th quan trng c mt tn ty chn. iu ny cho php cc phn


quan trng cng bo v nhiu vng m. V d, tt c cc truy cp n tng s
bin c th c bo v bi mt phn quan trng ca tn tng phn quan trng,
nh th hin trong V d 7.54.

Thc hin cc hot ng nguyn t


i khi, tt c nhng g cn thit l nhng thay i nguyn t ca mt
bin. OpenMP h tr ny thng qua cc ch th nguyn t m ch p dng i vi
vic sa i sau y ca mt bin. Listing 7.55 cho thy cch gim c th c
m ha bng cch s dng mt ch th nguyn t. Ch th ca nguyn t m bo
chnh xc hnh vi nhng c th khng c bt k nhanh hn bng cch s dng
mt phn quan trng.

S dng Locks Mutex


OpenMP cng h tr cc tnh linh hot c cung cp bi kha mutex,
c h tr thng qua cc kha OpenMP. Mt kha c cng b l loi OMP
kha t v khi to thng qua mt cuc gi n kha OMP init (). Cc kha b ph
hy vi mt cuc gi n OMP tiu dit lock (). c c cc kha, cc m gi
thit lp kha OMP (), v pht hnh cc kha, cc cuc gi ang OMP kha
unset (). M ny c th kim tra xem kha c sn bng cch gi kha kim tra
OMP (). C th vit li m gim s dng OpenMP kha, nh th hin trong Lit
k 7.56.

C iu kin tip Serial Thc hin Regions Parallel


Trong mt s trng hp, n c th hu ch xc nh cc iu kin khi
mt khu vc song song phi c thc hin bi mt ch duy nht. iu ny
tit kim phi t c hai phin bn ni tip v mt phin bn song song ca cc
khi m trong m ngun ca ng dng.
Nhn dp r rng nht lm iu ny s l khi khng c cng vic
bin minh cho vic s dng nhiu hn mt thread. Mnh if () c th c p
dng cho mt ch th song song xc nh cc iu kin, khi vng ny nn c
thc hin trong parallel.Listing 7.57 cho thy mt v d v cch s dng ch th
ny. Cc m ny s thc hin cc khu vc s dng nhiu ch ch nu chiu di
bin c gi tr ln hn 1000.

Mt s dng cho cc khon nu () s l trong tnh hung m s dng nhiu


ch thc thi mt khu vc ca on m s gy ra cc vn ng n. V
d, nu mt vng lp tnh ton mt s chc nng ca hai vect, m i khi c
gi vi vector c b danh. Mnh if () c th c s dng kim tra xem cc
b danh vect v thc thi m song song ch khi khng c rng ca l hin ti.
m bo lut trong mt khu vc c phi l song song
Thc hin theo th t
Trong mt s trng hp, n c th l cn thit m bo rng mt phn
ca m c thc thi theo th t ging nh m s serial s thc hin n. Tht
khng may, nh mt sp t c v khng cho php m c c li ch y
ca vic s dng nhiu ch , nhng n phi cho php mt s li ch c c
t t song song.
OpenMP h tr cc ch th ra lnh, trong m bo rng trnh t thc
hin song song cng ging nh th t ni tip. Cc ch th cn phi c p dng
cho cc khu vc song song, v cc vng lp cng cn phi c xc nh l mt
vng lp ra lnh s dng mnh lnh trn song song cho ch th. Listing 7.58 cho
thy cch ra lnh thm khc.

Cc ch th ra lnh l hu ch nht khi p dng cho vng m khng s dng


tnh lp lch trnh. Vi lch trnh tnh mc nh c s dng trong v d ny, ch
u tin s thc hin phn u ca cc ln lp li, cc ch th hai ca
phn th hai, v nh vy. K t khi khu vc t hng cn c thc hin theo th
t ni tip, trnh th hai kt thc ch i cc khi m lnh cho n khi thread
u tin hon thnh tt c cc cng vic c giao. iu ny c ngha rng
cng vic c ng, nhng mi on ni tip cng vic c thc hin bi
mt ch khc nhau.
Cc ch th ra lnh l mt cch hu hiu khm ph tc ng ca vic
lp lch trn th t m lp i lp li c giao cho ch . Listing 7.59 cho thy
m sa i s dng lp lch nng ng.

Listing 7.60 cho thy nh hng ca s thay i ny trong lch trnh. Nng
ng, lp k hoch gy ra hai ch lm vic vi cc kch thc on mc
nh ca mt s lp li duy nht, do , hai ch lun phin thc hin lp i lp
li

Sp l ci thin Workload Balance


The song song vi ch th ch p dng cho cc vng tip theo. Nh mi khi,
n l tt nht p dng song song vng ngoi cng, v iu ny lm gim s
lng ng b cn thit. Tuy nhin, mt chuyn i thp m cho cc vng ngoi
s hn ch s lng ti a ca ch m c th c s dng song song. Trong
nhng trng hp ny, n c th thch hp parallelize cc vng trong, v iu
ny c th c mt s ln lp li cao hn. M khng bit m chuyn i cho hai
vng, n khng th quyt nh nhng chin lc thch hp hn.
Tuy nhin, OpenMP cung cp mt cch trnh cc vn vi cc vng
ngoi cng c mt s chuyn i thp, m l thu gn vng bn trong v bn
ngoi thnh mt tuyn duy nht. Mnh lm iu ny l s sp , trong
c s vng lp sp nh mt tham s. Listing 7.61 lm mt v d v mt m
ni cc vng ngoi c mt s chuyn i thp, v s dng cc khon sp php
nhn rng n con s cao hn ca ch .

Nu khng c mnh sp , vng ngoi cng s ch bao gi c quy m


n hai ch . Vi mnh sp , vng lp kt hp c th ln n mt l
thuyt 20.000 bi (mc d cc chi ph ng b ha s gy ra cc m chy t
t xa trc khi m m t c). S dng mnh sp c th gii thiu
thm overhead vo khu vc song song, do , n l gi tr nh gi xem cc iu
khon s ci thin hiu sut hoc gy ra mt s mt mt hiu sut.
Thi hnh Memory Tnh nht qun
Thng nht b nh l khi cc gi tr t chc trong s ng k bi mt si
ph hp vi nhng t chc trong b nh. Nu thread khc sa i mt bin c
t chc trong mt ng k bi ch ny, cc gi tr tr nn khng ph hp
v cn phi c refetched t memory.OpenMP ch th c thc thi nht
qun b nh thch hp, v vy n l him cho n c mt mi quan tm
forcodes song song s dng OpenMP. Tuy nhin, c th c tnh hung m n l
cn thit t thc thi nht qun.
OpenMP cho php cc nh pht trin xc nh mt cch r rng nhng
ni trong m ni cc bin cn phi c lu vo b nh hoc np t b nh bng
cch s dng directive.Unless tun ra cc ch nh mt danh sch cc bin, n
c p dng cho tt c cc ch trng thi ban u. Nu mt danh sch cc
bin c quy nh, cc bin ny hoc l s c lu tr vo b nh hoc c
np li t b nh ph thuc vo hnh ng l necessary.The v d th hin trong
Lit k 7.62 s dng c cc ch tun ra sn xut ra mt hng ro
ynchronization gia mt cp bi.

Cc ch tng th phn b mt mng vi mt yu t duy nht cho mi


ch . Ti khu vc song song, mi thread t ch mc ca h trong mng
c mt v sau ch i cho thread lng ging ca h thit lp ch mc ca
h l khc khng. Mi ch c pht hnh t cc ro cn khi si lng ging
n. Ch th tun ra c s dng m bo rng cc ch hin ti lu gi tr
ca n vo mng v cc ch hin ti lin tc ti li cc gi tr ca hng xm
ca mnh cho n khi thread lng ging t n vo mt.
Mt v d v song song
Nh mt v d v song song t ng v song song s dng OpenMP, chng
ti s xem xt mt m ngn xc nh xem mt im trong mt ma trn l
trong hay ngoi ca tp Mandelbrot. Listing 7.63 cho thy m.

Cc m trong Lit k 7.63 cha mt vng lp n. Vng lp ny l khng


thch hp cho t ng
song song vi hai l do:
+ Mi ln lp ph thuc vo s lp trc. N khng phi l c th chovic
tnh ton cc h tip theo bt u cho n khi lp i lp li trc hon
thnh. Thc t ny c ngha l cc vng lp c th c tnh ton ch trong ni
tip.
+ S lp vng lp cho n thi im hoc thot mt vng trn bn knh 2
trung vo ngun gc hoc s lng lp ti a vt qu. K t khi s chuyn i l
cha bit n khi vng lp c thc thi, n khng phi l c th giao vic
nhiu ch bi v n khng c bit bao nhiu cng vic l thc hin.
Listing 7.64 cho thy m chnh, bao gm ch th OpenMP song song. iu
nyphn b mt ma trn ln gi kt qu ca cc php tnh v sau tnh cho
mi im trong ma trn cho d l trong hay ngoi ca tp Mandelbrot. Cc
vng cui cng trong m ny l hon ton c m bo rng trnh bin dch
khng loi b cc vng chnh bi gi tr ny khng c s dng.

c c t ng song song vi cng vic, cc hnh ch nht thng


thng phi c inlined trnh bin dch c th xc nh song song l an
ton. Solaris Studio bin dch equire mt mc ti u ha ca t nht xO4.
Listing 7.65 cho thy kt qu ca bin dch m. Trnh bin dch song song cc
cuc gi inlined Inset, nhng n ch c th parallelize vng lp trong cng.
Vic lp vng ngoi cng trn mt mng ca cc con tr, v bi s ca nhng

con tr c th tr n cc a ch b nh; do , trnh bin dch khng th


parallelize cc vng ngoi v vn rng ca

Cc m ngun trong V d 7.64 bao gm mt ch th OpenMP lm


cho ngoi cng vng lp song song. Listing 7.66 cho thy kt qu ca vic bin
dch v chy m OpenMP vi s lng khc nhau ca ch .

M ny mt khong 29 giy ca thi gian tng chy vi mt ch


duy nht, khong 21 giy vi hai ch v ch hn 23 giy vi ba ch . iu
ny l xa ton l tng, s l thi gian chy gim t l thun vi s lng cc
chy. Ch rng thi gian s dng cho cc m vn khng i. iu ny c
ngha l rng khi lng cng vic c thc hin, bt k s lng cc
used.This ch ra rng t l ngho khng phi l kt qu ca cc ti phi thc
hin mt s lng ngy cng tng ca cng vic. Nu s lng cng vic khng
tng, n cho thy rng nhng vn rng l kt qu ca cng vic c phn
phi km gia cc ch .
Hnh 7.1 cho thy xem timeline t Performance Analyzer Solaris Studio
chy m vi hai ch . Quan im ny cho thy hot ng ca hai ch trong
ton b thi gian ca chy. C ba dng hin th. Dng u cho thy cc hot
ng ca tt c cc ch trong ng dng. iu ny cho thy rng ban u c
hai ch c chy hon ton trong ch ngi dng, v khong 8 giy vo
chy, ch c mt trong hai ch l trong ch ngi dng trong khi thread
khc l nhn ri.

Hai dng khc cho thy cc hot ng ca hai ch . Ngi u cho thy
thread ch hot ng trong ton b thi gian chy, nh l c mong i
ca cc m hnh thc hin OpenMP. Cc ch th hai l hot ng ch trong 8,5
giy u tin ca chy. iu ny khng nh rng t l ngi ngho l v mt s
phn phi khng ng u v cng tc gia hai ch .
N rt d dng hiu c s mt cn bng khi lng cng vic ny
xut pht t khi thc t hnh nh ang c tnh ton c xem. Hnh 7.2 cho
thy nhng hnh nh ang c computed.One c tnh ton mt na
tri, khc na bn phi. i vi mt s lng ln cc thepoints, mu en trong
hnh nh, n ch mt mt vi ln lp xc nh thepoint khng phi l trong
b ny. Tuy nhin, n c gii hn ti a v s ln lp xc nh rng mt im
l, hoc c th l, trong tp; nhng im ny c mu trng.
Cc khu vc c t mu en trong hnh chp tng i vi ln lp v tnh
ton mt cch nhanh chng. Cc khu vc c t mu trng mt nhiu ln lp li
v do mt mt thi gian tnh ton. So snh hai na tri v bn phi ca
hnh nh, n l r rng rng na bn phi cha cc im nh mu en hn mt
na tri. iu ny c ngha thatthe tnh ton mt na bn phi s mt t thi
gian hn vi thread tnh ton mt na tri. y l ngun gc ca s mt cn
bng khi lng cng vic gia hai ch . Sa cha cc s mt cn bng khi
lng cng vic tng i d dng v n ch l mt vn thay i mnh lch
trnh cho m song song. D lch trnh nng ng hoc c hng dn Ould c
s dng. Listing 7.67 cho thy m sa i s dng lp lch nng ng

Listing 7.68 cho thy cc nhn rng kt qu t m ny. Vi lch trnh nng
ng,cng vic c phn b u trn cc ch , dn n tng hiu sut gn
nh tuyn tnh nh s lng cc tng.

tm lc
Chng ny tho lun lm th no cc trnh bin dch c th kch hot
song song hoc l t ng hoc bng cch thm ch th OpenMP vo m ngun.
By gi bn cn phi lm quen vi nhng gii hn song song t ng v cc vn
in hnh trong cc m ngun lm gim kh nng ca trnh bin dch t
ng parallelize m. Bn cng s c th xc nh v khc phc nhng vn
ny, dn n m vi ci tin rng.

Bn cng nn hiu th no ch OpenMP c th c s dng sn xut


song song ng dng. Bn s bit cc ch th ng b ha khc nhau v cc i
tng c cung cp bi cc c im k thut OpenMP. Bn cng s bit lm
th no p dng hoc sa i cc ch th OpenMP ci thin t l ca mt
ng dng.

You might also like