QuyTC_DH

58
 ĐẠI HC QUC GIA HÀ NI TR ƯỜ NG ĐẠI HC CÔNG NGH Trnh Công Quý PHÁT TRIN Ứ NG DNG SONG SONG VỚ I OPENMP KHÓA LUN TT NGHIP H ĐẠI HC CHÍNH QUY Ngành: Tin hc HÀ NI-2005

description

xxx

Transcript of QuyTC_DH

  • 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 Pi gi thng ip cho BXL Pj khng kt ni cho ti khi c thao tc thng ip . Mt khc BXL Pi gi thng ip cho BXL Pj ni dung ca thng ip c lu trong vng m ca h thng cho n khi BXL Pj nhn v c thng ip. Gi s rng trong cng mt thi im c nhiu BXL cng gi thng ip n BXL Pj v iu ny s lm cho vng m b y. Vic gi thng ip tip theo ch c thc hin khi BXL Pj c mt hay nhiu thng ip

    Gi s BXL Pk l mt trong nhng BXL c kh nng gi thng ip n BXL Pj. Nu BXL Pj c gng c thng ip do BXL Pk gi n n s b kt khi cho n khi ni dung thng ip c trong vng ms. R rng BXL Pk b kt khi cho ti khi BXL Pj loi b mt hay nhiu thng ip t vng m nh vy BXL Pj v Pk ri vo b tc.

  • 15

    Hnh 1.12: Pk kt khi gi X cho Pj v vng m Pj b y nn Pj khng th nhn c X . Pk v Pj 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 Pk Pj

    XGi X cho Pj Pk

  • 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

    printfprintf 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

  • 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

  • 25

    V d .... #pragma omp parallel .... #pragma omp for schedule (guided,1) for (int i=1;i

  • 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

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

    m1 v m2 l khi lng hai body r12 l khong cch gia hai body G l hng s hp dn

    Gm1m2 r212

    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

  • 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)

    th

    i gia

    n(s)

    tuan tu

    song song vngfor th nhtsong song vngfor th haisong song c haivng 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