You are on page 1of 10

Pht trin chng trnh tnh ton song song trn mi trng phn tn b nh cho m hnh d bo thi tit

HRM
Developing a New Parallel Code in Distributed Memory Computers for the Weather Forcast Model HRM
Nguyn c Lng
Abstract: In the National Center for HydroMeteorological Forecasting of Vietnam, a weather forecast model named HRM from Germany was applied in operational forecasting. However, having used a shared memory supercomputer IBM-RISS6000, the running time was more than the requested time for an operational model. While a new shared memory supercomputer is not available because of its high cost, a distributed memory cluster seems more appropriate. Because HRM code is driven to shared memory computers, rewriting HRM code in distributed computers is necessary. The parallel algorithms and data structures must also be reconstructed to achieve higher computing performance. The new HRM parallel code with two dimensional decomposition in data processing has been developed and reduced the running time considerablely.

khoa hc gia Vit Nam v Cng ha Lin Bang c. Vi cu trc chng trnh v m hnh tnh ton song song nh hin ti, khi d bo 6 ting trn my chia s b nh IBM RISS6000 do Trung tm D bo Kh tng Thy vn Trung ng u t thi gian thc chy chng trnh l 80 pht. Thi gian chy chng trnh nh vy khng p ng c cc yu cu nghip v bi vi d bo trc 2 ngy hay 48 ting thi gian cn chy chng trnh s khong 10 gi. rt ngn thi gian tnh ton ta c th n gin u t mua thm cc siu my tnh song song theo m hnh chia s b nh. Tuy nhin nhng my tnh nh vy c gi thnh rt cao. Va mun gim gi thnh li vn m bo hiu nng tnh ton ca m hnh ta c th hng n cc my tnh b nh phn tn m in hnh l h thng my tnh b song song. Tuy nhin xy dng chng trnh HRM trn h thng my tnh ny i hi chuyn i m ngun tnh ton song song ca chng trnh HRM t m hnh chia s b nh sang m hnh b nh phn tn. Do , vic ti cu trc chng trnh v cu trc d liu cn phi c thc hin. Tuy nhin, trc ht l mt s gii thiu c bn v m hnh HRM cng nh mt s kin thc chung v tnh ton song song. 1. M hnh d bo thi tit HRM HRM s dng h phng trnh vi phn o hm ring Navie-Stokes gm phng trnh bo ton ng lng, phng trnh bo ton khi lng, phng 73

I. GII THIU M hnh d bo thi tit khu vc HRM c pht trin ti Cc Kh tng Cng ha Lin Bang c t ng gp ca nhiu chuyn gia kh tng. HRM m phng c nhng qu trnh din bin ng lc v vt l kh quyn nm trn thang quy m va t 40km n 7km. M hnh c cung cp min ph cho cc trung tm kh tng ti cc nc ang pht trin cho c mc ch nghin cu cng nh nghip v. Hin ti trn th gii c khong hai mi nc ang s dng m hnh ny trong nghip v. Ti Vit Nam HRM c a vo chy nghip v ti Trung tm D bo Kh tng Thy vn Trung ng t nm 2002 thng qua hp tc

trnh bo ton nng lng, phng trnh bo ton m trong m phng chuyn ng kh quyn. Cc bin d bo c bn c vn tc gi v hng u, vn tc gi kinh hng v, p sut b mt ps, nhit T, m ring qv. Nu m phng my ta phi d bo thm lng nc v bng trong my qc v qi. Ngoi ra, h phng trnh phi bao gm c cc s hng m t nhng qu trnh quy m di quy m va t cc vn chuyn do ri cho n cc qu trnh quy m phn t. Cc qu trnh ny mc d khng nm bt c trong m hnh quy m va nh HRM nhng tc ng ca chng n cc qu trnh quy m va rt quan trng. nh lng tc ng ca nhng qu trnh ny ln din bin ng lc quy m va ca h thng kh quyn ngi ta phi thc hin tham s ha vt l. Tham s ha vt l l mt phng php cho php nh gi tc ng ca nhng qu trnh quy m nh ti nhng qu trnh quy m ln hn di dng mt hm s m cc bin quy m ln hn trong phng trnh ng lc c s dng di dng tham s. Mt m hnh quy m va nh HRM cn tham s ha nhng qu trnh vt l sau: bc x mt tri, my, qu trnh sinh ma, qu trnh ri ti lp bin v cc qu trnh thy vn trn b mt cng nh trong t. H phng trnh Navie-Stokes HRM s dng s c gii gn ng bng cch xp x cc o hm ring di dng ri rc, vit li h phng trnh vi phn o hm ring di dng sai phn tc l mt h phng trnh i s tuyn tnh sau s dng my tnh tm nghim di dng s. Nh th min tnh lin tc s c chuyn thnh mt li ri rc vi phn gii ln m bo khng b qua hin tng quan tm. Xp x ca o hm ring theo kinh i lng f bt k trong khng gian c thc hin qua s sai phn trung tm. Xp x ca o hm ring theo thi gian c thc hin phng php Leapfrog. Tuy nhin vn phc tp hn khi c s xut hin ca sng trng trng trong kh quyn. Cc sng ny xut hin t cc dao ng sinh ra di tc ng ca lc y Archimades vi tc lan truyn kh ln 330m/s. Nhng sng trng trng ny gii hn bc thi gian tch phn li rt nh. Vi bc li 74

