You are on page 1of 58

I HC QUC GIA H NI

TRNG I HC CNG NGH










Trnh Cng Qu





PHT TRIN NG DNG SONG SONG VI OPENMP






KHA LUN TT NGHIP H I HC CHNH QUY

Ngnh: Tin hc















H NI-2005

I HC QUC GIA H NI
TRNG I HC CNG NGH




Trnh Cng Qu





PHT TRIN NG DNG SONG SONG VI OPENMP






KHA LUN TT NGHIP H I HC CHNH QUY

Ngnh: Tin hc

Cn b hng dn: TS Nguyn Hi Chu

















H NI-2005


Li cm n
iu u tin cho ti gi li cm n su sc n TS. Nguyn Hi Chu ngi
hng dn ch bo ti trong sut qu trnh thc hin ti. Thy cho ti nhng
li khuyn b ch, dy cch vit bo co - mt k nng khng th thiu i vi mt
nh nghin cu. Kha lun s khng hon thin nu thiu s hng dn ca thy t
vic nghin cu l thuyt n thc nghim v hon thnh kha lun.
Ti xin cm n cc thy trong b mn Cc H Thng Thng Tin gip ti
trang thit b my mc trong qu trnh thc nghim. Ti cng xin cm n n tp th
lp K46CC c nhng ng gp qu bu cho kha lun cng nh trong qu trnh
hc tp.
V cui cng ti xin cm n n gia nh, bn b nhng ngi lun quan tm
c v ng vin ti trong sut thi gian hc tp v lm kha lun.
H ni:thng 6 nm 2005
Trnh Cng Qu





















Tm tt ni dung
Ngy nay tnh ton song song ra i vi s thc thi ng thi ca nhiu ti
nguyn my tnh gip gii quyt cc bi ton i hi gii hn v thi gian x l v
vi d liu ln nh bi ton d bo thi tit, bi ton m phng tai nn giao thng ...
V c rt nhiu chun h tr cho cho vic lp trnh song song nh MPI (Message
Passing Interface) h tr lp trnh song song trn m hnh b nh phn tn, OpenMP
(Open MultiProcesing) h tr lp trnh song song trn m hnh chia s b nh chung,
Pthread h tr lp trnh lung ...
Trong khun kh ca kha lun vn ny chng ti i vo nguyn cu chi
tit chun OpenMP v ng dng ca OpenMP vo vic song song ha bi ton tnh
lc tng tc gia cc ht trong h m phng N-body.






















MC LC

M U....................................................................................................................................1
Chng 1 Tng quan v tnh ton song song......................................................................... 3
1.1 Tnh ton song song.......................................................................................................... 3
1.1.1.Tnh ton song song l g........................................................................................... 3
1.1.2 Ti sao phi tnh ton song song ............................................................................... 3
1.2 Phn loi my tnh song song........................................................................................... 4
1.2.1 Phn loi da trn s tng tc gia cc BXL.......................................................... 4
a.Chia s b nh chung................................................................................................... 4
b. B nh phn tn.......................................................................................................... 6
c.My tnh vi b nh lai ............................................................................................... 6
1.2.2 Phn loi da trn c ch iu khin chung.............................................................. 7
a.H thng a x l mt lnh nhiu d liu (SIMD)...................................................... 7
b.H thng a x l nhiu dng lnh nhiu dng d liu (MIMD) ............................... 8
1.3 Cc m hnh lp trnh song song ...................................................................................... 8
1.3.1 Tng quan v m hnh lp trnh song song ............................................................... 8
1.3.2 M hnh chia s b nh chung................................................................................... 9
1.3.3. M hnh lung .......................................................................................................... 9
1.3.4 M hnh truyn thng ip ...................................................................................... 10
1.3.5. M hnh song song d liu ..................................................................................... 11
1.3.6. M hnh lai ............................................................................................................. 11
1.4 Hiu nng ca tnh ton song song................................................................................. 12
1.4.1 nh lut Amdahls ................................................................................................. 12
1.4.2 Cn bng ti ............................................................................................................. 13
a.Cc thut ton cn bng ti tp trung......................................................................... 13
b.Cc thut ton cn bng ti phn tn hon ton ........................................................ 14
c.Cc thut ton cn bng ti phn tn mt na ........................................................... 14
d. S b tc(Deadlock) ................................................................................................. 14
Chng 2: Lp trnh song song vi OpenMP...................................................................... 16
2.1 Gii thiu v OpenMP.................................................................................................... 16
2.1.1 Khi nim c bn v OpenMP ................................................................................ 16
2.1.2 Lch s ca OpenMP............................................................................................... 16
2.1.3 Mc ch v ng dng ca OpenMP....................................................................... 17
2.2 M hnh lp trnh song song OpenMP ........................................................................... 17
2.2.1 Song song ha da trn c ch lung (Thread based parallelism) .......................... 17
2.2.2 M hnh song song hin (Explicit Parallelism) ....................................................... 17
2.2.3 M hnh Fork-Join................................................................................................... 17
2.3 Cc ch th trong OpenMP.............................................................................................. 18
2.3.1 Khun dng ch th trong OpenMP.......................................................................... 18
2.3.2 Phm vi ca ch th .................................................................................................. 18
2.3.3 Cu trc vng song song ......................................................................................... 20
2.3.4 Cu trc chia s cng vic ....................................................................................... 21
2.3.5. Cu trc ng b .................................................................................................... 28
2.3.5.1 Ch th MASTER.............................................................................................. 29
2.3.5.3 Ch th BARRIER............................................................................................. 30
2.3.5.4 Ch th ATOMIC .............................................................................................. 31
2.3.5.5 Ch th FLUSH ................................................................................................. 31
2.3.5.6 Ch th ORDERED........................................................................................... 32
2.3.6 Ch th THREADPRIVATE.................................................................................... 32
2.3. Cc mnh trong OpenMP ......................................................................................... 33
2.4.1 Mnh PRIVATE................................................................................................. 33
2.4.2 Mnh FIRSTPRIVATE...................................................................................... 33
2.4.3 Mnh LASTPRIVATE....................................................................................... 34
2.3.4 Mnh SHARED.................................................................................................. 34
2.3.5 Mnh DEFAULT................................................................................................ 34
2.3.6 Mnh REDUCTION........................................................................................... 34
2.3.7 Mnh COPYIN................................................................................................... 35
2.5. Th vin Run-Time ....................................................................................................... 35
2.5.1 OMP_SET_NUM_THREADS................................................................................ 36
2.5.2. OMP_GET_NUM_THREADS.............................................................................. 36
2.5.3. OMP_GET_MAX_THREADS............................................................................. 36
2.5.4. OMP_GET_THREAD_NUM............................................................................... 36
2.5.4. OMP_GET_NUM_PROCS.................................................................................... 36
2.5.5. OMP_IN_PARALLEL........................................................................................... 37
2.5.7. OMP_SET_DYNAMIC......................................................................................... 37
2.5.8. OMP_GET_DYNAMIC......................................................................................... 37
2.5.9. OMP_SET_NESTED............................................................................................ 37
2.5.10. OMP_GET_NESTED........................................................................................ 37
2.5.11. OMP_INIT_LOCK............................................................................................... 38
2.5.12. OMP_DESTROY_LOCK.................................................................................... 38
2.5.13. OMP_SET_LOCK .............................................................................................. 38
2.5.14. OMP_UNSET_LOCK.......................................................................................... 38
2.5.15. OMP_TEST_LOCK............................................................................................ 38
2.6. Cc bin mi trng trong OpenMP ............................................................................. 39
2.6.1. OMP_SCHEDULE................................................................................................. 39
2.6.2. OMP_NUM_THREADS........................................................................................ 39
2.6.3. OMP_DYNAMIC .................................................................................................. 39
2.6.3. OMP_NESTED...................................................................................................... 39
2.7. Trnh bin dch OpenMP............................................................................................. 39
Chng 3: Bi ton m phng N-Body ............................................................................... 40
1.1. Gii thiu chung v bi ton m phng N-body ........................................................... 40
1.2. M t bi ton N-body................................................................................................... 41
1.3. Cc bc trong quy trnh gii bi ton m phng N-body............................................ 42
1.4. Kt qu thc nghim...................................................................................................... 47
1.4.1. nh gi, nhn xt ................................................................................................. 49
KT LUN.................................................................................................................. 49
HNG PHT TRIN TRONG TNG LAI.......................................................... 50
Bng cc ch vit tt

Ch vit tt Ting Vit Ting Anh
API Giao din
lp trnh ng
dng
Application Program Interface
BXL B x l
MIMD a lnh a
d liu
Multiple instruction multiple data
MPI Giao din
truyn thng
ip
Message Passing Interface
OPENMP Open MultiProcessing
SIMD n lnh a
d liu
Single instruction multiple data
SMP a x l i
xng
Symmetric MultiProcesor
UMA Truy cp b
nh mt
cch thng
nht
Uniform Access Memory














1
M u
Ngy nay s pht trin ca cng ngh c thch thc bi lp bi ton ln cn
gii quyt trong nhiu lnh vc ca i sng x hi nh d bo thi tit, khai ph d
liu, x l nh, m phng tai nn xe hi, t ng ha... Lp bi ton ny va i hi
p ng thi gian thc va yu cu x l trn khi d liu ln. gii quyt bi ton
ny i hi cc b x l c hiu nng cao.
X l song song ra i vi mc ch lm tng kh nng tnh ton ca my tnh
bng cch kt hp nhiu b x l tham gia ng thi vo qu trnh x l thay vi vic
s dng cc my tnh chuyn bit t tin.
Vi s pht trin cua kin trc my tnh v mng my tnh cho thy rng trong
tng lai cho thy x l song song khng nhng c thc hin trn nhng siu my
tnh m c th c thc hin trn cc trm lm vic, my tnh c nhn, mng my
tnh. Nhng hu ht cc thut ton ngy nay u l nhng thut ton tun t. Cho nn
cn xy dng nhng thut ton, cu trc d liu cho php x l mt cch song song.
X l song song gip gii quyt hiu qu rt nhiu bi ton ln c bit l bi
ton m phng N-body. l mt bi ton m phng chuyn ng ca cc body trong
h m phng N-body do lc tng tc gia gia cc body.Vic song song ha bi ton
trn l rt hp l v mt h N-body c rt nhiu cc body nn vic tnh lc tng tc
gia cc body tn rt nhiu thi gian.
Trong khun kh ca kha lun. p dng x l song song vo vic gim thi
gian tnh lc tng tc gia cc body trong h m phng N-body. Lun vn gm ba
chng.
Chng 1: L chng gii thiu tng quan v lp tnh ton song song. Chng
ny cp n cc vn nh cc kin trc ca my tnh song song, cc m hnh lp
trnh song song, v cc vn lin quan n hiu nng ca lp trnh song song nh
nh lut amdahls, b tc v cn bng ti.
Chng 2: L chng gii thiu v OpenMP. Chng ny tp trung nghin
cu chi tit cc thnh phn cac OpenMP. Bao gm cc ch th bin dch, cc hm th
vin v cc bin mi trng.
Chng 3: L chng m t v ci t bi ton N-body. Chng ny m t s
qua bi ton N-body. Thut ton tnh lc tng tc ln cc body trong h, v ba cch
song song ha giai on tnh lc tng tc gia cc body.
2
Kt lun: Nu ln nhng vn , kt qu t c. Ch ra s khc bit gia
cc chin lc song song v hng pht trin trong tng lai.






























