You are on page 1of 14

TRNG I HC BCH KHOA H NI VIN CNG NGH THNG TIN V TRUYN THNG

Bi tp ln Lp trnh song song


ti : p dng tnh ton song song vo gii quyt bi ton tm i ngn nht xut pht t mt nh s dng gii thut Dijkstra. Ging vin hng dn : Ths. Nguyn Tin Dng Sinh vin thc hin :
1- Nguyn Th Thy SHSV:20082599 2- Nguyn nh Hng SHSV:20081338

Lp : H Thng Thng Tin K53 H Ni thng 11/2011

Mc lc ITng quan v m hnh lp trnh song song OpenMP 1- Gii thiu v m hnh OpenMP 2- M hnh lp trnh song song OpenMP 3- Mt s ch th trong OpenMP 4- Mt s mnh thng gp trong OpenMP 5- Th vin v cc bin mi trng Bi ton tm ng i ngn nht 1- Cc khi nim m u 2- Bi ton ng i ngn nht xut pht t mt nh Gii thut Dijkstra 1- Thut ton Dijkstra 2- Tnh ng n ca thut ton Dijkstra 3- phc tp ca thut ton Dijkstra Kt qu thc nghim 1- Ci t bng lp trnh tun t 2- Ci t bng lp trnh song song 3- Kt lun.

II-

III-

IV-

I-

Tng quan v m hnh lp trnh song song OpenMP 1- Gii thiu v m hnh OpenMP a- OpenMP l g? 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 nh chung, a ngn ng lp trnh C, C++, Fortran v hu ht cc b kin trc vi x l v h iu hnh Linux, Unix, Mac OS X, nn tng Microsoft Windows. N bao gm : Cc ch th bin dch (Compiler directives) Cc th vin Runtime (Library rountines) Cc bin mi trng (Environment variables)

b- Lch s OpenMP OpenMP Architecture Review Board(ARB) c cng b nh mt giao din lp trnh ng dng u tin, phin bn 1.0 ra i vo thng 10 nm 1997 cho Fortran. Thng 10 nm sau l phin bn cho C/C++. Nm 2000 phin bn 2.0 cho Fortran v nm 2002 l phin bn 2.0 cho C/C++. Nm 2005 phin bn 2.5 cho C/C++/Fortran ra i. Thng 5-2008 phin bn 3.0 ra i bao gm thm nhiu tnh nng mi cc khi nim v task v nhin v ca task.

2- M hnh lp trnh song song OpenMP OpenMP s dng m hnh Fork-Join thc thi song song 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 lungch.

3- Mt s ch th trong OpenMP 3.1 Khun dng ch th 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 newline : 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) 3.2 Phm vi ca ch th: 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. 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 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 OpenMP c rt nhiu ch th nh: atomic, barrier, critical, flush, for, master, ordered, parallel, section, single, threadprivate. Cc cu trc thng gp : Cu trc chia s Cu trc ng b Trong phm vi bi tp ln ny em xin trnh by cc ch th dng: 3.3 Cu trc chia s 3.3.1 Ch th do/for Mnh schedule #pragma omp for schedule(static,t) T= so dinh cua do thi / so luong. For(i=1;i<n;i++) { Printf(\n nhap du lieu o luong ) C[i][j]= ran(); } #pragma omp for schedule(dynamic,t) T l bin chunk_size. Mnh Ordered Mnh Nowait Vi mnh ny th 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. 3.3.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 ch section . mi mt section s c thc hin bi cc lung khc nhau. Khun dng ca ch th sections.

3.3.3 Ch th Single Ch th single ch ra rng on m bao quanh ch th ch c thc hin bi mt lung trong tp cc lung.Nu khng c mnh Nowait c khai bo th cc lung khc (cc lung khng thc thi on m Single ) s phi i cho n khi lung thc thi on m trong ch th kt thc mi c thc hin cc cng vic khc ngoi ch th Trong ch th Single ch c hai mnh l Private v firstprivate Khun dng ch th Single #pragma omp single [clauses] { structured-block } Ch th Single cho php bn ch nh mt phn ca on m c thc hin trn mt lu ng duy nht , khng nht thit l lung master. Cc clause c th l mt trong s sau : Private Firstprivate Copyprivate Nowait 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 vi c 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 .
.

3.4 Cu trc ng b d liu 3.4.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 ch th 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. 3.4.2 Ch th critical vi ch th Critical th vng m c cho bi ch th ti mt thi im ch c thc hin ti mt lung. Nu mt lung no ang thc hin cng vic cho bi ch th m c mt lung khc c gng i thc hin cng vic th n s b kha cho nkhi lung kia thc hin xong cng vic . c th tn ti nhiu ch th critical vi cc tn khc nhau trong cng mt vng song song. 3.4.3 Ch th Barrier Ch th ny dng ng b tt c cc lung trong tp cc lung . khi bt gp ch th Barrier th mi lung s ch ti thi im (thi im bt gp ch th Barrier) cho n khi tt c cc lung cn li bt gp ch th Barrier. Sau cc lung s cng thc thi ch th barrier.