30km v gi cc i ln n 110m/s bc thi gian cn nh hn 20s. Ch rng y ch l iu kin cn, thc t tch phn n nh bc thi gian phi nh hn rt nhiu. Nh vy phng php Leafrog khng kinh t tnh ton, mt nhiu thi gian tch phn, khng m bo v thi gian nghip v. tng bc thi gian d bo ngi ta phi dng cch sai phn bn n tc l sai phn n cc s hng sinh sng trng trng. Nh vy tch phn cc phng trnh c bn s gm hai bc: tch phn hin v hiu chnh bn n sau . Trong bc hiu chnh bn n bng nhng bin i ton hc ta s a bi ton v mt h phng trnh Helmholtz hai chiu. Cui cng bng mt php chiu ln cc vector ring ta s a h ny tr thnh cc phng trnh Helmholtz hai chiu c lp. Cc phng trnh elliptic ny c HRM gii theo phng php lc Gauss-Seidel trc i bin theo php bin i Fourier nhanh. Nhng x l ton hc ny qu phc tp nn s khng c trnh by y. Ngi c c th tham kho thm trong Burridge (1975) v Simmons (1981). 2. Tnh ton song song My tnh mt b vi x l c nhng gii hn v hiu nng tnh ton. Thi gian tr trn b nh v thit b lu tr l cn tr chnh m nh thit k my tnh phi i mt. Thi gian tr n t cc rng buc vt l v rt kh gim thiu. Vi cc thit b lu tr thi gian tr vo c ms v gp hng triu ln thi gian tr ca b vi x l. Nh vy t c hiu nng tnh ton cao, tnh ton song song c tip cn v nghin cu trong nhiu nm. Tnh ton song song gp phn bin i mt lot cc ngnh khoa hc k thut bao gm v tr hc, m hnh ha cht lu, vt l trng thi ngng t, sc ng hc lng t, m phng thit b bn dn trong c kh tng. Trn quan im phn cng th m hnh b nh phn tn l cch tip cn song song ha n gin nht. Cc my tnh s c kt ni trong mt mng my tnh. M hnh lp trnh in hnh bao gm cc tin trnh ring r trn mi my tnh truyn thng bng cch gi v nhn cc thng ip. y l dng thc c in nht ca tnh ton song song. H thng b nh phn tn l

h thng my tnh song song thng dng nht hin nay. Cch tip cn m hnh b nh chia s phc tp hn, tp hp cc my tnh mt cch cht ch hn bng cch a b nh vo mt khng gian a ch duy nht. Mi CPU s truy nhp n d liu thng qua cc lnh nhp v xut trong tp lnh c bn. Bi truy cp thng qua tp lnh c bn nhanh hn l cc lnh truy cp mng trong h phn tn cho nn truy cp xa c thi gian tr thp hn, bng thng rng hn. II. PHT TRIN CHNG TRNH TNH TON SONG SONG TRN MI TRNG PHN TN B NH CHO M HNH HRM 1. Tnh ton song song trong m hnh HRM Trn mi trng tnh ton song song chia s b nh ton b d liu c t vo mt vng nh tp trung v duy nht, mi tin trnh u c th truy cp trc tip n vng d liu ca tin trnh khc v iu lu nht ca ngi thit k song song l m bo khng c xung t khi truy cp b nh v nh hng bin dch cho cc vng lp. lm c iu ny ngi ta chia bi ton thnh nhiu phn on sao cho ti mi phn on cc phn nh c s truy cp ca nhiu tin trnh l ch c. M hnh HRM phin bn 1.5 thc hin song song ha theo OpenMP. Vit Nam cng c cung cp phin bn ny cng vi mt my tnh IBM RISS6000. OpenMP c s dng cho cc m hnh song song chia s b nh, ph hp cho cc ng dng song song mc va phi. u im r rng nht ca OpenMP chnh l tnh n gin khi vit chng trnh bi OpenMP hon ton gi nguyn cu trc lp trnh tun t, song song ha ch c th hin qua cc cu trc dn hng bin dch vng lp. Cu trc chng trnh chnh trong HRM c thc hin song song vi OpenMP c th hin trn Hnh 1. Chc nng ca mi chng trnh con c m t ngn gn nh sau: Prog_s_01: xc nh trng th nng bng cch tch phn phng trnh thy tnh. Song song ha

