Professional Documents
Culture Documents
Report Lap Trinh Song Song
Report Lap Trinh Song Song
Report Lap Trinh Song Song
H Ni, 02/2014
Page 0
MC LC
DANH MC BNG BIU .................................................................................................. 2
DANH MC HNH V ....................................................................................................... 2
LI NI U...................................................................................................................... 3
CHNG 1: TNG QUAN V M HNH LP TRNH SONG SONG VI OPEN MP
.............................................................................................................................................. 4
1.
TNH TON SONG SONG ............................................................................................. 4
1.1. Tnh ton song song l g? .................................................................................. 4
1.2. Ti sao phi tnh ton song song? ....................................................................... 4
2.
GII THIU V OPENMP ........................................................................................... 4
2.1. Khi nim v OpenMP ........................................................................................ 4
2.2. M hnh lp trnh song song OpenMP................................................................. 5
2.2.1. Song song ha da trn c ch lung (Thread based parallelism) ................ 5
2.2.2. M hnh song song hin (Explicit Parallelism) ............................................ 5
2.2.3. M hnh Fork-Join ...................................................................................... 5
2.3. Ch th trong OpenMP ......................................................................................... 6
2.3.1. Khun dng ch th ...................................................................................... 6
2.3.2. Phm vi ca ch th: .................................................................................... 6
2.3.3. Cu trc chia s........................................................................................... 7
2.3.3.1. Ch th Do/For ........................................................................................ 7
2.3.3.2. Ch th Sections ...................................................................................... 7
2.3.3.3. Ch th Single ......................................................................................... 7
2.3.4. Cu trc ng b d liu ............................................................................. 8
2.3.4.1. Ch th master ......................................................................................... 8
2.3.4.2. Ch th critical......................................................................................... 8
2.3.4.3. Ch th Barrier ........................................................................................ 8
2.3.4.4. Ch th Atomic........................................................................................ 8
2.4. Cc mnh trong OpenMP ............................................................................... 8
2.5. Th vin v cc bin mi trng ......................................................................... 9
2.5.1. Th vin Runtime ....................................................................................... 9
2.5.2. Bin mi trng .......................................................................................... 9
CHNG 2: NG DNG LP TRNH SONG SONG VO GII QUYT BI TON
NHN MA TRN.............................................................................................................. 10
1.
BI TON NHN HAI MA TRN ................................................................................. 10
2.
KT QU THC HIN................................................................................................ 10
KT LUN ........................................................................................................................ 14
TI LIU THAM KHO ................................................................................................. 14
PH LC 1: SOURCE CODE NHN HAI MA TRN KHNG S DNG OPENMP
............................................................................................................................................ 15
PH LC 2: SOURCE CODE NHN HAI MA TRN S DNG OPENMP ............. 16
Page 1
Page 2
LI NI 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 ca kin trc my tnh v mng my tnh cho thy rng trong
tng lai 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.
Trong khun kh ca bi tp ny v yu cu ca mn hc, chng em la
chn bi ton nhn hai ma trn c s lng phn t ln c lp trnh tun t v
song song nh gi tc x l v hiu nng s dng. Thng qua , chng em c
th hiu nhiu hn na v mn hc lp trnh song song ny.
Ni dung ca bi bo co ny gm cc phn:
Chng 1: Tng quan v m hnh lp trnh song song vi Open MP
Chng 2: ng dng lp trnh song song vo bi ton nhn hai ma trn
Chng em xin c gi li cm n chn thnh n ging vin TS. Phm
Don Tnh tn tnh ging dy v gip chng em trong thi gian hc tp hc
phn ny.
Page 3
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
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.
2. Gii thiu v OpenMP
2.1.
Theo Wikipedia:
OpenMP (Open Multi-Processing) l mt giao din lp trnh ng dng API
(Application programming interface) h tr a nn tng da trn cu trc chia s b
Page 4
Page 5
Ch th trong OpenMP
Cc cu trc thng gp :
Cu trc chia s
Cu trc ng b
Ch th Do/For
Ch th Sections
Ch th Single
Page 7
Ch th master
Ch th critical
Ch th Barrier
Ch th Atomic
LASTPRIVATE
SHARED
DEFAULT
REDUCTION
COPYIN
2.5.
Page 9
Chng 2: ng dng lp trnh song song vo gii quyt bi ton nhn ma trn
1. Bi ton nhn hai ma trn
Cho hai ma trn A (m*n) v B(n*p):
so snh s khc bit gia lp trnh tun t v lp trnh song song, ta tin
hnh nhn hai ma trn c cng kch thc (N*N, vi N ln). Thng qua thi gian thc
hin ta thu c kt qu nh di y.
2. Kt qu thc hin
Cc tham s s dng nh gi:
Hai ma trn vung, c kch thc nh nhau.
Kch thc ma trn tng dn t 500 n 4000, mi ln tng 500
Mi ln kim tra c chy 3 ln, ly thi gian trung bnh
Mi trng lp trnh: Microsoft Visual Studio 2010
Chy kim tra trn my tnh Core i5 2.27GHz, 4 core
Bng 1: Thi gian tnh ton nhn hai ma trn khng s dng OpenMP
Kch thc
TT
ma trn
(NxN)
1
2
3
4
5
6
7
8
500x500
1000x1000
1500x1500
2000x2000
2500x2500
3000x3000
3500x3500
4000x4000
Thi gian
chy ln 1
(Giy)
Thi gian
chyLn 2
(Giy)
Thi gian
chy ln 3
(Giy)
Thi gian
chy trung
bnh
(Giy)
Thi gian
chy lu
nht
(Giy)
2.226
23.276
73.431
168.976
347.531
650.096
1196.762
1277.624
2.222
22.704
72.957
173.586
352.504
730.219
1072.1
1250.586
1.965
22.679
72.593
149.34
346.597
744.628
1079.67
1260.405
2.138
22.886
72.994
163.967
348.877
708.314
1116.177
1262.872
2.226
23.276
73.431
173.586
352.504
744.628
1196.762
1277.624
Page 10
Bng 2: Thi gian tnh ton nhn hai ma trn s dng OpenMP
Kch thc
TT
ma trn
(NxN)
1
2
3
4
5
6
7
8
500x500
1000x1000
1500x1500
2000x2000
2500x2500
3000x3000
3500x3500
4000x4000
Thi gian
chy ln 1
(Giy)
Thi gian
chy ln 2
(Giy)
Thi gian
chy ln 3
(Giy)
0.905
7.448
25.370
63.488
134.567
246.558
395.057
566.025
0.850
7.364
25.386
66.801
134.812
240.936
393.168
665.869
0.819
7.455
25.973
67.333
134.185
240.891
388.070
757.783
Thi gian
chy trung
bnh
(Giy)
0.858
7.422
25.576
65.874
134.521
242.795
392.098
663.226
Thi gian
chy lu
nht
(Giy)
0.905
7.455
25.973
67.333
134.812
246.558
395.057
757.783
Bng 3: Tnh ton Speed up v Efficiency da trn thi gian chy trung bnh
TT
1
2
3
4
5
6
7
8
Kch thc
ma trn
(NxN)
500x500
1000x1000
1500x1500
2000x2000
2500x2500
3000x3000
3500x3500
4000x4000
Without
OpenMP
OpenMP
Speed up
Efficiency
(%)
2.138
22.886
72.994
163.967
348.877
708.314
1116.177
1262.872
0.85793
7.42234
25.576233
65.873985
134.52145
242.79499
392.0983
663.22578
2.5
3.1
2.9
2.5
2.6
2.9
2.8
1.9
62.3
77.1
71.3
62.2
64.8
72.9
71.2
47.6
Bng 4: Tnh ton Speed up v Efficiency da trn thi gian chy lu nht
TT
1
2
3
4
5
6
7
8
Kch thc
ma trn
(NxN)
500x500
1000x1000
1500x1500
2000x2000
2500x2500
3000x3000
3500x3500
4000x4000
Without
OpenMP
OpenMP
Speed up
Efficiency
(%)
2.226
23.276
73.431
173.586
352.504
744.628
1196.762
1277.624
0.905
7.455
25.973
67.333
134.812
246.558
395.057
757.783
2.5
3.1
2.8
2.6
2.6
3.0
3.0
1.7
61.5
78.1
70.7
64.5
65.4
75.5
75.7
42.2
Page 11
Page 12
Page 13
Kt lun
Qua kt qu thc nghim cho thy: thi gian tnh ton ca lp trnh song song
l nhanh hn so vi lp trnh tun t. Khi kch thc ma trn cng ln th thi gian
tnh ton ca lp trnh song song cng nhanh hn so vi lp trnh tun t. Tc ca
lp trnh song song ln gp 2 ln so vi tnh ton tun t.
Tuy nhin, do vic i su vo tip cn ng dng ca OpenMP cn hn ch cha
th khai thc ht cc ch th, cc hm th vin v cc bin mi trng nhm mc ch
phn phi nhim v mt cch hp l cho cc b x l song song hiu qu hn, ti
u hn na cho bi ton nhn ma trn ny.
Page 14
Page 15
Page 16
}
/* Cap phat bo nho cho ma tran C */
c=(int **) malloc(10*N);
for( i=0;i< N; i++)
{
c[i]=(int *) malloc(10*N);
}
printf("Khoi tao ma tran...\n");
double start = omp_get_wtime( ); //Bat dau dem thoi gian
/*** Tao mot vung song song voi cac bien chia se giua cac thread gom: a,b,c nthread,
chunks va cac bien rieng duoc su dung cho cac thread la i,j,k ***/
#pragma omp parallel shared(a,b,c,nthreads,chunk) private(tid,i,j,k)
{
tid = omp_get_thread_num();
if(tid==0)
{
nthreads = omp_get_num_threads();// Lay so thread duoc su dung
printf("Bat dau nhan ma tran voi so thread la: %d
threads\n",nthreads);
}
//Khoi tao ma tran A
/* Khai bao mot vong lap duoc thuc hien song song giua cac thread
voi lich trinh Tinh va kich thuoc moi doan la 10*/
#pragma omp for schedule (static, chunk)
for(i=0;i<N; i++)
{
for(j=0;j<N; j++)
{
a[i][j] = i+j;
}
}
//Khoi tao ma tran B
/* Khai bao mot vong lap duoc thuc hien song song giua cac thread
voi lich trinh Tinh va kich thuoc moi doan la 10*/
#pragma omp for schedule (static, chunk)
for(i=0;i<N; i++)
{
for(j=0;j<N; j++)
{
b[i][j] = i*j;
}
}
//Khoi tao ma tran C
/* Khai bao mot vong lap duoc thuc hien song song giua cac thread
voi lich trinh Tinh va kich thuoc moi doan la 10*/
#pragma omp for schedule (static, chunk)
for(i=0;i<N; i++)
{
for(j=0;j<N; j++)
{
c[i][j] = 0;
}
}
printf("Thread %d dang tien hanh nhan ma tran...\n",tid);
#pragma omp for schedule (static, chunk)
for(i=0;i<N; i++)
{
for(j=0;j<N; j++)
{
for(k=0;k<N; k++)
{
c[i][j]+=a[i][k]*b[k][j];
}
Page 17
}
}
} /*****Ket thuc vung song song*****/
double end = omp_get_wtime( );
//Thoi gian ket thuc
dif = end - start; //Khoang thoi gian thuc hien
printf("Xong.Thoi gian thuc hien la: %f giay.\n", dif);
/*Giai phong bo nho*/
for(i=0;i<N; i++)
{
free(a[i]);
}
free(a);
for(i=0;i<N; i++)
{
free(b[i]);
}
free(b);
for(i=0;i<N; i++)
{
free(c[i]);
}
free(c);
getch();
}
Page 18