Professional Documents
Culture Documents
Ung Dung Song Song OpenMP
Ung Dung Song Song OpenMP
Ung Dung Song Song OpenMP
Trnh Cng Qu
H NI-2005
I HC QUC GIA H NI
TRNG I HC CNG NGH
Trnh Cng Qu
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
Bng cc ch vit tt
Ch vit tt
Ting Vit
API
Giao din
Application Program Interface
lp trnh ng
dng
BXL
B x l
MIMD
a lnh a
d liu
MPI
Giao din
Message Passing Interface
truyn thng
ip
OPENMP
Ting Anh
Open MultiProcessing
SIMD
n lnh a
d liu
SMP
a x l i
xng
Symmetric MultiProcesor
UMA
Truy cp b
nh mt
cch thng
nht
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.
BXL
BXL
MEMORY
BXL
BXL
BXL
BXL
BXL
BXL
MEMORY
Memory
BXL
BXL
ng kt ni cc SMP
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
Memory
BXL
Memory
BXL
Memory
BXL
Memory
BXL
BXL
BXL
BXL
BXL
BXL
BXL
Memory
BXL
BXL
BXL
BXL
BXL
BXL
BXL
BXL
Memory
Memory
Memory
BXL
BXL
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.
Cu lnh
BXL1
BXL2
BXLn
lnh 2
lnh n
BXL1
BXL2
BXL n
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
T1
T2
call sub1
call sub2
..............
..............
..............
..............
call sub3
call sub4
...............
T3
time
T4
My A
My B
nhim v 0
kt ni
nhim v 1
d liu
d liu
gi(d liu)
nhn (d liu)
10
Mng A
..................
..................
Do i=1,9
A[i]=i+1
End Do
...................
...................
...............
..................
..................
Do i=10,19
A[i]=i+1
End Do
...................
...................
.................
nhim v 1
nhim v 2
..................
..................
Do i=20,29
A[i]=i+1
End Do
...................
...................
................
nhim v 3
11
1
f + (1- f)p
12
thi gian
p=1
p=2
p=3
s BXL
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
13
14
X
Gi X cho Pj
Pk
Dc X t Pk
Pj
15
16
17
lung ch
J
O
I
N
F
O
R
K
F
O
R
K
J
O
I
N
18
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:
Phm vi tnh
ch th section nm
trong vng song song
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 ng
19
V d:
#pragma omp parallel
printf(Hello);
printf
printf
printf
printf
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
20
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.
lung ch
21
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.
22
V d
....
#pragma omp parallel
....
#pragma omp for schedule (static,2)
for (int i=1; i<8 ; i++)
a[i]=xxx;
....
i=1,2
i=3,4
i=5,6
i=7,8
a[1]=
a[3]=
a[5]=
a[7]
a[2]=
a[4]=
a[6]=
a[8]=
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
23
i=1,5
i=2,6
i=3,7
i=4,8
a[1]=
a[2]=
a[3]=
a[4]
a[5]=
a[6]=
a[7]=
a[8]=
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
24
V d
....
#pragma omp parallel
....
#pragma omp for schedule
(guided,1)
for (int i=1;i<37 ; i++)
a[i]=xxx;
....
a[1]
a[2]
a[3]
a[4]
a[5]
a[6]
a[7]
a[8]
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]
25
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
}
26
V d
...
#pragma omp parallel
...
#pragma omp sections nowait
{
#pragma omp section
structured_block 1
#pragma omp section
structure_block 2
}
...
27
V d
...
#pragma omp parallel
{
...
#pragma omp single
structure_block
...
}
Lung 2
increment (x)
increment (x)
{
x=x+1
x=x+1
2.
3.
4.
5.
28
6.
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
...
#pragma omp parallel
{
...
#pragma omp master
structure_block
...
}
29
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
...
#pragma omp parallel
{
......
#pragma omp barier
structure_block
...
}
barier
30
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
31
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]);
32
33
34
35
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 ()
36
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 ()
37
38
39
40
Body1
body2
Body3
Ch cc body
Lc tc dng ln tng body
F=
Gm1m2
r212
41
F = ma
v = x'
a = v' = x"
42
43
BXL0
BXL1
BXL2
0
body
lc tng tc
0
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
44
BXL1
BXL2
body
lc tng tc
Hnh 3.3 M t thut ton song song vng for th hai vi n=3, N=9
45
}
body
BXL0
BXL1
BXL2
body
lc tng tc
BXL0
BXL1
BXL2
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
46
Thi gian(t)
0,31336
1.25624
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)
0.16629
0.68406
2.66889
16
10.72424
32
42.92527
64
173.31044
47
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)
0.92078
4.11586
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)
0.93970
3.78118
15.00492
16
58.47619
32
235.08394
64
940.89745
48
1000
tuan tu
thi gian(s)
100
10
1
0
20
40
60
80
0.1
s body(k)
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 NBody.
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
49
thi gian thc hin chng trnh song song ln hn thi gian thc hin chng trnh
tun t.
50