3
Chng 1 Tng quan v tnh ton song song
1.1 Tnh ton song song
1.1.1.Tnh ton song song l g
Nh chng ta thy cc phn mm ph bin ngy nay hu ht u c vit
trn c s ca tnh ton tun t. Cc phn mm ny thng c thc hin trn mt
my tnh n vi duy nht mt b x l. Vn y c gii quyt thng qua mt
chui cc lnh tun t c thc hin bi mt b x l. Ti mt thi im ch c mt
lnh c thc hin.
Tnh ton song song ra i l mt s ci tin ca tnh ton tun t. N l s
gii quyt vn da trn s thc thi ng thi ca nhiu ti nguyn my tnh . Ti
nguyn my tnh y bao gm:
Mt my tnh n vi nhiu b x l
Nhiu my tnh ni li vi nhau thnh mt mng my tnh
Kt hp c hai loi trn
Tnh ton song song thng c dng gii quyt cc vn ht sc phc
tp yu cu thi gian tnh ton ln hoc lm vic vi khi d liu ln nh cc bi ton
d bo thi tit, m phng tai nn xe hi, xy dng cc m hnh thng mi v cc
vn khoa hc nh khai ph d liu , tr tu nhn to, an ton d liu
1.1.2 Ti sao phi tnh ton song song
Vic tnh ton song song l rt cn thit. Ngoi hai nguyn nhn chnh l n
c dng tnh ton cc bi ton yu cu thi gian tnh ton ln v khi lng d
liu ln cn c cc nguyn nhn khc nh s dng ti nguyn ca cc my khc
trong mt mng LAN hoc thng qua mng internet, c th s dng nhiu ti nguyn
tnh ton nh kt hp li to nn mt siu my tnh. Do gii hn v khng gian lu tr
ca b nh trn mt my n gii quyt mt vn ln vic s dng nhiu b nh
trn nhiu my tnh l rt hu hiu trong trng hp ny.
Gii hn ca tnh ton tun t bao gm c hai nguyn nhn thc t v nguyn
nhn vt l. xy dng nn mt my tnh tun t tc cao gp rt nhiu hn ch
V tc truyn d liu: Tc truyn ca my tnh tun t ph thuc trc
tip vo s di chuyn d liu trong phn cng. Cho nn vic tng tc thc hin phi
ch yu cn c vo cc yu t tnh ton.
V kch c: Cng ngh ch to b x l cho php gn nhiu bng bn dn
trn mt con chip. Tuy nhin vic lm ny s lm tng kch thc ca b x l
4
V thng mi: Vic to ra mt b x l tc x l cao l rt tn km. S
dng nhiu b x l nh t hiu qu tng t m li t tn km hn
1.2 Phn loi my tnh song song
1.2.1 Phn loi da trn s tng tc gia cc BXL
Mt trong nhng kha cnh quan trng ca my tinh song song l c ch trao
i thng tin gia cc BXL.C ba kin trc ph bin nht l kin trc chia s b nh
chung ( shared memory) kin trc b nh phn tn (distributed memory) v kin trc
b nh lai(hybrit distributed-shared memory)
a.Chia s b nh chung

Hnh 1.1: My tnh song song chia s b nh chung
My tnh loi ny s dng b nh chia s ton cc (global shared memory) m
tt c cc BXL u c th truy cp n. Mt BXL ny c th trao i thng tin vi mt
BXL khc bng cch ghi vo b nh ton cc v BXL th hai s c d liu ti cng
v tr trong b nh. iu ny cho php trao i thng tin gia cc BXL.Tuy nhin
dn n mt vn l ng thi c nhiu BXL cng truy cp ti cng mt v tr trong
b nh ton cc. My tnh loi ny c hai loi chnh da trn thi gian truy cp b nh
Th nht l my tnh truy cp ng b (UMA). L loi my tnh vi cc BXL
ging nhau. Tt c cc BXL u c th truy cp b nh ng thi v thng qua mt
BUS dng chung.

MEMORY

BXL

BXL

BXL

BXL
5


Hnh 1.2: My tnh Uniform Access Memory(UMA)
My tnh loi ny c loi gi l Cache coheren-UMA (CC-UMA). Cache
coheren y c ngha l khi mt BXL cp nht mt v tr trong b nh th tt c cc
BXL khc u nhn bit c s cp nht y
Th hai l my tnh truy cp khng ng b (NUMA) .Vi my tnh loi ny
c mt ng vt l ni hai hay nhiu SMP li vi nhau.


Hnh 1.3: My tnh Nun-Uniform Access Memory (NUMA)
Mi mt SMP li c th truy cp ti b nh ca SMP khc, tuy nhin vi kin
trc kiu ny th tt c cc BXL khng th truy cp cng mt lc ti cc b nh v vi
vic kt ni cc SMP bng ng vt l nn thi gian truy cp b nh chm
My tnh chia s b nh chung c thun li l gip cho ngi lp trnh thun
tin khi vit cc chng trnh song song. D liu chia s gia cc nhim v m bo
c hai tiu chun nhanh v ng thi. Tuy nhin my tnh loi ny c mt s kh khn
l rt kh m rng s lng cc BXL v vic thm cc BXL v phng din hnh hc
c th lm tng cc ng kt ni gia b nh ton cc v cc BXL. i vi h thng
Cache coheren th lm tng s chuyn thng gia cache v thit b qun l b nh. Vi

BXL
Memory Memory

BXL
ng kt ni cc SMP

BXL

BXL

BXL

BXL

MEMORY
6
my tnh loi ny ngi lp trnh phi chu trch nhim ng b chng trnh m
bo tnh ng n ca d liu dng chung.
b. B nh phn tn
Ngc vi my tnh chia s b nh chung l my tnh vi b nh phn tn
trong khng tn ti b nh chia s chung m mi BXL c b nh cc b ring ca
chng. Trong my tnh song song c b nh phn tn cc BXL lin lc vi nhau bng
cc thng ip (message) qua mt mng lin kt (interconnection network) gm cc
lin kt truyn thng trc tip gia mt s cp BXL.Mt trong nhng la chn quan
trng trong thit k lc s l cc cp BXL no c ni vi nhau.Tc lin lc l
ti u khi cc BXL c ni trc tip vi nhau.Tuy nhin iu ny thng l khng
kh thi do s lng cc lin kt l qu ln gin n vic tng gi thnh ca h thng.
Cch th hai c s dng l cc b s l lin lc thng qua mt BUS chia s. iu
ny dn n vic tr cao khi s lng BXL ln dn n vn tranh chp BUS













Hnh 1.4: My tnh c b nh phn tn
c.My tnh vi b nh lai
Hu ht cc my tnh nhanh v ln ngy nay u xy dng da trn s kt hp
gia kin trc chia s b nh chung v b nh phn tn. S kt hp to nn mt
my tnh vi tn gi my tnh c b nh lai

Memory

BXL

BXL Memory

Memory

BXL

Memory

BXL
7


Hnh 1.5: My tnh b nh lai
Cc thnh phn chia s b nh chung trong my tnh b nh lai thng l cc
my CC-SMP. Cc BXL trong thnh phn chia s b nh chung c th truy cp b nh
ton cc ring ca thnh phn . Thnh phn b nh phn tn c bit nh l mt
mng cc SMP.Cc SMP ch c th truy cp n b nh ton cc trong thnh phn
chia s b nh phn tn ca chng ch khng truy cp c b nh ca cc thnh
phn chia s b nh chung khc. Ci mng kt ni c xy dng chuyn d liu t
SMP ny n SMP khc
1.2.2 Phn loi da trn c ch iu khin chung
Phn ln cc my tnh song song thng c mt c ch iu khin chung song
vn t ra y l cc hot ng ca my tnh c iu khin mc no. Xem
vic iu khin theo hai kha cnh khc nhau. Kha cnh th nht: C ch iu khin
chung ch c s dng np chng trnh v d liu vo cc BXL cn sau cc
BXL hot ng c lp. Kha cnh th hai: C ch iu khin c s dng hng
dn cc BXL cc cng vic phi lm ti mi bc. Gia hai kha cnh ny l nhng c
ch iu khin trung gian. Hai loi c ch iu khin ph bin nht l.
a.H thng n lnh a d liu (SIMD)
Cc my tnh vector thuc vo loi ny. Mi my tnh vector c th thc hin
mt dng lnh. Tuy nhin n c nhiu BXL s hc khc nhau m mi BXL ny c kh
nng np v x l d liu ring ca n. Bi vy trong bt k thi im no mt thao

Memory
BXL
BXL
BXL
BXL

Memory
BXL
BXL
BXL
BXL

Memory
BXL
BXL
BXL
BXL

Memory
BXL
BXL
BXL
BXL
8
tc lun cng trng thi thc thi trn nhiu n v x l m mi trong s chng c
th x l d liu ring r.


Hnh 1.6: H thng n lnh a d liu(SIMD)
b.H thng a lnh a d liu (MIMD)
Phn ln cc my tnh a x l hin nay u thuc vo loi ny. Trong cc
my tnh loi ny nhiu dng lnh c th thc hin cng mt v mi dng lnh c th
x l d liu ring bit. Cc my tnh loi ny ban u c rt t tng tc gia cc
BXL. Song hin nay phn ln cc my tnh u c thit k cho php tng tc gia
cc BXL c thc hin mt cch hiu qu. C th lit k mt s my tnh loi ny
nh: Symmetry, TC2000, nCUBE2, Paragon XP/S v Connection Machine CM-5.