Khun dng ch th Barrier : #pragma omp barrier new-line 3.4.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. #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 . 4- Mt s mnh trong OpenMP Trong OpenMP s dng cc mn sau - Mnh Private - Mnh Firstprivate - Mnh Lastprivate - Mnh Shared - Mnh Default - Mnh Reduction - Mnh Copyin 5- Th vin v cc bin mi trng 5.1 Th vin Runtime 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. OMP_SET_NUM_THREADS OMP_GET_NUM_THREADS OMP_GET_MAX_THREADS OMP_GET_THREAD_NUM OMP_GET_NUM_PROCS OMP_IN_PARALLEL OMP_SET_DYNAMIC OMP_GET_DYNAMIC OMP_SET_NESTED

OMP_GET_NESTED OMP_INIT_LOCK OMP_SET_LOCK OMP_UNSET_LOCK OMP_TEST_LOCK 5.2 Bin mi trng Cc bin mi trng c dng iu khin s thc hin on m song song. Bao gm cc bin mi trng sau: OMP_SCHEDULE OMP_NUM_THREADS OMP_DYNAMIC OMP_NESTED

II- Bi ton tm ng i ngn nht 1- Cc khi nim m u th c hng : th c hng G l mt cp c th t G:=(V, E), trong - V, tp cc nh hoc nt, - E, tp cc cp c th t cha cc nh, c gi l cc cnh c hng hoc cung. Mt cnh e = (x, y) c coi l c hng t x ti y; x c gi l im u/gc v y c gi l im cui/ngn ca cnh. Nu vi mi cnh e=(x,y) thuc E ta t mt s thc tng ng c(x,y) gi l trng s ca n . v c(x,y)= nu e=(x,y) khng thuc E. Nu dy v0, v1, v2vp l mt ng i trn G th di ca n c nh ngha nh sau : p c(vi-1, vi) I=1 Tc l di ca ng i chnh l tng cc trng s trn cc cnh . 2- Bi ton tm ng i ngn nht Bi ton tm ng i ngn nht l bi ton quan trng trong L thuyt th, n c p dng gii quyt rt nhiu bi ton trong thc t nh iu khin ti u, giao thng vn ti, mng vin thng ... Bi ton ny c th chia lm 2 loi: Tm ng i ngn nht gia mt cp nh: Cho th G(V,E) c trng s cnh v hai nh u, v thuc V tm ng i ngn nht t nh u n nh v trn th G. Cc gii thut c pht trin gii bi ton dng ny tiu biu l cc gii thut: Dijkstra, Bellman-Ford,... Tm ng i ngn nht gia tt c cc cp nh: Cho th G(V,E) c trng s cnh tm ng i t nh u n nh v, vi mi cp nh u, v thuc V. Cc gii thut c pht trin gii bi ton ny l: Floyd-Warshall, Johnson,... Trong thc t nhiu khi ta khng ch cn tm ng i ngn nht gia hai nh m cn cn xc nh ng i ngn nht gia mt tp nh ny n mt tp nh khc. Bi ton c pht biu nh sau: Cho th G(V,E) c trng s cnh v hai tp nh A,B V tm ng i ngn nht t tp nh A n tp nh B. Cc thut ton quan trng nht gii quyt bi ton ny l: Thut ton Dijkstra gii bi ton ngun n nu tt c cc trng s u khng m. Thut ton ny c th tnh ton tt c cc ng i ngn nht t mt nh xut pht cho trc s ti mi nh khc m khng lm tng thi gian chy. Thut ton Bellman-Ford gii bi ton ngun n trong trng hp trng s c th c gi tr m. Gii thut tm kim A* gii bi ton ngun n s dng heuristics tng tc tm kim Thut ton Floyd-Warshall gii bi ton ng i ngn nht cho mi cp nh.