c thc hin theo hng Bc Nam tc l vng tnh c chia thnh cc di v song song vi nhau. SUBROUTINE prog_s_01 (ki1sc, ki1ec, ki2sc, ki2ec)

Prog_s_01

Prog_s_02

Physics

Prog_s_03

Prog_s_04

Prog_s_05

Prog_s_06

Prog_s_07

Prog_s_08

Rubc

Dia_phys

Meteograph

Diagnos

Caladdfld

Pp_org

Hnh 1. S khi chng trnh tch phn theo thi gian chia s nh ca m hnh HRM

Prog_s_02: xc nh kt qu d bo ban u ca cc bin d bo ps, u, v, T, qv, qc, qi t file s liu bin bng php ni suy tuyn tnh gia hai thi im c nh. Song song ha c thc hin theo hng Bc Nam. SUBROUTINE prog_s_02 (ki1sc, ki1ec, ki2sc, ki2ec) 75

Physics: tham s ho cc qu trnh vt l ca m hnh. Cc qu trnh tham s ha ln lt theo trnh t bao gm: tham s ho qu trnh ging thu quy m li, tnh ph my cng lng nc v bng trong my, tham s ho bc x, tham s ho qu trnh ri thng ng trong kh quyn, tham s ho qu trnh ri thng ng ti b mt, tham s ho i lu, tham s ho qu trnh t. Song song ha cng c thc hin theo hng Bc Nam nhng khng phi trn nhng di ln m mi di ch tng ng vi mt hng (mt v ). SUBROUTINE physics_03 (ki1sc, ki1ec, ki2sc, ki2ec) Prog_s_03: d bo hin theo phng php Leapfrog cc bin ps, u, v, T, qv, qc, qi. Song song ha c thc hin theo hng Bc Nam. SUBROUTINE prog_s_03 (ki1sc, ki1ec, ki2sc, ki2ec) Prog_s_04: xc nh v phi ca phng trnh Helmholtz ba chiu ri nhn ma trn ny (dng vector cho mi im kinh v) vi ma trn vector ring (ma trn hai chiu) ca ma trn cu trc ta s thu c vector m mi s hng s l v phi ca mt phng trnh Helmholtz hai chiu. y l khi u ca phn hiu chnh bn n. Song song ha c thc hin theo hng Bc Nam. SUBROUTINE prog_s_04(ki1sc, ki1ec, ki2sc, ki2ec) Prog_s_05: gii n phng trnh Helmholtz hai chiu tng ng vi n mc m hnh chu tc ng nhiu t sng trng trng mnh nht. Song song ha c thc hin bng cch gii song song n phng trnh Helmholtz hai chiu. SUBROUTINE prog_s_05 (kj3) Prog_s_06: cng cc gi tr hiu chnh tnh c trn vo cc gi tr d bo hin tnh c t phn d bo hin trc . Phn ny kt thc qu trnh hiu chnh bn n. Song song ha c thc hin theo hng Bc Nam. SUBROUTINE prog_s_06(ki1sc, ki1ec, ki2sc, ki2ec) 76