Hnh 1.7: H thng a lnh a d liu(MIMD)
1.3 Cc m hnh lp trnh song song
1.3.1 Tng quan v m hnh lp trnh song song
Vic a ra mt m hnh my tnh chung cho vic lp trnh gip cho vic thit
k gii thut gii thut tr nn n gin hn. Lp trnh song song a thm nhng kh
khn mi vo m hnh lp trnh tun t. Nu chng trnh c thc hin mc thp
nht th khng nhng s lnh thc hin l rt ln m n cn phi qun l trc tip qu
Cu lnh
BXL1 BXL2 BXLn
lnh 1
BXL1
lnh 2
BXL2
lnh n
BXL n
9
trnh thc hin song song ca hng nghn BXL v kt hp hng triu tng tc lin
BXL. Bi vy kh nng tru tng v tnh ton module l cc c tnh rt quan trng
trong lp trnh song song
Vy mc tru tng no s ph hp vi lp trnh song song. Cc m hnh
ny cn cho php nh gi c th v kh nng thc hin ng thi cng nh tnh cc
b cho php pht trin cc chng trnh c tnh modul v c kh nng m rng.V
m hnh phi ph hp vi kin trc ca my tnh song song.Cc m hnh thng
dng bao gm
M hnh chia s b nh chung
M hnh lung
M hnh truyn thng ip
M hnh song song d liu
M hnh lai
1.3.2 M hnh chia s b nh chung
Trong m hnh chia s b nh chung cc nhim v cng chia s mt khng
gian a ch chung c th c truy cp c ghi theo phng thc khng ng b.Cc
c ch khc nhau nh kha (locks) v semaphore c iu khin truy cp n b
nh ton cc.Xt theo quan im ca lp trnh vin th u im ca m hnh ny l
khng c khi nim s hu d liu. Ngha l khng phi ch nh r rng qu trnh
truyn d liu gia nhim v gi v nhim v nhn d liu. Tnh cht ny gip cho
pht trin cc chng trnh n gin hn. Tuy nhin khi vic hiu v m bo tnh
cc b tr nn kh khn v cng c ch nhiu nht trong kin trc chia s b nh
chung. Vic vit cc chng trnh xc nh cng tr nn kh khn
1.3.3. M hnh lung
Trong m hnh lung chng trnh chnh c chia thnh cc nhim v. Mi
nhim v c thc hin bi cc lung mt cch ng thi. Mi mt lung c d liu
ring ca n v chia s d liu ton cc ca chng trnh chnh. Cc nhim v a cho
mi lung l cc th tc con ca chng trnh chnh. V bt k lung no cng c th
thc hin bt k th tc con no ti cng thi im vi cc lung khc.Trong m hnh
lung cc lung kt ni vi nhau thng qua b nh ton cc vi vic kt ni ny th
chng trnh phi c xy dng mt cch ng b trnh cng mt lc c nhiu
lung cng cp nhp mt v tr trong b nh ton cc
10


Hnh 1.8: M hnh lung
1.3.4 M hnh truyn thng ip
Trong m hnh truyn thng ip chng trnh song song c chia thnh cc
nhim v. Mi nhim v s dng b nh cc b ca n. Cc nhim v ny c th c
c tr trn cc my vt l ging nhau kt ni vi nhau qua mng vi s lng ty

Hnh 1.9: M hnh truyn thng ip
Cc nhim v trao i d liu vi nhau qua hai phng thc gi v nhn
thng ip. Xt trn kha cnh lp trnh th cc thng ip cha trong mt th vin
thng ip.Th vin ny phi c gn vo m ngun ca chng trnh song
song.MPI l mt th vin ngy nay c dng rt ph bin

call sub1
call sub2
..............
..............
..............
..............
call sub3
call sub4
...............
chng trnh chnh
time
T1 T2
T3
T4
My A

nhim v 0
d liu
gi(d liu)
My B

nhim v 1
d liu
nhn (d liu)
kt ni
11
1.3.5. M hnh song song d liu
M hnh lp trnh song song d liu gip lp trnh cc chng trnh song song
c thc hin trn mt tp d liu ln. Tp d liu y thng c xp xp theo
mt cu trc nht nh nh l mng hoc theo khi


Hnh 1.10: M hnh lp trnh song song d liu
Vi m hnh ny th cc nhim v ca chng trnh lm vic vi cng mt cu
trc d liu. Tuy nhin mi nhim v s lm vic trn tng phn vng khc nhau ca
d liu v cc nhim v phi thc hin cc thao tc ging nhau.
Trong kin trc chia s b nh chung th tt c cc nhim v truy cp vo cu
trc d liu thng qua b nh ton cc. Cn i vi kin trc b nh phn tn th d
liu c chia ra v lu tr trn cc b nh cc b ca cc BXL
1.3.6. M hnh lai
M hnh lai l s kt hp ca hai hay nhiu m hnh lp trnh song song kt
hp li vi nhau
Hin nay th m hnh lai ph bin nht l m hnh kt hp gia m hnh truyn
thng ip vi m hnh lung hoc vi m hnh chia s b nh chung. Mt m hnh lai
khc na l s kt hp gia m hnh song song d liu vi m hnh truyn thng ip.
M hnh dng ny rt thun tin v m hnh song song d liu trn kin trc b nh
Mng A
..................
..................
Do i=1,9
A[i]=i+1
End Do
...................
...................
...............
..................
..................
Do i=10,19
A[i]=i+1
End Do
...................
...................
.................
..................
..................
Do i=20,29
A[i]=i+1
End Do
...................
...................
................
nhim v 1 nhim v 2 nhim v 3
12
phn tn s dng message passing trao i d liu gia cc nhim v mt cch
trong sut i vi lp trnh vin song song
1.4 Hiu nng ca tnh ton song song
Trong phn ny chng ta s trnh by mt s vn lin quan n hiu nng
ca tnh ton song song bao gm: kh nng tng tc tnh ton,cn bng ti (Load
balancing) v s b tc (Deadlock)
1.4.1 nh lut Amdahls
Trong nhiu ng dng thc t i hi thi gian thc,vn cn gii quyt c
knh thc c nh,do khi lng cng vic phi lm cng thng xc nh c
trc. nh lut do Amdahl pht biu nm 1967 nhm nh gi hiu nng ca vic
tnh ton cho cc bi ton thuc loi ny.
Khi tng s lng BXL trong my tnh song song, khi lng cng vic c
c phn phi cho nhiu BXL thc hin. Mc tiu chnh l tm c kt qu ca bi
ton nhanh nht c th hay ni mt cch khc l gim n mc ti a thi gian tnh
ton.
nh lut Amdahl: Gi f l phn nh ca thao tc tnh ton trong qu trnh tnh
ton phi thc hin mt cch tun t, 0 f 1. Tc ti a S c th t c bng
cch s dng my tnh song song vi p BXL c cho bi cng thc




Thi gian cho phn vic x l song song ca ng dng s dm dn n 0 khi
ta tng s lng BXL. Thi gian cho vic x l tun t lun l hng s













S
1
f + (1- f)p
13













Hnh 1.11: S ph thuc thi gian vo s lng BXL ca inh lut Amlahl

1.4.2 Cn bng ti
Ta gi s rng nu d liu c phn tn trn cc b nh a phng ca cc
BXL. Khi khi lng cng vic ca cc BXL cn phi c phn phi hp l trong
sut qu trnh tnh ton. Trong nhiu trng hp , gi s ny l ng tuy nhin trn
thc t iu ny khng phi lc no cng thc hin c. Gii php c a ra y
l cn bng ti ng nhm mc ch lm thay i s phn phi khi lng cng vic
gia cc BXL trong qu trnh thc hin tnh ton
Thng thng sau khi phn phi khi lng cng vic cho mi BXL, qu trnh
cn bng ti ng thc hin theo bn bc c bn di y Gim st hiu nng ca
mi BXL, trao i thng tin trng thi gia cc BXL, tnh ton v ra qut nh phn
phi li khi lng cng vic v cui cng l thc hin vic chuyn i d liu tht s
thc hin iu ny c rt nhiu thut ton c thc hin cn bng ti
ng c xut. Theo kt qu Znstietal phn lp cc thut ton ny theo chin lc
tp trung, phn tn ha ton (Fully distributed) v phn tn mt na(Semi
distributed)
a.Cc thut ton cn bng ti tp trung
Nhm a ra quyt nh c tnh cht tng th trong vic phn phi li khi
lng cng vic cn thc hin cho cc BXL. Mt vi thut ton trong lp ny s dng
thng tin h thng c tnh cht ton cc lu trng thi ca cc my ring bit trong
h thng. Thng tin ny s cho php thut ton phn phi cng vic cho cc BXL mt
cch d dng. Tuy nhin khi lng cng vic tng theo t l thun vi s lng cc
p=1 p=2 p=3 s BXL
thi gian
14
BXL, do i hi khi lng ln b nh trn mt BXL lu tr thng tin trng
thi. V vy cc thut ton thuc lp ny khng c p dng mt cch rng ri .
b.Cc thut ton cn bng ti phn tn hon ton
Trong chin lc ny, mi BXL c mt bn sao v thng tin trng thi ca h
thng . Cc BXL trao i thng tin trng thi vi nhau v s dng cc thng tin ny
lm thay i mt cch cc b vic phn chia cng vic. Tuy nhin cc BXL ch c
thng tin trng thi cc b nn vic cn bng ti khng tt bng cc thut ton cn
bng ti tp trung
c.Cc thut ton cn bng ti phn tn mt na
Cc thut ton thuc lp ny chia cc BXL thnh tng min. Trong mi min
s dng thut ton cn bng ti tp trung phn phi cng vic cho cc BXL thuc
min .
d. S b tc(Deadlock)
Cc tin trnh b ri vo tnh trng b tc nu mi tin trnh nm gi ti
nguyn m mt vi tin trnh khc yu cu s dng n x l.
L do tn ti s b tc l do nhiu tin trnh cng s dng ti nguyn chung m
khng c s kim sot tt. S b tc tn ti trong cc h iu hnh a nhim, cng nh
cc h thng a BXL v a my tnh
i vi cc h thng a my tnh, mt trong cc s b tc ph bin l b tc
vng m (buffer deadlock) xy ra khi mt tin trnh i mt thng ip m thng
ip ny c th khng bao gi nhn c khi m vng m ca h thng b y
Xem xt h thng a my tnh vi cc BXL x l khng ng b . BXL P
i
gi
thng ip cho BXL P
j
khng kt ni cho ti khi c thao tc thng ip . Mt khc
BXL P
i
gi thng ip cho BXL P
j
ni dung ca thng ip c lu trong vng m
ca h thng cho n khi BXL P
j
nhn v c thng ip. Gi s rng trong cng mt
thi im c nhiu BXL cng gi thng ip n BXL P
j
v iu ny s lm cho vng
m b y. Vic gi thng ip tip theo ch c thc hin khi BXL P
j
c mt hay
nhiu thng ip
Gi s BXL P
k
l mt trong nhng BXL c kh nng gi thng ip n BXL
P
j
. Nu BXL P
j
c gng c thng ip do BXL P
k
gi n n s b kt khi cho n
khi ni dung thng ip c trong vng ms. R rng BXL P
k
b kt khi cho ti khi
BXL P
j
loi b mt hay nhiu thng ip t vng m nh vy BXL P
j
v P
k
ri vo
b tc.
15







