Báo cáo lập trình song song

download Báo cáo lập trình song song

of 14

Transcript of Báo cáo lập trình song song

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=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