Prog_s_07: thc hin bin gim d, lc Asselin cho cc bin d bo nhm gim tr nghim tnh ton trong s Leapfrog. Song song ha c thc hin theo hng Bc Nam. SUBROUTINE prog_s_07(ki1sc, ki1ec, ki2sc, ki2ec) Prog_s_08: tnh trng th nng ti mc thi gian mi, xc nh cc trng cnh bo b mt. Song song ha c thc hin theo hng Bc Nam. SUBROUTINE prog_s_08(ki1sc, ki1ec, ki2sc, ki2ec) Rubc: tnh vn tc thng ng ti nh m hnh nu m hnh s dng iu kin bin trn pht x. Tnh ton tun t. SUBROUTINE rubc (kt2) Dia_phys: tnh gi tr trung bnh ca cc bin d bo cng mt s i lng dn xut sau mt khong thi gian nht nh. Tnh ton tun t. SUBROUTINE dia_phys Meteograph: kt xut din bin thi tit ti mt a im. Tnh ton tun t. SUBROUTINE meteograph Diagnos: tnh gi tr cc bin cho php theo di qu trnh chy ca m hnh. Tnh ton tun t. SUBROUTINE diagnos Caladdfld: tnh mt s trng ph vi mc ch kt xut gm cao nh i lu kh, su my, ph my, cao mc 0oC. Song song ha c thc hin theo hng Bc Nam. SUBROUTINE caladdfld (ki1sc, ki1ec, ki2sc, ki2ec) Pp_org: ni suy gi tr cc bin t mc m hnh v mc p sut, ghi s liu ra file di dng GRIB1 (nh dng s liu kh tng theo t chc Kh tng th gii). Tnh ton tun t. SUBROUTINE pp_org ( knl ) Nh vy khng k cc phn on tnh ton tng tc vi thit b ngoi vi c 10 phn on tnh ton c song song ha trong 8 phn on song song theo hng Bc Nam, 1 phn on c song song

ha theo s sng trng trng cn sai phn bn n v mt phn on song song ha theo tng hng. Tt c cc on m ny u c vit theo cc dn hng bin dch ca OpenMP cho Fortran. Di y l on m song song ha khi chy phn on tnh ton sai phn hin
IF (lmpi) THEN DO jt = 1,nproc IF ((myid+1) == jt) THEN mi1sc = mj1_start(jt) mi1ec = mj1_end (jt) mi2sc = mj2_start(jt) mi2ec = mj2_end (jt) CALL prog_s_03 (mi1sc, mi1ec, mi2sc, mi2ec) ENDIF ENDDO ELSE !$OMP PARALLEL DO !$OMP& PRIVATE(jp,jt,mi1sc,mi1ec,mi2sc,mi2ec) !$OMP& SHARED (mj1_start,mj1_end,mj2_start,mj2_end,nproc) !$OMP& SHARED (lmpi,myid) DO jp = 1,nproc mi1sc = mj1_start(jp) mi1ec = mj1_end (jp) DO jt = mj2_start(jp),mj2_end(jp),nrow mi2sc = jt mi2ec = jt + nrow - 1 IF (mi2ec > mj2_end(jp)) mi2ec = mj2_end(jp) CALL prog_s_03 (mi1sc, mi1ec, mi2sc, mi2ec) ENDDO ENDDO !$OMP END PARALLEL DO ENDIF IF (lmpi) THEN CALL MPI_BARRIER (MPI_COMM_WORLD, mpi_err) ENDIF IF (lmpi) THEN CALL send_recv_prog_03

hng kt thc) l ring cho mi tin trnh. iu ny kh d hiu bi hai ch s mi2sc v mi2ec ng vi mi tin trnh s xc nh on d liu trn tin trnh ny phi x l. Cc bin khng c cc tin trnh phn bit gm c: nproc (s tin trnh), mj2_start (mng ch s hng m u), mj2_end (mng ch s hng kt thc), mi1sc (ch s ct m u) v mi1ec (ch s ct kt thc). Do ch song song ha theo hng Bc Nam nn ch s ct m u v kt thc l nh nhau cho mi tin trnh. on m nm gia dn hng bin dch PARALLEL DO v END PARALLEL DO ch n gin l on m Fortran thc hin mt vng lp trn cc tin trnh. Mi vng lp gi ti chng trnh tch phn hin trn vng d liu c xc nh bi cc ch s mi1sc, mi1ec, mi2sc, mi2ec. Nh OpenMP m thay v thc hin tun t cc vng lp s c thc hin song song ngha l cc tin trnh tch phn hin song song. Nh ni trn qu trnh song song c thc hin theo hng Bc Nam. By gi ta chuyn sang on m song song ha khi chy phn on tham s ha vt l:
IF (lphys) THEN IF (lmpi) THEN DO jt = mj2_start(myid+1),mj2_end(myid+1) mi2sc = jt mi2ec = jt mi1sc = mj1_start(myid+1) mi1ec = mj1_end (myid+1) CALL physics (mi1sc, mi1ec, mi2sc, mi2ec) ENDDO CALL MPI_BARRIER (MPI_COMM_WORLD, mpi_err) ELSE !$OMP PARALLEL DO !$OMP& PRIVATE(jp,jt,mi1sc,mi1ec,mi2sc,mi2ec) !$OMP& SHARED (mj1_start,mj1_end,mj2_start,mj2_end,nproc) !$OMP& SHARED (lmpi,myid) DO jp = 1,nproc mi1sc = mj1_start(jp) mi1ec = mj1_end (jp) DO jt = mj2_start(jp),mj2_end(jp) mi2sc = jt; mi2ec = jt CALL physics (mi1sc, mi1ec, mi2sc, mi2ec) ENDDO ENDDO !$OMP END PARALLEL DO ENDIF