Hnh 1.12: P
k
kt khi gi X cho P
j
v vng m P
j
b y nn P
j

khng th nhn c X . P
k
v P
j
ri vo b tc
Bn iu kin gy nn b tc
1. S loi tr ln nhau: Mi tin trnh c s c quyn khi s dng ti nguyn ca n
2. Khng c s u tin: Mi tin trnh khng bao gi gii phng ti nguyn m tin
trnh ang chim gi cho n tn khi khng cn s dng chng na
3. S ch i ti nguyn: Mi tin trnh ang chim gi ti nguyn trong khi li ch
i cc tin trnh khc gii phng ti nguyn ca chng
4. S ch i gia cc tin trnh: Tin trnh i ti nguyn m tin trnh k tip ang
chim d m ti nguyn khng c gii phng
Mt s cch khc phc s b tc
Cch th nht ta s dng l c gng d tm s b tc khi chng sy ra v khi
phc li. Mt cch khc trnh s b tc thng qua s dng cc thng tin yu cu ti
nguyn ca cc tin trnh iu khin s phn phi khi tip tc phn phi cc ti
nguyn khng l nguyn nhn cc tin trnh ri vo b tc. Cch th ba l ngn cm
khng xy ra ng thi ba iu kin cui trong bn iu kin ny sinh b tc











Dc X t P
k

P
j

X
Gi X cho P
j

P
k

16
Chng 2: Lp trnh song song vi OpenMP
2.1. Gii thiu v OpenMP
2.1.1. Khi nim c bn v OpenMP
OpenMP l mt giao din lp trnh ng dng (API) c s dng iu
khin cc lung trn cu trc chia s b nh chung. Thnh phn ca OpenMP bao
gm :
1. Cc ch th bin dch (Compiler Directives)
2. Cc th vin runtime (Runtime Library Routines)
3. Cc bin mi trng (Emviroment Variables) .
Cc ch th bin dch, cc th vin runtime v cc bin mi trng ny c
s dng lp trnh song song vi hai ngn ng Fortran v C/C++. OpenMP l mt
chun b nh chia s h tr bi nhiu nn phn cng v phn mm nh l DEC, Intel,
IBM, SGI, Numerical Algorithms Group. Hn th na OpenMP cn rt kh chuyn v
c th thc thi trn c mi trng UNIX v Windows NT
2.1.2. Lch s ca OpenMP
Ngay t trc thp k 90. Cc nh cung cp cc my tnh chia s b nh
a ra cc sn phm h tr s ng b v cc ch th c bn. lp trnh cc chng
trnh song song trn kin trc dng ny th ngn ng Fortran c s dng vi rt
nhiu tin dng. Ngi s dng c th lm gim thi gian thc hin cc chng trnh
Fortran bng cch thc hin cc vng lp theo cch song song. Trong trng hp ny
trnh bin dch phi chu trch nhim song song ha mt cch t ng cc vng lp
thng qua cc BXL SMP. Tuy nhin mi mt nh cung cp li s dng nhng phng
thc v s thc thi khc nhau ph thuc vo cc nn tng phn cng v kin trc ring
ca h
a ra mt chun h tr vic lp trnh song song trn kin trc chia s b
nh th nm 1994 chun ANSI X3H5 ra i. Nhng n khng tn ti c lu v trong
thi gian ny cc my tnh b nh phn tn tr nn rt ph bin. Chun OpenMP c
bt a ra vo ma xun nm 1997 thay th chun ANSI X3H5. Trong thi gian
ny th cc my tnh chia s b nh rt thnh hnh.
Bn cnh Pthread cng c a ra nhng Pthread khng c tnh m rng,
khng c cc ch th bin dch. Pthread khng h tr song song tt, ngi lp trnh rt
kh thc thin vic song song ha nh vo Pthread. Vi Pthread ngi lp trnh phi
17
quan tm nhiu n cc chi tit mc thp. V OpenMP c thit k gim bi
nhng nhc im ca Pthread.
2.1.3. Mc ch v ng dng ca OpenMP
OpenMP ra i vi mc tiu cung cp mt chun chung cho rt nhiu kin
trc v nn tng phn cng. N thit lp mt tp cc ch th bin dch h tr vic lp
trnh song song trn my tnh chia s b nh chung. Mt mc song song chnh thng
c thc thi vi ba n bn ch th. OpenMP ra i gip cho vic lp trnh song song
mt cch d dng n cung cp kh nng song song ha chng trnh tun t m khng
dng n th vin thng ip v.v...
C th s dng OpenMP gii qut cc vn gii hn v thi gian nh bi
ton d bo thi tit, v m phng cc vn thc t nh bi ton m phng tai
nn xe hi, gii quyt cc bi ton khoa hc yu cu khi lng tnh ton ln nh bi
ton m phng N-Body, d bo thi tit
2.2. M hnh lp trnh song song OpenMP
2.2.1. Song song ha da trn c ch lung (Thread based parallelism)
Trong m hnh trn chng trnh x l trn b nh ton cc bao gm nhiu
lung thc thi ng thi. OpenMP da vo s tn ti ca nhiu lung trn mt m
hnh lp trnh chia s b nh chung.
2.2.2. M hnh song song hin (Explicit Parallelism)
M hnh trn l mt m hnh lp trnh khng t ng. Ngi lp trnh c
quyn iu khin vic song song ha mt cch c lp
2.2.3. M hnh Fork-Join
Trong cc m hnh trn th OpenMP s dng m hnh Fork-Join thc thi
cng vic song song
18

Hnh 2.1 M hnh Fork-Join
Trong m hnh ny tt c cc chng trnh song song u bt u vi vic x
l n bi mt lung ch (master thread). Lung ch ny s thc thi mt cch tun t
cho ti khi bt gp vng song song (parallel region) u tin .
FORK: C ngha l lung ch sau s to ra mt tp cc lung song song.
V sau on m trong vng song song c thc thi song song bi tp lung song
song va to ra
JOIN: Khi m tp lung song song hon thnh on m trong vng song
song chng s c ng b v kt thc ri sau cng vic li c thc hin bi
lung ch
2.3. Cc ch th trong OpenMP
2.3.1. Khun dng ch th trong OpenMP
Ch th trong OpenMP c cho di dng sau
# pragma omp directive-name [clause...] newline
# pragma omp: Yu cu bt buc i vi mi ch th OpenMP C/C++
directive-name: L tn ca ch th phi xut hin sau #pragma omp v ng
trc bt k mnh no
[clause...]: Cc mnh ny khng bt buc trong ch th
newlin : Yu cu bt buc vi mi ch th n l tp m lnh nm trong khi
cu trc c bao bc bi ch th
V d:
#pragma omp parallel default ( shared ) private (beta,pi)
2.3.2. Phm vi ca ch th
a. Phm vi tnh ( Static Extent )
l nhng on m nguyn bn trong phm vi t u n cui khi cu trc
cho sau mi ch th. Phm vi tnh ca ch th khng m rng n cc th tc v cc tp
cha m.

F
O
R
K

J
O
I
N

F
O
R
K

J
O
I
N
lung ch
vng song song vng song song
19
b. Ch th n c (Orphaned Directive)
Ch th n c l ch th xut hin c lp vi ch th khc. N tn ti ngoi
phm vi tnh ca ch th khc. Ch th n c m rng vi cc th tc v cc tp m
ngun
c. Phm vi ng (Dynamic Extent)
Phm vi ng ca ch th bao gm phm vi tnh ca ca ch th v phm vi ca cc ch
th m ci
V d:















Chng trnh kim tra
.................................
#pragma omp parallel
{
...................................
#pragma omp section
.................................
sub1();
..................................
sub2();
}
Sub1()
{
#pragma omp critical
{
......
}
}
Sub2()
{
#pragma omp sections
{
#pragma omp section
.............................
}
}
Ch th n c
Ch th critial v section
nm ngoi vng song song
Phm vi tnh
ch th section nm
trong vng song song
Phm vi ng
20
2.3.3. Cu trc vng song song
Mt vng song song l mt khi m ngun c thc thi bi nhiu lung .
Trong C/C++ mt vng song song c nh dng nh sau:
#pragma omp parallel [clause...] newline
if (scalar_expression)
private (list)
shared (list)
default (shared | none)
firstprivate (list)
reduction (operator : list)
copyin (list)
structured_block




V d:
#pragma omp parallel
printf(Hello);