Thut ton Johnson gii bi ton ng i ngn nht cho mi cp nh, c th nhanh hn thut ton Floyd-Warshall trn cc th tha. L thuyt nhiu (Perturbation theory); tm ng i ngn nht a phng (trong trng hp xu nht) ng dng thc t ca bi ton tm ng i ngn nht: Trong phm vi bi tp ln ny em ch tm hiu v ng i ngn nht gia mt cp nh no . III- Gii thut Dijkstra 1- Gii thut Dijkstra Trong trng hp trng s trn cc cnh l khng m thut ton do Dijkstra xut gii bi ton tm ng i ngn nht t nh s n cc nh cn li ca th lm vic hu hiu hn rt nhiu so vi cc thut ton trnh by mc trc. Thut ton da trn c s gn cho cc nh cc nhn tm thi. Nhn ca mi nh cho bit cn trn ca di ng i ngn nht t s n n. Cc nhn ny bin i theo mt th tc lp, m mi bc lp c mt nhn tm thi tr thnh nhn c nh. Nu nhn ca mt nh no tr thnh c nh th n s cho ta khng phi l cn trn ca di m l di ca ng i ngn nht t nh s n n. Thut ton c m t c th nh sau : Procedure Dijkstra (* u vo : th c hng G=(V,E) vi n nh S thuc V l nh xut pht , c[u][v] , u,v thuc V ma trn trng s Gi thit: a[u,v]>=0 u,v thuc V u ra : Khong cch t s n cc nh cn li d[v], v thuc V Truoc[v] ghi nhn nh i trc v trong ng i ngn nht t s n v *) Begin (* khi to *) For v Begin D[v]= c[s,v]; Truoc[v]=s; End D[s]=0 ; T= V\{s} (* T l tp cc nh c nhn tm thi *) (* bc lp *) While (T do Begin Tm nh u T tha mn d[u]= min{ d[z]: z T}; T= T\{u}; (* c nh nhn u *)

For v

do (* Gn li nhn cho cc nh trong T*) If( d[v]>d[u]+a[u,v] ) Begin d[v]=d[u]+a[u,v]; truoc[v]=u; end;

end; end; V d : Ma trn trng s

A=

1 2 3 4 5 6

1 0 2

2 1 0

3 5 0 1

4 2 0 3

5 4 0 1

6 7 1

Bng kt qu tnh ton theo thut ton Dijkstra : Quy c vit hai thnh phn ca nhn theo th t l d[v] v truoc[v] Bc lp Khi to 1 2 3 4 5 nh 1 0.1 nh 2 1,1* nh 3 ,1 6,2 4,4* nh 4 ,1 3.2* nh 5 ,1 ,1 7,4 7,4 6,6* nh 6 ,1 8,2 8.2 5,3* -

2-

Tnh ng n ca gii thut Dijkstra Trc ht ta i chng minh l thut ton tm c ng i ngn nht t nh s n cc nh cn li ca th.

Gi s rng mt bc lp no cc nhn c nh cho ta di cc ng i ngn nht t s n cc nh c nhn c nh, ta s chng minh ln lp tip theo nu nh u* thu c nhn c nh l d[u*] chnh l di ng i ngn nht t s n u*. Tht vy ta c K hiu S1 l tp cc nh c nhn c inh cn S2 l tp cc nh c nhn tm thi bc lp ang xt. Kt thc mi bc lp nhn tm thi d[v] cho ta di ng i t s n v ch qua nhng tp nm hon ton trong S1. Gi s rng ng i ngn nht t s n u* khng nm ngn trong S1, tc l n i qua t nht mt nh ca tp S2. Gi z thuc S2 l nh u tin nh vy trn ng i ny. Do trng s trn cc cung l khng m, nn on ng t z n u* c di l L>0 v d[z]< d[u*] L<d[u*]. Bt ng thc ny mu thun vi cch xc nh nh u* l nh c nhn tm thi nh nht. vy ng i ngn nht t s n u* phi nm trn trong S1 v v th d[u*] l di ca n. Do ln lp u tin S1={s} v sau mi ln lp ta ch thm vo S1 mt nh u* nn gi thit d[v] cho di ng i ngn nht t s n v vi mi v thuc S1 l ng vi bc lp u tin. Theo quy np ton hc suy ra thut ton cho ta ng i ngn nht t nh s n mi nh ca th. 3- Thi gian tnh ton ca thut ton Dijkstra nh l : Thut ton Dijkstra tm c ng i ngn nht trn th sau thi gian c O(n2) By gi ta s nh gi s php ton cn thc hin theo thut ton. mi bc lp tm ra nh u cn phi thc hin O(n) php ton v gn nhn li cng cn phi thc hin mt s lng php ton cng l O(n). Thut ton phi thc hin n-1 bc lp vy thi gian tnh ton ca thut ton l O(n2) IV- Kt qu thc nghim 1- So snh gia lp trnh tun t v lp trnh song song Nu ta tng dn d liu u vo (tng kch thc ma trn trng s). Th thi gian tnh ton ca thut ton Dijkstra ci t bng lp trnh tun t s tng dn theo th sau :
6

4 Series 1 3 Series 2 Series 3 2

0 Category 1 Category 2 Category 3 Category 4

4 Series 1 3 Series 2 Series 3 2

0 Category 1 Category 2 Category 3 Category 4

2- 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 b d liu u vo cng ln th thi gian tnh ton ca lp trnh song song cng nhanh hn so vi lp trnh tun t Thi gian tnh ton ca lp trnh song song s tng nu ta tng s lung thc hin, tng s b s l 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 S 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. Lp trnh song song cng nh tnh ton hiu nng cao ang l xu hng hin nay trn th gii. Xu hng ny c th d dng nhn thy qua s tng vt v s lng b x l vt l tch hp trn mt chip trong nhng nm gn y. Thm vo rt nhiu tr nhng h thng gip tnh ton song song c pht trin nh Window HPC Server, Rock Cluster to cho s pht trin ca lp trnh song song.

Ti liu tham kho 1- Internet 2- Gio trnh ton ri rc Nguyn c Ngha , Nguyn T Thnh

You might also like