on m ny c trng cho cc phn on tnh ton c song song song ha theo hng Bc Nam. Din gii on m ny t ngn ng song song ca OpenMP ta c th thy nh sau. Trc ht dn hng bin dch PARALLEL DO v END PARALLEL DO c OpenMP s dng m u v kt thc vng lp song song. Hai c t PRIVATE v SHARED trong vng lp PARALLEL DO cho ta bit cc bin l a phng vi mi tin trnh hay c dng chung bi cc tin trnh. C th y ba bin jt (ch s tin trnh), mi2sc (ch s hng m u), mi2ec (ch s 77

Khc vi phn on tch phn hin c song song ha theo tng di theo hng Bc Nam phn on tham s ha vt l c song song ha theo tng hng. iu ny c th hin khi vng lp do jt=ig2s+1, ig2e-1 cho ta bit chng trnh s thc hin tnh ton lp theo tng hng trn ton min tnh. Kt qu l hai ch s hng m u mi2sc v kt thc mi2ec cho mi tin trnh s trng nhau, cng l ch s ca mt hng jt. Chnh hng song song ha theo tng hng nh vy s lm gim hiu nng tnh ton ca m hnh rt nhiu. Cui cng l phn on m song song ha gii h phng trnh Helmholtz hai chiu c lp
IF (lsits) THEN IF (lmpi) THEN DO j3 = mj3_start(myid+1),mj3_end(myid+1) CALL prog_s_05 (j3) ENDDO CALL MPI_BARRIER (MPI_COMM_WORLD, mpi_err) ELSE !$OMP PARALLEL DO !$OMP& PRIVATE(j3) !$OMP& SHARED (nsi) DO j3 = 1,nsi CALL prog_s_05 (j3) ENDDO !$OMP END PARALLEL DO ENDIF IF (lmpi) THEN CALL send_recv_prog_05

nh hng bin dch cho cc vng lp. lm c iu ny, ngi ta chia bi ton thnh nhiu phn on sao cho ti mi phn on cc phn nh c s truy cp ca nhiu tin trnh l ch c. Cho n phin bn HRM_1.5 th vic thit k v lp trnh song song cho mi trng chia s b nh c hon thin v a vo s dng mt vi nc. Vit Nam cng c cung cp vi mt my tnh IBM RISS6000, vi d bo trc 48 gi thi gian cn chy chng trnh khong 10 gi. rt ngn thi gian tnh ton c th u t mua cc siu my tnh song song chia s b nh, nhng my tnh nh vy c gi thnh rt cao. Va mun h gi thnh li vn m bo hiu nng tnh ton ca m hnh c th hng n cc my tnh b nh phn tn. Do vic ti cu trc chng trnh v cu trc d liu cn phi c thc hin. Phn tch mt bc tch phn ca m hnh HRM cho thy mi phn on tnh ton cn khong 15 giy ngoi tr physics do song song ha theo hng nn cn nhiu thi gian hn khong 50 giy. Mi bc nh vy s mt 190 giy. Thi gian gi nhn ti u cho d liu gia hai node tnh ton theo chng ti th nghim cn khong 1 giy trung bnh. Do nu chia chng trnh ra khong 6 node tnh ton song song cc phn on v 2 ln gi truyn gia cc node th thi gian tnh cho mt bc lp thi gian d bo s khong 34 giy. Tng thi gian cho 48 ting d bo s l 1 gi. V chng trnh hon ton p ng tnh nng thi gian thc vi u t phn cng khng qu cao. Trong tnh ton song song hin ti m hnh HRM, song song ha ch c thc hin mt chiu theo hng Bc Nam. song song ha theo hng d liu c thc hin vi nhiu phn t d liu hn ta c th song song ha theo c hai hng Bc Nam v ng Ty. Trong mi trng song song chia s b nh mi tin trnh c vng nh ring v khng th truy cp n phn d liu ca cc tin trnh khc c. Vic trao i d liu phi thng qua cc hm truyn nhn d liu ca cc th vin bin dch song song. Cng vic cho ngi thit k song song phc tp hn l phn chia lm sao c s c lp tng i v d liu 78

y nsi l s phng trnh Helmholtz hai chiu cn c gii (ta khng cn phi gii ton b cc phng trnh Helmholtz do ch nhng phng trnh tng ng vi cc sng trng trng c vn tc ln mi cn c gii n). Nh vng lp do j3=1, nsi cho thy qu trnh song song c thc hin ng thi trn nsi phng trnh. 2. Chuyn i tnh ton song song phn tn b nh trong m hnh HRM Trn mi trng tnh ton song song chia s b nh, ton b d liu c t vo mt vng nh tp trung v duy nht, mi tin trnh u c th truy cp trc tip n vng d liu ca tin trnh khc v iu lu nht ca ngi thit k song song chia s b nh l m bo khng c xung t khi ttruy cp nh v

gia cc tin trnh tc l mi tin trnh truy cp n vng d liu ca tin trnh khc cng t cng tt v lp trnh ng b d cho cc tin trnh. Min tnh ton ca m hnh s c phn b cho mi CPU sao cho cn bng nht c th. Mi tin trnh s d bo cho min d liu ca ring mnh. Duy nht tin trnh 0 qun l tt c cc ch s hng v ct ca min tnh. Cc tin trnh khc ch c ch s hng v ct cho ring vng d liu ca tin trnh ny. Cc tin trnh s trao i vi nhau thng qua hai hng v ct ngoi cng ti bin min tnh ca min d liu ca n. Ring vi h phng trnh Helmholtz hai chiu qu trnh song song vn c thc hin gii song song cc phng trnh Helmholtz hai chiu c lp. Vic ng b d liu trong chng trnh c thc hin nh sau: Tin trnh 0 c iu kin ban u v gi cho tt c cc process khc. Mi tin trnh tnh ton trn min con ca n v ng b bin vi cc ln cn ca n. Ti cc thi im cp nht gi tr bin t m hnh ton cu tin trnh 0 c gi tr bin v gi cho cc tin trnh khc. Ti cc thi im d bo cc tin trnh khc gi d liu trong min con ca mnh cho tin trnh 0, tin trnh 0 tng hp d liu thnh d liu ca ton b m hnh v ghi ra file. thc hin chin lc song song ha ny mt s phng thc truyn thng cn c thc hin nhm m bo trao i d liu gia cc tin trnh. Di y l cc phng thc c thc hin Recv_full: gi cc trng d bo t tin trnh 0 ti tt c cc tin trnh ti bc thi gian u tin. Recv_lb: gi cc trng bin t tin trnh 0 ti tt c cc tin trnh ti bc thi gian u tin. Send_recv_physics: trao i d liu cc trng lin quan n phn tham s ha vt l gia cc tin trnh. Send_recv_prog_03: trao i cc trng cnh bo tnh c t phn d bo hin cn cho s hiu 79

chnh bn n gia cc tin trnh. Send_recv_prog_04: trao i cc trng tnh c t chng trnh prog_s_04 cn cho bc tip theo trong s hiu chnh bn n gia cc tin trnh. Send_recv_prog_05: trao i cc trng tnh c t chng trnh prog_s_05 cn cho bc tip theo trong s hiu chnh bn n gia cc tin trnh. Send_recv_prog_08: trao i cc trng d bo tnh c t chng trnh prog_s_07 gia cc tin trnh. Send_full: gi cc trng d bo t mi tin trnh 1 cho n n ti tin trnh 0 sau mt khong thi gian thch hp cn thit cho vic kt xut d liu. Hnh 2 l S khi chng trnh tch phn theo thi gian phn tn b nh ca m hnh HRM. Chng trnh chnh ca HRM: a) Khi to chng trnh
CALL MPI_INIT (mpi_err) CALL MPI_COMM_RANK (MPI_COMM_WORLD, myid , mpi_err) CALL MPI_COMM_SIZE (MPI_COMM_WORLD, nproc, mpi_err) CALL readnlst CALL allocate_fields CALL setup_vartab_1 CALL setconst1 IF (myid == 0) THEN CALL get_sd (muic, muim) CALL read_sd (muic, muim) ENDIF CALL gengrid CALL setconst2 IF (myid == 0) THEN CALL setup_verint CALL setup_meteograph ENDIF nstep = nstart nstep_lb = (nstep/ninc_lb)*ninc_lb IF (myid == 0) THEN CALL get_lb (nstep_lb, muic) CALL read_lb (nstep_lb, muic, 1) CALL get_lb (nstep_lb + ninc_lb, muic) CALL read_lb (nstep_lb + ninc_lb, muic, 2) ENDIF IF (nstep == 0 .AND. .NOT. lana_lb .AND. myid == 0) THEN CALL id_mix_lb ENDIF IF (lmpi) THEN CALL recv_lb (1,nt2) ENDIF