Hnh 2.2: S thc thi ng thi ca cc lung trong cu trc vng song song
Khi m mt lung gp ch th PARALLEL th n s to ra mt tp cc lung
v lung ban u s l lung ch ca tp cc lung . Lung ch y cng l mt
thnh vin trong tp cc lung v l lung s 0
bt u thc hin mt vng song song th on m ngun trong vng song
song c sao ra nhng bn ging nhau a cho mi lung thc hin mt cch song
song. i cho n khi tt c cc lung u thc hin song cng vic ca mnh th
lung ch s thc hin cng vic tun t cn li ngoi vng song song . Vy cu hi
t ra y l c bao nhiu lung thc hin on m song song trong vng song
printf printf printf printf
21
song. bit c iu ny ngi ta dng hm th vin OMP_NUM_THREAD(), v
bit c s th t ca mi lung ta dng hm
OMP_GET_THREAD_NUM() ...Lu s th t ca cc lung nm trong khong t
0 n s th t ca lung ch tr i 1. Cng t khi nim vng song song xut hin
khi nim vng song song lng v khi nim lung ng
Vng song song lng (Nested Parallel Region): C ngha l trong mt vng
song song con xut hin cc vng song song nh khc
Lung ng (Dynamic Thread). Theo mc nh th khi mt chng trnh c
chia ra thnh nhiu vng song song th cc vng song song s c thc hin bi
cc lung vi s lng bng nhau. iu ny c th thay i bng cch cho php h
thng gn ng s lng cc lung thc hin cho mi vng song song . Chng ta c
hai cch thc gn ng cc lung th nht l dng hm th vin
omp_set_dynamic() v th hai l dng bin mi trng OMP_DYNAMIC.


Hnh 2.3: Cu trc phn chia lung ng
2.3.4. Cu trc chia s cng vic
Cu trc chia s cng vic dng chia vic thc hin cng vic trong vng
song song cho cc lung trong tp cc lung thc hin cng vic cho bi vng song
song. Cu trc chia s cng vic phi c bao bc bi mt vng song song c th
thc hin song song v cu trc ny c th c thc hin bi tt c cc lung trong
tp cc lung hoc ch mt s lung trong tp cc lung thc thi vng song song. C
ba loi cu trc chia s cng vic l cu trc DO/for, cu trc SECTIONS v cu
trc SINGLE



vng song song 1 vng song song 2
lung ch
22
2.3.4.1. Ch th DO/for
Ch th DO/for ch ra rng cc cng vic lp i lp li (interations) cho bi
vng lp phi c cc lung thc hin mt cch song song. Ch th for trong C/C++
c cho di dng sau
#pragma omp for [clause...] newline
schedule ( type [,chunk_size] )
ordered
private ( list )
firstprivate ( list )
lastprivate ( list )
shared ( list )
reduction ( operator : list )
nowait
for_loop
Mnh SCHEDULE
Mnh ny ch ra rng cc cng vic lp i lp li (interations) ca vng lp
c phn chia cho cc lung thc hin nh th no. C ba kiu phn chia
STATIC
i vi kiu phn chia ny thi cc cng vic ca vng lp i lp li ca vng
lp c phn chia da theo gi tr ca bin chunk_size thnh cc chunk cng vic
lin tip ( mi chunk cng vic y bao gm chunk_size cc cng vic lp i lp li )
v gn tnh chunk cng vic ny cho cc lung thc hin theo kiu quay vng da
trn th t ca s hiu mi lung. Nu bin chunk khng c ch nh th cc cng
vic ny s c phn chia ln lt cho cc lung.








23


V d












DYNAMIC
i vi vic phn chia ng th cc cng vic lp i lp li ca vng lp c
phn chia thnh mt chui cc chunk. Mi chunk y l mt tp chunk_size cng
vic. Cc chunk ny s c gn ng cho mi lung. Cc lung sau khi kt thc mt
chunk cng vic s i nhn chunk cng vic cho n khi khng cn chunk cng
vic no c gn. Lu rng chunk cng vic cui cng c th c s lng cng
a[1]=

a[2]=
a[3]=

a[4]=
a[5]=

a[6]=
a[7]

a[8]=
Hnh 2.4 M t hot ng ca bn lung thc thi
tnh a[1],a[2],...,a[8]
i=1,2 i=3,4 i=5,6 i=7,8

....
#pragma omp parallel
....
#pragma omp for schedule (static,2)
for (int i=1; i<8 ; i++)
a[i]=xxx;
....

24
vic nh hn chunk_size. Nu bin chunk_size khng c ch ra th gi tr mc nh
ca n l mt
V d
....
#pragma omp parallel
....
#pragma omp for schedule (dynamic,1)
for (int i=1;i<8 ; i++)
a[i]=xxx;

GUIDED
Kiu phn chia ny tng t nh kiu phn chia ng ch khc ch c ca
mi chunk cng vic khng phi l hng s m n gim i theo hm m qua mi ln
mt lung thc hin song mt chunk cng vic v bt u thc hin mt chunk cng
vic mi. Khi m mt lung kt thc mt chunk cng vic n s c gn ng sang
mt chunk khc. Vi chunk_size l 1 th c ca chunk cng vic c tnh bng php
chia nguyn s lng cng vic cho s cc lung thc hin v c ny s gim dn cho
n 1. Cn nu chunk_size c gi tr k th c ca chunk cng vic s gim dn cho n
k. Ch c ca chunk cui cng c th nh hn k. Khi m gi tr ca chunk_size
khng c khi to th gi tr mc nh ca n l 1



a[1]=

a[5]=
a[2]=

a[6]=
a[3]=

a[7]=
a[4]

a[8]=
Hnh 2.5: M t hot ng ca bn lung thc thi
tnh a[1],a[2],...,a[8]
i=1,5 i=2,6 i=3,7 i=4,8
25
V d
....
#pragma omp parallel
....
#pragma omp for schedule
(guided,1)
for (int i=1;i<37 ; i++)
a[i]=xxx;
....















Hnh 2.6: M t s thc hin ca cc lung trong kiu lp lch guided vi 36 bc lp
RUNTIME
Khi m bt gp schedule ( runtime ) th cng vic lp lch b hon li cho ti
khi runtime. Kiu phn chia v c ca cc chunk c th c thit lp ti thi im
runtime bng mt bin mi trng c tn gi OMP_SCHEDULE. Nu bin mi
trng ny khng c thit lp th vic lp lch chia s cng vic s c thc hin
mc nh. Khi m schedule (runtime) c a ra th chunk_size khng c khi to
Mnh ORDERED
Mnh ny ch c xut hin khi c ch th ORDERED c bao bc bi
ch th DO/for

Mnh NOWAIT
Vi mnh ny th tt c cc lung khng cn ng b ti im cui cng
ca vng lp song song. Cc lung s x l trc tip on m lnh cho tip sau vng
lp. Cc mnh cn li s c tho lun phn sau

a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8]
chunk do lung 0 thc hin
chunk do lung 2 thc hin
chunk do lung 1 thc hin
chunk do lung 3 thc hin


a[9] a[10] a[11] a[12] a[13] a[14] a[15] a[16]
a[17] a[18] a[19] a[20] a[21] a[22] a[23] a[24]
a[25] a[26] a[27] a[28] a[29] a[30] a[31] a[32]
a[33] a[34] a[35] a[36]
26
2.3.4.2. Ch th SECTIONS
Ch th ny dng ch ra cc phn m trong vng song song chia cho cc
lung thc hin. Trong phm vi ca ch th SECTIONS c cc ch th SECTION. Mi
mt SECTION s c thc hin bi mt lung trong tp cc lung v cc SECTION
khc nhau s c thc hin bi cc lung khc nhau. Trong C/C++ chi th
SECTIONS c cho di dng sau
#pragma omp sections [clause...] newline
private(list)
firstprivate(list)
lastprivate(list)
reduction(operator:list)
nowait
{
#pragma omp section newline

structured_block

#pragma omp section newline

structured_block
}


















27

...
#pragma omp parallel
...
#pragma omp sections nowait
{
#pragma omp section
structured_block 1
#pragma omp section
structure_block 2
}
...

V d

Hnh 2.7: M t s thc hin ca cc
lung vi ch th section

2.3.4.3. Ch th SINGLE
Mnh SINGLE ch ra rng on m bao quanh ch th ch c thc hin
bi mt lung trong tp cc lung. Trong C/C++ ch th SINGLE c cho di dng
sau
#pragma omp sections [clause...] newline
private(list)
firstprivate(list)
nowait
Structure_block
Cc lung khc m khng thc thi on m trong ch th SINGLE s phi i
n khi lung thc thi on m trong ch th kt thc mi c thc hin cc cng vic
ngoi ch th SINGLE nu khng c mnh NOWAIT c a ra. Lu trong ch
th SINGLE ch c hai mnh l private v firstprivate





28
V d



Hnh 2.8: M t s thc hin ca cc lung
vi ch th single
2.3.5. Cu trc ng b
ni v cu trc nay trc tin ta gii thiu mt v d n gin. V d ny
dng hai lung thc hin vic tng gi tr ca bin x ti cng mt thi im. Bin x
ban u mang gi tr 0
Lung 1 Lung 2
increment (x) increment (x)
{ {
x = x + 1 x = x + 1
} }
S thc thi c th theo th t nh sau
1. Lung 1 np gi tr ca x vo thanh ghi A
2. Lung 2 np gi tr ca x vo thanh ghi A
3. Lung 1 thm 1 vo thanh ghi A
4. Lung 2 thm 1 vo thanh ghi A
5. Lung 1 lu thanh ghi A ti v tr x

...
#pragma omp parallel
{
...
#pragma omp single
structure_block
...
}
29
6. Lung 2 lu thanh ghi A ti v tr x
Vy theo kiu thc hin ny sau khi hai lung thc hin xong cng vic th kt
qu ca x l 1 ch khng phi l 2 nh ta mong i. V trnh vic ny sy ra vic
tng bin x phi c ng b gia hai lung m bo rng kt qu tr v l ng.
OpenMP cung cp mt cu trc ng b gip iu khin s thc hin ca cc lung
lin quan n nhau nh th no. Trong cu trc ng b c rt nhiu ch th gip cho
vic ng b chng trnh sau y l cc ch th ng b .
2.3.5.1. Ch th MASTER
Trong ch th MASTER on m bao quanh ch th ch c thc hin bi
lung ch trong tp cc lung . Trong C/C++ ch th c cho di dng sau
#pragma omp master newline
structure_block
V d

Hnh 2.9: M t s thc hin ca cc
lung vi ch th master
Trong ch th loi ny khng c bt c mnh no v cc lung khc khng
cn ch n khi lung ch thc hin xong cng vic cho bi ch th master mi c
thc hin cng vic ca mnh
2.3.5.2. Ch th CRITICAL
Vi ch th CRITICAL th vng m c cho bi ch th ti mt thi im ch
c thc hin bi mt lung. Trong C/C++ chit th c cho di dng sau
#pragma omp critical [name] newline

...
#pragma omp parallel
{
...
#pragma omp master
structure_block
...
}
30
structure_block
Ta lu rng nu c mt lung ng thc hin cng vic cho bi ch th m c
mt lung khc c gng i thc hin cong vic th n s b kha cho n khi lung
kia thc hin xong cng vic . Mt ch na l c th tn ti nhiu ch th
CRITIAL vi cc tn khc nhau trong mt vng song song. Tn ca ch th c nhn
dng mt cch ton cc, tt c cc vng CRITIAL vi tn ging nhau c coi nh l
cng mt vng. Tt c vng CRITIAL khng c tn cng c coi nh cng mt vng
2.3.5.3. Ch th BARRIER
Ch th BARRIER dng ng b tt c cc lung trong tp cc lung. Khi
bt gp ch th BARRER th mi mt lung s ch i ti thi im y (thi im bt
gp ch th BARRRIER) cho n khi tt c cc lung cn li u bt gp ch th
BARRIER. V sau tt c cc lung s thc hin on m cho bi th th BARRIER.
Trong C/C++ ch th BARRIER c cho di dng sau
#pragma omp barrier newline
structure_block



Hnh 2.10: M t s thc hin ca cc
lung vi ch th barrier





...
#pragma omp parallel
{
......

#pragma omp barier
structure_block
...
}
barier
31
2.3.5.4. Ch th ATOMIC
Trong ch th ATOMIC cc a ch vng nh c cp nhp mt cch nguyn
t hn l vic dng nhiu lung c gng ghi ln n. Trong C/C++ ch th ny c
cho di dng sau
#pragma omp atomic newline
statemens_expression
Ch th ny ch p dng trc tip mt trong cc lnh sau
x binop = expr
x++
++x
x- -
- - x
x l bin m rng
expr l mt biu thc m rng khng tham chiu n x
binop l mt trong +,*,- , / , & , ^ , | , or
Ch rng ch c php np v lu tr bin x mi l nguyn t
2.3.5.5. Ch th FLUSH
Ch th FLUSH c dng nhn ra mt im ng b. im ng b yu
cu cung cp mt ci nhn nht qun v b nh. Ti thi im m ch th FLUSH xut
hin tt c cc bin thread-visiable phi c ghi tr li b nh. Trong C/C++ ch th
ny c cho di dng sau
#pragma omp flush (list) newline
Ch rng danh sch la chn y cha cc bin cn flush trnh vic
flush tt c cc bin. Vic thc thi ch th ny phi m bo rng bt k ln sa i bin
thread-visible lc trc th sau thi im ng b th n c tt c cc lung u bit
n n. C ngha l trnh bin dch phi khi phc cc gi tr t thanh ghi ra b nh.
Ch th FLUSH c bao hm bi cc ch th sau : BARRIER , CRITICAL,
ORDERED, PARALLEL, FOR, SECTIONS, SINGLE. Nhng nu c s xut hin
ca mnh NOWAIT th ch th FLUSH khng c bao hm
32
2.3.5.6. Ch th ORDERED
Ch th ORDERED c a ra m bo rng cc cng vic ca vng lp
phi c thc hin ng theo th t khi chng c thc thi tun t. Trong C/C++
ch th c cho di dng sau
#pragma omp ordered newline
structure_block
Mt ch th ORDERED ch c th xut hin trong phm vi ng ca ch th for
hoc parallel for trong C/C++. V ti bt c thi im no th ch c mt lung thc
hin on m cho bi ch th ORDERED. Nu mt vng lp c ch th ny th nht
nh n phi cha mnh ORDERED
2.3.6. Ch th THREADPRIVATE
Ch th ny c dng to ra cc bin c phm vi ton cc trong mt file
cc bin c th c s dng nhiu vng song song trong mt file chng trnh
v chng c bo v bi mi lung. Trong C/C++ ch th c cho di dng sau
#pragma omp threadpivate (list)
Ch rng trong chng trnh ch th ny phi xut hin sau dng lnh khai
bo cc bin ton cc. Mi mt lung sau s to ra mt bn sao ca bin m
vic thay i bin thuc lung nay khng nh hng ti bin thuc lung khc
V d
#include <omp.h>
int alpha[10], beta[10], i;
#pragma omp threadprivate(alpha)
main () {
/* m mt lung ng */
omp_set_dynamic(0);
/* vng song song mt */
#pragma omp parallel private(i,beta)
for (i=0; i < 10; i++)
alpha[i] = beta[i] = i;
/* vng song song hai */
#pragma omp parallel
printf("alpha[3]= %d and beta[3]= %d\n",alpha[3],beta[3]);
33
2.3. Cc mnh trong OpenMP
V OpenMP lp trnh trn my tnh chia s b nh chung nn vic hiu v s
dng c phm vi ca cc bin trong chng trnh l rt quan trng. Phm vi ca cc
bin y bao gm hai phm vi ton cc v phm vi bo v. Cc bin ton cc bao
gm cc bin tnh v bin file ton cc cn cc bin bo v bao gm bin ch s trong
vng lp, bin trong th tc c gi t vng song song. Cc mnh v phm vi d
liu bao gm cc mnh sau
PRIVATE
FIRSTPRIVATE
LASTPRIVATE
SHARED
DEFAULT
REDUCTION
COPYIN
Cc mnh v phm vi d liu ny c s dng vi mt vi ch th
(PARALLEL, FOR, SECTIONS ) iu khin phm vi cc bin trong cc
ch th . Sau y ta s i vo chi tit tng mnh
2.4.1. Mnh PRIVATE
Mnh ny dng khai bo cc bin trong danh sch cc bin dng ring
cho mi lung . Mi lung s s dng mt bn sao ca bin PRIVATE v c qun s
dng c lp i vi bin . Trong C/C++ n c khai bo nh sau
private (list)
2.4.2. Mnh FIRSTPRIVATE
Mnh ny cng dng khai bo mt danh sch cc bin dng ring cho
mi lung ging nh mnh PRIVATE. Nhng n khc mnh PRIVATE ch
cc bn sao ca mi bin dng cho mi lung c khi to mt gi tr ban u trc
vng song song hoc cu trc chia s cng vic. Trong C/C++ mnh trn c khai
bo nh sau
firstprivate (list)
34
2.4.3. Mnh LASTPRIVATE
Mnh ny cng c dng khai bo mt danh sch cc bin dng ring
cho mi lung nh mnh PRIVATE. Nhng n khc mnh PRIVATE ch
gi tr ca bin chnh l gi tr ca bin dng ring ca lung thc hin cng vic cui
cng ca vng lp hoc section cui cng trong ch th sections. Trong C/C++ mnh
trn c khai bo nh sau
#pragma omp lastprivate (list)
2.3.4. Mnh SHARED
Mnh ny dng khai bo cc bin trong danh sch cc bin c chia s
cho tt c cc lung trong tp cc lung. Cc bin chia s ch c mt v tr trong b
nh v cc lung s c v ghi trn cng mt v tr y. Vic cc lung cng c v
ghi ln cng mt v tr trn b nh rt c th dn n sai xt trong chng trnh nn
ngi lp trnh phi chu trch nhim phn b cng vic cho mi lung mt cch hp
l (v d nh thng qua ch th CRITIAL). Trong C/C++ mnh trn c khai bo
nh sau
shared (list)
2.3.5.Mnh DEFAULT
Mnh ny cho php ngi lp trnh a ra phm vi PRIVATE, SHARED,
hoc NODE cho tt c cc bin thuc vophm vi ca bt k vng song song no. V
ch c ch th DEFAULT mi c a ra trong cu trc vng song song. Trong
C/C++ ch th ny c khai bo nh sau
default (shared |none)
2.3.6. Mnh REDUCTION
Mnh ny c dng thu g n cc bin c trong danh sch cc bin.
Mt bn sao ca mi bin cho bi danh sch cc bin s c to ra cho mi lung.
Ti thi im cui cng ca vic thu gn th cc php ton thu gn s c p dng
nn cc bn sao dng ring ca mi lung. V kt qu cui cng c lu vo bin
chia s ton cc. Trong C/C++ mnh trn c khai bo nh sau
reduction (operator: list)
Ch cc bin trong danh sch phi l cc bin v hng. Chng khng th l
cc bin kiu mng hoc kiu c cu trc v chng phi c khai bo l bin chia s.
35
Cc thao tc thu gn th khng p dng c vi cc s thc. Mnh REDUCTION
c s dng trong vng song song hoc cu trc chia s cng vic vi cc bin thu
gn th trong cu trc v vng song song ny ch c s dng cc dng lnh c dng
nh sau
x = x op expr
x = expr op x (exceptsubtraction)
x binop = expr
x++
++x
x--
--x
x l bin v hng trong danh sch cc bin
expr l mt biu thc v hng khng tham chiu n x
op l mt trong nhng php ton +, *, -, /, &, ^, |, &&, ||
binop l mt trong nhng php ton +, *, -, /, &, ^, |
2.3.7. Mnh COPYIN
Mnh ny dng gn gi tr ca bin THREADPRIVATE cho tng lung
trong tp cc lung thc thi mt vng song song. C ngha l gi tr ca bin
THREADPRIVATE c khai bo trong mnh COPYIN ca lung ch s c
dng lm ngun. Khi gp mt vng song song th bin ngun ny s c sao cho cc
lung thc thi vng song song . Lu rng cc bin khai bo trong mnh
COPYIN l cc bin THREADPRIVATE. Trong C/C++ mnh trn c khai bo
nh nhau
Copyin (list)
2.5. Th vin Run-Time
OpenMP cung cp mt th vin vi rt nhiu cc hm chc nng bao gm cc
truy vn lin quan n s lng v ch s cc lung, thit lp s lng cc lung s
dng, semaphores, v cc hm thit lp mi trng thc thi. Trong C/C++ c th s
dng cc hm trn th phi nh vo file th vin omp.h. Sau y ta i vo chi tit cc
tng hm th vin mt
36
2.5.1. OMP_SET_NUM_THREADS
Hm th vin ny dng thit lp s lng cc lung thc hin vng song
song tip sau. Trong C/C++ hm ny c cho di dng sau
include <omp.h>
Void omp_set_num_threads( int num_threads )
Hm ny phi c khai bo trong vng tun t v khi n vng song song
gn ngay n th vng song song s c thc hin vi s lng cc lung m n
a ra. C mt cch thit lp s lng cc lung khc l dng bin mi trng
OMP_NUM_THREADS
2.5.2. OMP_GET_NUM_THREADS
Hm ny c gi t vng song. Khi c gi n s tr v s lng cc lung
thc hin vng song song . Trong C/C++ n c cho di dng sau
include <omp.h>
int omp_get_num_thread ( )
Nu hm ny c gi ra t vng tun t th n s tr li kt qy l 1 .
2.5.3. OMP_GET_MAX_THREADS
Hm ny tr v gi tr ln nht trong cc gi tr tr v ca cc hm
OMP_GET_NUM_THREADS. Trong C/C++ n c cho di dng sau
include <omp.h>
int omp_get_max_threads ( )
Hm ny c th gi c vng tun t ln vng song song
2.5.4. OMP_GET_THREAD_NUM
Hm ny tr v ch s ca lung ang thc hin . Ch s ny nm trong
khong t 0 n OMP_GET_NUM_THREADS 1. V lung ch lun mang ch s 0 .
Trong C/C++ hm ny c cho di dng sau
include <omp.h>
int omp_get_thread_num ()
Nu n c gi t vng tun t th kt qu tr v l 0
2.5.4. OMP_GET_NUM_PROCS
Hm ny tr v s lng cc b s l thc thi chng trinh ti thi im n
c gi. Trong C/C++ hm ny c cho di dng sau
include <omp.h>
int omp_get_num_procs ()
37
2.5.5. OMP_IN_PARALLEL
Hm ny c dng kim tra xem vng m cha n c thc hin song
song hay tun t. Trong C/C++ hm ny c cho di dng sau
include <omp.h>
int omp_in_parallel ()
Nu vng thc hin l vng song song th n s tr v mt gi tr khc 0. Cn
nu l vng tun t hoc trong phm vi ng ca vng song song n s tr v 0
2.5.7. OMP_SET_DYNAMIC
Hm ny dng cho php hoc khng cho php s iu chnh ng ca cc
lung thc thi trong vng song song. Trong C/C++ hm ny c cho di dng sau
include <omp.h>
void omp_set_dynamic (int dynamic_thread)
Nu dynamic_thread khc 0 th iu chnh ng sy ra ngha l cc lung c
th thc thi hn mt vng song song. Hm ny c th thay th bng vic s dng bin
mi trng OMP_DYNAMIC v n phi c gi t vng tun t
2.5.8. OMP_GET_DYNAMIC
Hm ny dng kim tra xem c s iu chnh ng hay khng. Trong
C/C++ hm ny c cho di dng sau
include <omp.h>
int omp_get_dynamic ()
Hm ny s tr v gi tr khc 0 nu trong chng trnh c s iu chnh lung
ng cn nu khng th hm s tr v gi tr 0
2.5.9. OMP_SET_NESTED
Hm ny c s dng cho php hay khng cho php vic song song lng .
Trong C/C++ Hm ny c cho di dng sau
include <omp.h>
void omp_set_nested (int nested)
Nu nested m khc 0 c ngha l vic song song lng c th xy ra cn nu
nested khc 0 th vic song song lng khng th xy ra. Mt cch mc nh th khng
cho php song song lng. Nu khng s dng hm ny th c th s dng thng qua
bin mi trng OMP_NESTED
2.5.10. OMP_GET_NESTED
Hm ny c s dng nhn bit xem c s song song lng sy ra khng.
Trong C/C++ n c cho di dng sau
include <omp.h>
int omp_get_nested ()
38
Hm s tr v gi tr khc 0 nu khng tn ti song song lng. Trong trng
hp ngc li hm s tr v gi tr 0
2.5.11. OMP_INIT_LOCK
Hm ny dng thit lp mt kha thng qua cc bin kha. Trong C/C++
c cho di dng sau
include <omp.h>
void omp_init_lock (omp_lock_t * lock)
void omp_init_nest_lock(omp_nest_lock_t * lock)
2.5.12. OMP_DESTROY_LOCK
Hm ny dng tch ra cc bin kha t bt k kha no. Trong C/C++ hm
ny c cho di dng sau
include <omp.h>
void omp_destroy_lock (omp_lock_t * lock)
void omp_destroy_nest_lock (omp_lock_t * lock)
2.5.13. OMP_SET_LOCK
Hm ny c dng bt buc s thc hin ca cc lung phi ch i khi
kha c m. Vi gi s rng cc lung c qun s hu kha . Trong C/C++
hm ny c cho di dng sau
include <omp.h>
void omp_set_lock (omp_set_t * lock)
void omp_set_nest_lock (omp_set_nest_t * lock)
2.5.14. OMP_UNSET_LOCK
Hm ny c s dng gii thot s thc hin ca cc lung vo kha.
Trong C/C++ hm ny c cho di dng sau
include <omp.h>
void omp_unset_lock (omp_unset_t * lock)
void omp_unset_nest_lock (omp_unset_nest_lock * lock)
2.5.15. OMP_TEST_LOCK
Hm ny c dng c gng th t mt kha. Nu t thnh cng th n
s tr v gi tr khc khng ngc li n s tr v 0. Trong C/C++ hm ny c cho
di dng sau
include <omp.h>
int omp_test_lock (omp_lock_t * lock)
int omp_test_nest_lock (omp_nest_t * lock)
39
2.6. Cc bin mi trng trong OpenMP
Cc bin mi trng c dng iu khin s thc hin on m song
song. Bao gm cc bin mi trng sau
2.6.1. OMP_SCHEDULE
Bin ny ch c s dng trong ch th c kiu lp lch RUNTIME nh ch
th for v parallel for. Gi tr ca bin ny xc nh xem cc cng vic trong vng
lp c lp lch trn cc BXL nh th no
V d :
setenv OMP_SCHEDULE guided , 4
setenv OMP_SCHEDULE dynamic
2.6.2. OMP_NUM_THREADS
Hm ny dng thit lp s lng ln nht cc lung c s dng
V d :
setenv OMP_NUM_THREADS 8
2.6.3. OMP_DYNAMIC
Bin ny cho php hay khng cho php s iu chnh ng cho cc lung thc
thi cc vng song song. N nhn hai gi tr TRUE hoc FALSE
V d
setenv OMP_DYNAMIC TRUE
2.6.3. OMP_NESTED
Bin ny dng cho php hay khng cho php vic song song lng sy ra.
N nhn hai gi tr TRUE hoc FALSE .
V d :
setenv OMP_NESTED TRUE
2.7. Trnh bin dch OpenMP
Trnh bin dch c dng bin dch chng trnh OpenMP c dng
trong kha lun l trnh bin dch Intel C++ compiler for Linux. Chng trnh dch ny
c download t a ch https://premier.intel.com/FileDownLoads. aspx.
Cch bin dch chng trnh cho ng dng OpenMP :
icc openmp chuongtrinhnguon o filechay
Khi chy chng trnh ng dng OpenMP
./filechay


40
Chng 3: Bi ton m phng N-Body
Chng ny i vo miu t bi ton N-body song song ha thut ton tnh lc
tng tc trc tip gia cc body qua ba cch v qua rt ra kt lun v hiu qu ca
chng trnh song song v s khc nhau gia cc chin lc song song ha
1.1. Gii thiu chung v bi ton m phng N-body
Bi ton m phng N-body l bi ton cho vic m phng chuyn ng ca
mt tp cc body di tc dng ca lc hp dn hoc cc lc khc. T mt trng thi
ban u cho trc, di tc dng ca lc tng tc gia cc body nn gia tc v vn
tc ca cc body c thay i lin tc nn chng s chuyn ng n v tr khc. C
nh vy v tr ca cc body c thay i lin tc. thc hin vic m phng chuyn
ng ca cc body trong h chng ta phi xc nh v cp nhp cc v tr ca cc body
ti bt k thi im no trong xut thi gian m phng

















41
1.2. M t bi ton N-body


Hnh 3.1 M t h gm 3 body
Trong h N-body trn lc tng tc gia cc body l lc hp dn gia cc
body.


Tng lc tc dng ln mi body l tng hp ca tt c cc lc hp dn tc
dng nn n


Ch cc body
Lc tc dng ln tng body
Body1
body2
Body3
body1 chu lc tng tc vi body2 v body3
body2 chu lc tng tc vi body1 v body3
body3 chu lc tng tc vi body1 v body2
m
1
v m
2
l khi lng hai body
r
12
l khong cch gia hai body
G l hng s hp dn
Gm
1
m
2

r
2
12

F =
42
F = ma m l khi lng ca body, a l gia tc ca body

Vi tng lc F lm cho mi body di chuyn mt on ng c chiu di l x
vi
vn tc v v gia tc a
x x l di on ng dch chuyn ca body
v = x' v l vn tc dch chuyn ca body
a = v' = x" a l gia tc chuyn ng ca Body
Trng thi ca h thng ti thi im T
n1(x1,T) , n2(x2,T) , n3(x3,T) .....nN(xN,T)
Trong ni (i = 1,2,3,..,N) l cc body, xi l cc thng tin trng thi ca ni ti
thi im T. Cc thng tin trng thi y bao gm v tr, vn tc v khi lng ca
body
1.3. Cc bc trong quy trnh gii bi ton m phng N-body
Vi m t bi ton m phng N-body th c rt nhiu phng php c
a ra xc nh thng tin trng thi ca cc body trong h m phng ti mt thi
im bt k. Tuy nhin tt c cc bc u c nhng c im chung sau
(1)Biu din h thng
(2)Tnh ton nng lng v lc tng tc gia cc body trong h
(3)Tnh v cp nhp trng thi ca cc body
(4)Qu trnh c lp i lp li ti bc th hai
Tt c cc phng php c a ra u di mt mc nh l gim thi gian
tnh lc bi v trong c qu trnh m phng th giai on tnh lc l giai on chim
ch yu thi gian. Phn ci t ca kha lun s i vo vic song song ha giai on
trn bng vic s dng OpenMP.
C rt nhiu thut ton lm gim thi gian ca giai on tnh lc. Kha
lun s ci t vi thut ton song song bi v thut ton ny s rt hiu qu vi h m
phng vi s lng ln cc body. Di y l tm tt thut ton tnh lc trc tip tun
t. Song song ha thut ton
Khi qut chng trnh p dng thut ton tnh lc trc tip tun t gm
nhng bc chnh sau
(1)c d liu t file hoc t tham s chng trnh
(2)Tnh nng lng khi to
(3)Cp nhp v tr cc body
43
(4)Tnh lc tng tc gia cc body xc nh v tr mi
(5)Lp li bc ba
Vic tnh lc gia cc body c m t ngn gn nh sau
for(int i=0 ;i<N ;i++)
{
for(int j=0;j<N;j++)
{
Tnh lc tng tc gia body i v body j;
Cng dn lc;
}
}
Cng dn lc y c ngha l cng tt c N-1 lc tng tc ca N-1 body tc
dng ln body i
Song song ha thut ton tnh lc trc tip tun t :
song song ha thut ton tnh lc trc tip tun t ta c th song song theo
cc cch sau :
(1) Song song ha vng for u tin
Vic song song ny c m t ngn gn nh sau
#pragma omp parallel default(shared) private(i,j)
{
#pragma omp for schedule(static) /* N l s Body*/
for(int i = 0 ; i < N ; i ++) {
for(int j = 0 ; j<N ; j ++) {
Tnh lc tng tc gia body i v body j;
Cng dn lc;
}
}
}





44
Vi vic song song ha kiu nh trn th vic tnh lc ca cc body c phn
b cho cc BXL nh sau.
x = N/n,y = N%n
BXL0 N/n + 1
BXL1 N/n + 1
BXL2 N/n + 1
..........
BXLy-1 N/n nu y>0
...........
BXLn N/n


body body










Hnh 3.2: M t thut ton song song vng for th nht vi n=3, N=9
i vi mi body thuc mt BXL vic tnh lc tng tc ca n vi N-1 body
cn li v vic cng dn cc lc li s c thc hin trn BXL m nhim tnh
lc tc dng ln body . Khc vi MPI l tnh lc tng tc ln mi body th BXL
phi gi thng ip yu cu thng ca cc Body trn cc BXL khc. Cn trong
OpenMP lm vic trn cc d liu chia s nn cc BXL hon ton bit thng tin ca
cc Body nm trn BXL khc m khng cn phi dng thao tc g








0
3
6
1
4
7
2
5
8
BXL0
BXL1
BXL2
0
1
2
3
4
5
6
7
8
lc tng tc
45
(2) Song song ha vng for th hai
Vic song song ha ny c m t ngn gn nh sau
for (int i = 0 ; i < N ; i ++){
#pragma omp prarallel shared(i,N) {
#pragma omp for schedule(static) redution(+; force(i))
/* N l s Body, force(i) l tng lc tc dng ln Body i*/
for (int j = 0 ; j < N ; j ++) {
Tnh lc tng tc gia body i v body j;
Cng dn lc
}
}
}
Vi vic song song ha nh trn th vic tnh tng cc lc tng tc tc dng
ln tng body khng phi c thc hin trn mi mt BXL. M vic tnh cc lc
tng tc chia u cho mi BXL v tng hp kt qu ngay trn BXL sau
tng lc tc dng ln body c tng hp t cc kt qu tng hp trn tng BXL