IF (lmpi) THEN CALL MPI_BARRIER (MPI_COMM_WORLD, mpi_err) ENDIF

COUNT_MAX=im) IF (icountsnew .GE. icountsold) THEN read_lbc_count = read_lbc_count + REAL (icountsnew - icountsold) / REAL (ir) ELSE read_lbc_count = read_lbc_count + REAL (im (icountsnew - icountsold)) / REAL (ir) ENDIF ENDIF IF (lmpi) THEN CALL recv_lb (n2_lb, n2_lb) ENDIF IF (lmpi .AND. ltiming .AND. myid == 0) THEN CALL SYSTEM_CLOCK(COUNT=icountsnew,COUNT_RATE=ir, COUNT_MAX=im) IF (icountsnew .GE. icountsold) THEN com_lbc_count = REAL (icountsnew - icountsold) / REAL (ir) ELSE com_lbc_count = REAL (im - (icountsnew icountsold)) / REAL (ir) ENDIF ENDIF ENDIF CALL progorg IF (MOD(NINT((nstep+1)*dt), 3600) == 0 .AND. myid == 0) THEN WRITE (*,'(a,i3.3,a)') ' Forecast completed for + ', NINT((nstep+1)*dt)/3600, ' h' ENDIF ENDDO

c) Kt thc chng trnh