body body












Hnh 3.3 M t thut ton song song vng for th hai vi n=3, N=9




0
3
6
1
4
7
2
5
8
BXL0
BXL1
BXL2
0
1
2
3
4
5
6
7
8
lc tng tc
46
(3) Song song ha c hai vng for
# pragma omp parallel default(shared)
{
#pragma omp for schedule(static)
for (int i = 0 ; i < N ; i ++) {
omp_set_nested(1); // cho php song song lng
#pragma omp parallel
{
#pragma omp shared(i,N) schedule(static) reduction(+ : force(i) )
/*N l s cc body, force(i) l tng lc tc dng ln body i */
for(int j = 0 ; j < N ; j ++)
Tnh lc tng tc gia body i v body j;
Cng dn lc;
}
}
}
}


body body













Hnh 3.4: M t thut ton song song hai vng for vi n=3, n=9
Vi vic song song ha hai vng for nh trn th vic tnh tng lc ln cc
body c thc hin trn tng BXL. Nhng vic tnh cc lc tng tc ln mt body
khng phi do mt BXL cha body y thc hin m thc hin trn tt c cc BXL
sau tng hp cc lc y li thnh tng lc tc dng ln body y
Tuy nhin vi ba cch song song ha trn th cch th nht hiu qu hn hai
cch sau v khi Khi to ra nhiu vng hoc lung song song th h h mt thi gian to
lung, do nu thi gian gim i do song song ha nh hn thi gian to lung th
cch song song ha l khng c li. Khi chng trnh song song c th chy
chm hn tun t. Bi vy cn la chn cc vng song song c li nht v hiu
0
3
6
1
4
7
2
5
8
BXL0
BXL1
BXL2
0
3
6
1
4
7
2
lc tng tc
BXL0
BXL1
BXL2
5
8
47
nng. Trong cch song song th nht th ch cn mt ln to cc lung nn khng
tn nhiu thi gian, con i vi hai cch cn li th s ln m nhn h iu hnh to ra
cc lung bng vi s lng cc body. Vi bi ton m phng N-body th s lng cc
body la rt ln n nn n hng triu ht cho nn thut ton song song ha hm tnh
lc c ci t theo cch th nht c ngha l song song ha vng for u tin
1.4. Kt qu thc nghim
Di y l cc kt qu thc nghim thu c khi chy chng trnh m t bi
ton m phng N-body ca chng trnh song song v chng trnh tun t. C hai
chng trnh trn c ci t trn mt my c hai BXL vt l c h tr cng ngh
siu phn lung cho nn my tnh xem nh c 4 BXL logic. Nhng cng ngh siu
phn lung ch h tr cc bi ton vo ra v lp trnh lung, cn i vi bi ton N-
body ny ta coi nh my c 2 BXL. Kt qu v s ph thuc thi gian v s cc
body trong hai chng trnh song song v tun t ci t trn mt my vi 2 BXL
c cho di bn bng sau.
Bng 3.1: M t s ph thuc thi gian tnh lc tng tc v s lng cc body trong
chng trnh tun t