Hnh 2 S khi chng trnh tch phn theo thi gian phn tn nh ca m hnh HRM.
IF (lmpi) THEN CALL MPI_BARRIER (MPI_COMM_WORLD, mpi_err) CALL MPI_FINALIZE (mpi_err) ENDIF

b) Vng lp chnh
DO nstep = nstart, nstop IF (nstep+1 > nstep_lb + ninc_lb) THEN IF (ltiming .AND. myid == 0) THEN CALL SYSTEM_CLOCK(COUNT=icountsold,COUNT_RATE=ir,C OUNT_MAX=im) ENDIF n1_lb = 3 - n1_lb n2_lb = 3 - n2_lb nstep_lb = (nstep/ninc_lb)*ninc_lb IF (myid == 0) THEN CALL get_lb (nstep_lb + ninc_lb, muic) CALL read_lb (nstep_lb + ninc_lb, muic, n2_lb) ENDIF IF (ltiming .AND. myid == 0) THEN CALL SYSTEM_CLOCK(COUNT=icountsnew,COUNT_RATE=ir,

Sau khi khi ng tnh ton MPI vi hm MPI_INIT ta s xc nh nh danh tin trnh ang chy v s tin trnh qua hm MPI_COMM_RANK v MPI_COMM_SIZE. D liu ban u v d liu bin sau khi c c vo b nh s c tin trnh 0 gi ti tt c cc tin trnh khc. iu ny c thc hin qua phng thc recv_full v recv_lb trong c s dng phng thc MPI_RECV ca MPI. Trc khi bt u v sau khi kt thc vng lp tch phn ta ng b hot ng ca cc tin trnh nh phng thc MPI_BARRIER. Cui cng tnh ton vi MPI kt thc MPI_FINALIZE. Khc vi phn on m sai phn hin song song ha vi OpenMP phn on m song song vi MPI s 80

c dng:
do jt = 1, nproc if ((myid+1) == jt) then mi1sc = mj1_start(jt) mi1ec = mj1_end (jt) mi2sc = mj2_start(jt) mi2ec = mj2_end (jt) call prog_s_03(mi1sc, mi1ec, mi2sc, mi2ec) endif enddo call MPI_BARRIER(MPI_COMM_WORLD, mpi_err) call send_recv_prog_03

Ta phi phn chia cc tin trnh mt cch hp l theo s cc phng trnh Helmholtz cn c gii. Mi tin trnh s c c thng tin n t ton b min tnh khng ch ring cho min con d liu ca n, xc nh cc h s trong phng trnh m n s gii. III. KT LUN Chng trnh c thc hin sau a vo kim tra, nh gi vi d liu thc cho thy nhng kt qu sau Thit k song song m bo tnh ton vn d liu, khng pht sinh v tch lu sai s ca bi ton ngha l kt qu tnh ton song song v tun t l hon ton ging nhau. Chng trnh c vit trn cc hm chun ca th vin MPI m bo bin dch d dng. Tc tnh ton c ci thin r rt, m bo thi gian thc, c th a vo chy nghip v d bo hng ngy. Trung tm D bo Kh tng Thu vn Quc gia lp t mt my tnh song song b nh phn tn v a chng trnh HRM vo chy nghip v phc v cho vic d bo thi tit trn c nc. Thi gian chy chng trnh d bo cho 72 ting mt khong 45 pht. Cho n nay h thng vn chy n nh, phc v tt cho cng tc d bo thi tit ca Trung tm. TI LIU THAM KHO
[1] Burridge DM. A split semi-implicit reformulation of the Bushby-Timpson 10-Level model. Quart. J. Roy. Meteor. Soc. 101, 430, 777-792. 1975 [2] Davies HC. A lateral boundary formulation for multilevel prediction models. Quart. J. Roy. Meteor. Soc. 102, 432, 405-418. 1976. [3] Dongarra J et all. Sourcebook of parallel computing. Morgan Kaufmann publishers. 2003. [4] Louis JF. A parametric model of vertical eddy fluxes in the atmosphere. Boundary layer Meteor., 17, 187-202. 1979. [5] Majewski D et all. The operational global icosahedralhexagonal gridpoint model GME: Description and high-resolution tests. Mon. Wea. Rev., 130, 319-338. 2002.

Mi tin trnh s t xc nh min con tnh ton ca n thng qua bn ch s mi1sc, mi1ec, mi2sc v mi2ec sau tch phn hin. Cc tin trnh sau khi kt thc phn tnh ton ca mnh s ng b hot ng t phng thc MPI_BARRIER v trao i cc kt qu trn bin cho nhau send_recv_prog_03. Phn on m tham s ha vt l song song ha vi MPI c dng sau
do jt = mj2_start(myid+1), mj2_end(myid+1) mi2sc = jt mi2ec = jt mi1sc = mj1_start(myid+1) mi1ec = mj1_end (myid+1) call physics(mi1sc, mi1ec, mi2sc, mi2ec) enddo call MPI_BARRIER(MPI_COMM_WORLD, mpi_err)

So vi phn on m song song theo MPI y c mt s khc bit vi phn on m song song theo OpenMP. Mi tin trnh vn thc hin tnh ton trn min con d liu ca ring n khc vi phin bn song song ha theo hng ca OpenMP. Do modul tham s ha vt l physics ch thc hin tnh ton theo hng nn mi tin trnh phi thc hin tun t tham s ha theo hng t Nam ln Bc. Tuy vy song song ha vn hon ton c thc hin theo c hai phng ng Ty v Bc Nam. Phn on m h phng trnh Helmholtz hai chiu c lp song song ha theo MPI cng c vit li nh sau.
do j3 = mj3_start(myid+1), mj3_end(myid+1) call prog_s_05 (j3) enddo call MPI_BARRIER (MPI_COMM_WORLD, mpi_err) call send_recv_prog_05

D thy phng thc thc hin hon ton tng t nh m t vi phn on m song song vi OpenMP. 81

[6] Mellor GL and Yamada T. A hierarchy of turbulent closure models for planetary boundary layers. J. Atmos. Sci., 31, 1791-1806. 1974. [7] Ritter B and Geleyn JF. A comprehensive radiation scheme for numerical weather prediction models with potential applications in climate simulations. Mon. Wea. Rev., 119. 1992. [8] Simmons AJ and Burridge DM. An energy and angular-momentum conserving vertical finite-difference scheme and hybrid vertical coordinates. Mon. Wea. Rev., 109, 758-766. 1981.

[9] Tiedtke M. A comprehensive mass flux scheme for cumulus parameterization in large scale models. Mon. Wea. Rev., 117, 1779-1800. 1989. [10] Phm Hng Quang, ti cu trc my tnh song song, D n thng tin ting Vit trn Internet, 2005. Ngy nhn bi: 05/04/2006

S LC TC GI

NGUYN C LNG Sinh nm 1959. Tt nghip Khoa Ton H S Phm Vit Bc nm 1978, nhn bng Thc s chuyn ngnh i s v L thuyt s H S Phm H Ni nm 1996, Thc s Cng ngh Thng tin ti H Khoa hc T Nhin - H Quc Gia H Ni nm 1999, hin ang l NCS chuyn ngnh Bo m Ton hc cho my tnh v h thng tnh ton ti Vin Ton hc - Vin Khoa hc v Cng ngh Vit Nam. Hin ang l Ph Trng Khoa Khoa hc T Nhin, i hc Thi Nguyn Hng nghin cu: Tnh ton song song Email: nguyenduclang2002@yahoo.com

82

You might also like