S body(k) Thi gian(t)
2 0,31336
4 1.25624
8 5.03610
16 20.37267
32 81.74523
64 327.89952

Bng 3.2: M t s ph thuc thi gian tnh lc tng tcv s lng cc body trong
chng trnh song song vng for th nht

S body(k) Thi gian(t)
2 0.16629
4 0.68406
8 2.66889
16 10.72424
32 42.92527
64 173.31044
48

Bng 3.3: M t s ph thuc thi gian tnh lc tng tc v s lng cc body trong
chng trnh song song vng for th hai

S body(k) Thi gian(t)
2 0.92078
4 4.11586
8 14.22576
16 57.03371
32 230.36806
64 926.65886

Bng 3.4 M t s ph thuc thi gian tnh lc tng tc v s lng cc body trong
chng trnh song song hai vng for

S body(k) Thi gian(t)
2 0.93970
4 3.78118
8 15.00492
16 58.47619
32 235.08394
64 940.89745



49
0.1
1
10
100
1000
0 20 40 60 80
s body(k)
t
h

i

g
i
a
n
(
s
)
tuan tu
song song vng
for th nht
song song vng
for th hai
song song c hai
vng for

Hnh 3.1: Biu m t s ph thuc gia s lng body v thi gian xc nh
v tr mi ca cc body trong c cc chng trnh song song v tun t.
1.4.1. nh gi, nhn xt
Qua kt qu thng k trn ta thy. Thi gian ca chng trnh song song
trn 2 BXL gim c gn mt na so vi chng trnh tun t trn 1 BXL v cng
vic c chia cho 2 BXL thc hin ng thi. S d thi gian khng th gim i
ng mt na l v s thiu ng b ca hai BXL v nhn ca h iu hnh mt mt
phn thi gian thit lp mt vng song song khi bt gp mt cu trc song song
Kt lun
Trong khun kh ca kha lun ny, chng ti nghin cu x l song song
trn my tnh chia s b nh vi OpenMP v ng dng trong bi ton m phng N-
Body.
Vic tng kt c s l thuyt v x l song song l c s cho nghin cu sau
ny ca chng ti.
nh hng ca kha lun v pht trin cc ng dng song song vi OpenMP.
i su vo nghin cu cc cu trc, ch th, cc hm th vin v cc bin mi trng
trong OpenMP nhm mc nh phn phi cc nhim v mt cch hp l cho cc BXL
song song hiu qu mt chng trnh tun t trn my tnh chia s b nh.
Trong th nghim chng ti so snh chin lc song song ha trn mt ng
dng bi ton m phng N-body v thu c kt qu nh mong i. Vi vic song
song ha lm gim thi gian tnh ton so vi chng trnh tun t . Thi gian gim
c xp x hai ln vi hai BXL. Nhng vic song song ha khng phi trong trng
hp no cng hiu qu v mt thi gian. Kha lun cng cho thy vi cc chin lc
song song ha khc nhau cho ta nhng hiu qu v thi gian khc nhau. Nu khng
song song ha mt cch hp l th c th xy ra nghch l v song song c ngha l
50
thi gian thc hin chng trnh song song ln hn thi gian thc hin chng trnh
tun t.
Hng pht trin trong tng lai
Hng pht trin tip theo ca kha lun khng ch dng li vic pht trin cc ng
dng vi OpenMP trn cu trc chia s b nh chung m cn nghin cu x l song
song trn cu trc b nh phn tn v trong cu trc b nh lai.vv. Trong qu trnh
nghin cu sau cn xem xt n c vn hiu sut ca cc BXL trong qa trnh phn
phi cng vic. V cc ng dng c song song ha s l cc ng dng c kch c
ln hn, thut ton phc tp hn.







Ti liu tham kho
Ting Vit
[1] Nguyn Vit Anh. X l song song trn PVM v ng dng trong bi ton bo
mt thng tin. Lun vn thac s. H ni. 2003)
Ting Anh
[1] Rohit Chandra, Leonardo Dagum, Dave Kohr, Dror Maydan, Jeff McDonald,
Ramesh Menon. Parallel Programming in OpenMP
[2] http://www.llnl.gov/computing/tutorials/parallel_comp
[3] http://www.openmp.org
[4] http://www.llnl/computing/tutorials/workshop/openmp/
[5] http://www hpcc.unical.it/alarico/LNErbacci2.pdf
[6]
http://nereida.deicc.ull.es/html/openmp/minnrsota/tutorial/content_openmp.html
[7] http://www.schlitt.net/xstar/n-body.pdf
[8] http://www.amara.com/papers/n-body.html

You might also like