Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

PobedilRomanskogo / Антонов - MPI (2004)

.pdf
Скачиваний:
17
Добавлен:
13.04.2015
Размер:
402.03 Кб
Скачать

Fhkdh\kdbc ]hkm^Zjkl\_gguc mgb\_jkbl_l bf F < Ehfhghkh\Z

GZmqgh-bkke_^h\Zl_evkdbc \uqbkebl_evguc p_glj

: K :glhgh\

I:J:EE?EVGH? IJH=J:FFBJH<:GB? K BKIHEVAH<:GB?F L?OGHEH=BB

MPI

Ba^Zl_evkl\h

Fhkdh\kdh]h mgb\_jkbl_lZ

2004

M>D 681.3.06 ;;D – 018.2*32.973

:

J_p_ga_glu

aZf ^bj_dlhjZ GB<P F=M qe_g-dhjj_kihg^_gl J:G <e < <h_\h^bg aZf ^bj_dlhjZ GBBYN F=M ^hdlhj nbabdh-fZl_fZlbq_kdbo gZmd < : Bevbg

:glhgh\ : K

: IZjZee_evgh_ ijh]jZffbjh\Zgb_ k bkihevah\Zgb_f l_ogheh]bb MPI: Mq_[gh_ ihkh[b_ F Ba^-\h F=M k

ISBN 5-211-04907-1

Ihkh[b_ ij_^gZagZq_gh ^ey hk\h_gby ijZdlbq_kdh]h dmjkZ iZjZee_evgh]h ijh]jZffbjh\Zgby k bkihevah\Zgb_f l_ogheh]bb MPI < gZklhys__ \j_fy l_ogheh]by MPI y\ey_lky hkgh\guf kj_^kl\hf ijh]jZffbjh\Zgby ^ey deZkl_jguo kbkl_f b dhfivxl_jh\ k jZkij_^_e_gghc iZfylvx gh fh`_l ijbf_gylvky lZd`_ b gZ \uqbkebl_evguo kbkl_fZo ^jm]bo lbih\ Dmjk \dexqZ_l \ k_[y hibkZgb_ [hevrbgkl\Z hkgh\guo ijhp_^mj klZg^ZjlZ MPI- k ijbf_jZfb bo ijbf_g_gby b ijZdlbq_kdb_ k\_^_gby dhlhju_ fh]ml ihlj_[h\Zlvky ijb gZibkZgbb j_Zevguo ijh]jZff Hkgh\gh_ hibkZgb_ \_^_lky k bkihevah\Zgb_f \uah\h\ ijhp_^mj MPI ba ijh]jZff gZ yaud_ NhjljZg h^gZdh mdZaZgu lZd`_ hkgh\gu_ hlebqby \ bkihevah\Zgbb \uah\h\ ZgZeh]bqguo nmgdpbc ba ijh]jZff gZ yaud_ Kb Ijb\h^ylky ijbf_ju g_[hevrbo aZdhgq_gguo iZjZee_evguo ijh]jZff l_dklu dhlhjuo fh`gh kdZqZlv \ k_lb Bgl_jg_l kh kljZgbpu http://parallel.ru/tech/tech_dev/MPI/examples/ < dhgp_ jZa^_eh\ ijb\h^ylky dhgljhevgu_ \hijhku b aZ^Zgby dhlhju_ fh`gh bkihevah\Zlv \ ijhp_kk_ h[mq_gby Ihkh[b_ hkgh\Zgh gZ dmjk_ aZgylbc ijh\_^_gguo Z\lhjhf \ bxg_

]h^Z \ dhfiZgbb©Rexf[_j`_ª

>ey klm^_glh\ ZkibjZglh\ b gZmqguo khljm^gbdh\ qvy ^_yl_evghklv k\yaZgZ k iZjZee_evgufb \uqbke_gbyfb

M>D

;;D – 018.2*32.973

ISBN 5-211-04907-1

‹Fhkdh\kdbc ]hkm^Zjkl\_gguc mgb\_jkbl_l

2

Kh^_j`Zgb_

 

 

 

Bg^_dk ih nmgdpbyf03,....................................................................................... 4

Hkgh\gu_ ihgylby...................................................................................................

5

H[sb_ ijhp_^mju03,........................................................................................... 8

AZ^Zgby................................................................................................................

11

I_j_^ZqZ ijb_f khh[s_gbc f_`^m hl^_evgufb ijhp_kkZfb .........................

11

I_j_^ZqZ ijb_f khh[s_gbc k [ehdbjh\dhc ...................................................

12

I_j_^ZqZ ijb_f khh[s_gbc [_a [ehdbjh\db..................................................

21

Hleh`_ggu_ aZijhku gZ \aZbfh^_ckl\b_ .......................................................

30

Lmibdh\u_ kblmZpbb deadlock) .......................................................................

32

AZ^Zgby................................................................................................................

34

Dhee_dlb\gu_ \aZbfh^_ckl\by ijhp_kkh\ .........................................................

36

AZ^Zgby................................................................................................................

47

=jmiiu b dhffmgbdZlhju ....................................................................................

48

Hi_jZpbb k ]jmiiZfb ijhp_kkh\......................................................................

48

Hi_jZpbb k dhffmgbdZlhjZfb .........................................................................

52

AZ^Zgby................................................................................................................

55

<bjlmZevgu_ lhiheh]bb .......................................................................................

55

>_dZjlh\Z lhiheh]by .........................................................................................

56

Lhiheh]by ]jZnZ ................................................................................................

60

AZ^Zgby................................................................................................................

62

I_j_kuedZ jZaghlbiguo ^Zgguo.........................................................................

63

Ijhba\h^gu_ lbiu ^Zgguo...............................................................................

63

MiZdh\dZ ^Zgguo ...............................................................................................

68

AZ^Zgby................................................................................................................

70

Ebl_jZlmjZ .............................................................................................................

71

3

Bg^_dk ih nmgdpbyf03,

MPI_ADDRESS ................

66

MPI_ALLGATHER ..............

42

MPI_ALLGATHERV .............

42

MPI_ALLREDUCE ..............

45

MPI_ALLTOALL ...............

42

MPI_ALLTOALLV ..............

43

MPI_BARRIER ................

36

MPI_BCAST ..................

38

MPI_BSEND ..................

14

MPI_BSEND_INIT .............

30

MPI_BUFFER_ATTACH ..........

15

MPI_BUFFER_DETACH ..........

15

MPI_CART_COORDS ............

58

MPI_CART_CREATE ............

56

MPI_CART_GET ...............

59

MPI_CART_RANK ..............

58

MPI_CART_SHIFT .............

59

MPI_CART_SUB ...............

58

MPI_CARTDIM_GET ............

58

MPI_COMM_CREATE ............

53

MPI_COMM_DUP ...............

53

MPI_COMM_FREE ..............

54

MPI_COMM_GROUP .............

49

MPI_COMM_RANK ...............

9

MPI_COMM_SIZE ...............

9

MPI_COMM_SPLIT .............

54

MPI_DIMS_CREATE ............

57

MPI_FINALIZE ................

8

MPI_GATHER .................

39

MPI_GATHERV ................

40

MPI_GET_COUNT ..............

19

MPI_GET_PROCESSOR_NAME .....

10

MPI_GRAPH_CREATE ...........

60

MPI_GRAPH_GET ..............

61

MPI_GRAPH_NEIGHBORS ........

61

MPI_GRAPH_NEIGHBORS_COUNT .. 61

MPI_GRAPHDIMS_GET ..........

61

MPI_GROUP_COMPARE ..........

51

MPI_GROUP_DIFFERENCE .......

50

MPI_GROUP_EXCL .............

49

MPI_GROUP_FREE .............

51

MPI_GROUP_INCL .............

49

MPI_GROUP_INTERSECTION .....

50

MPI_GROUP_RANK .............

50

MPI_GROUP_SIZE .............

50

MPI_GROUP_TRANSLATE_RANKS .. 51

MPI_GROUP_UNION ............

50

MPI_IBSEND .................

23

MPI_INIT ....................

8

MPI_INITIALIZED .............

9

MPI_IPROBE .................

23

MPI_IRECV ..................

23

MPI_IRSEND .................

23

MPI_ISEND ..................

22

MPI_ISSEND .................

23

MPI_OP_CREATE ..............

46

MPI_OP_FREE ................

46

MPI_PACK ...................

69

MPI_PACK_SIZE ..............

69

MPI_PROBE ..................

19

MPI_RECV ...................

16

MPI_RECV_INIT ..............

30

MPI_REDUCE .................

43

MPI_REDUCE_SCATTER .........

45

MPI_REQUEST_FREE ...........

31

MPI_RSEND ..................

14

MPI_RSEND_INIT .............

30

MPI_SCAN ...................

46

MPI_SCATTER ................

40

MPI_SCATTERV ...............

41

MPI_SEND ...................

12

MPI_SEND_INIT ..............

30

MPI_SENDRECV ...............

33

MPI_SENDRECV_REPLACE .......

34

MPI_SSEND ..................

14

MPI_SSEND_INIT .............

30

MPI_START ..................

31

MPI_STARTALL ...............

31

MPI_TEST ...................

27

MPI_TESTALL ................

27

MPI_TESTANY ................

27

MPI_TESTSOME ...............

28

MPI_TOPO_TEST ..............

56

MPI_TYPE_COMMIT ............

66

MPI_TYPE_CONTIGUOUS ........

64

MPI_TYPE_EXTENT ............

67

MPI_TYPE_FREE ..............

66

MPI_TYPE_HINDEXED ..........

65

MPI_TYPE_HVECTOR ...........

65

MPI_TYPE_INDEXED ...........

65

MPI_TYPE_LB ................

67

MPI_TYPE_SIZE ..............

66

MPI_TYPE_STRUCT ............

65

MPI_TYPE_UB ................

67

MPI_TYPE_VECTOR ............

64

MPI_UNPACK .................

69

MPI_WAIT ...................

23

MPI_WAITALL ................

24

MPI_WAITANY ................

25

MPI_WAITSOME ...............

25

MPI_WTICK ..................

10

MPI_WTIME ..................

10

4

Hkgh\gu_ ihgylby

GZb[he__ jZkijhkljZg_gghc l_ogheh]b_c ijh]jZffbjh\Zgby ^ey iZjZee_ev- guo dhfivxl_jh\ k jZkij_^_e_gghc iZfylvx \ gZklhys__ \j_fy y\ey_lky 03, Hkgh\guf kihkh[hf \aZbfh^_ckl\by iZjZee_evguo ijhp_kkh\ \ lZdbo kbkl_fZo y\ey_lky i_j_^ZqZ khh[s_gbc ^jm] ^jm]m Wlh b hljZ`_gh \ gZa\Z- gbb ^Zgghc l_ogheh]bb 0HVVDJH 3DVVLQJ ,QWHUIDFH bgl_jn_ck i_j_^Zqb khh[s_gbc KlZg^Zjl MPI nbdkbjm_l bgl_jn_ck dhlhjuc ^he`_g kh[ex^Zlvky dZd kbkl_fhc ijh]jZffbjh\Zgby gZ dZ`^hc \uqbkebl_evghc ieZlnhjf_ lZd b ihevah\Zl_e_f ijb kha^Zgbb k\hbo ijh]jZff Kh\j_f_ggu_ j_ZebaZpbb qZs_ \k_]h khhl\_lkl\mxl klZg^Zjlm 03,\_jkbb <

]h^Zo ihy\beky klZg^Zjl 03,- agZqbl_evgh jZkrbjb\rbc nmgdpbhgZevghklv ij_^u^ms_c \_jkbb H^gZdh ^h kbo ihj wlhl \ZjbZgl MPI g_ ihemqbe rbjhdh]h jZkijhkljZg_gby b \ iheghf h[t_f_ g_ j_Zebah\Zg gb gZ h^ghc kbkl_f_ <_a^_ ^Ze__ _keb bgh]h g_ h]h\hj_gh fu [m^_f bf_lv ^_eh kh klZg^Zjlhf MPI-1.1.

03, ih^^_j`b\Z_l jZ[hlm k yaudZfb NhjljZg b Kb < ^Zgghf ihkh[bb ijbf_ju b hibkZgby \k_o ijhp_^mj [m^ml ^Zgu k bkihevah\Zgb_f yaudZ Nhj- ljZg H^gZdh wlh kh\_jr_ggh g_ y\ey_lky ijbgpbibZevguf ihkdhevdm hk- gh\gu_ b^_b 03, b ijZ\beZ hnhjfe_gby hl^_evguo dhgkljmdpbc ^ey wlbo yaudh\ \h fgh]hf koh`b IhegZy \_jkby bgl_jn_ckZ kh^_j`bl hibkZgb_ [h- e__ ijhp_^mj b nmgdpbc GZrZ aZ^ZqZ h[tykgblv b^_x l_ogheh]bb b ihfhqv hk\hblv g_h[oh^bfu_ gZ ijZdlbd_ dhfihg_glu >hihegbl_evgmx bgnhjfZpbx h[ bgl_jn_ck_ MPI fh`gh gZclb gZ l_fZlbq_kdhc kljZgbp_ BgnhjfZpbhggh-ZgZeblbq_kdh]h p_gljZ ih iZjZee_evguf \uqbke_gbyf \ k_lb Bgl_jg_l http://parallel.ru/tech/tech_dev/mpi.html.

Bgl_jn_ck MPI ih^^_j`b\Z_l kha^Zgb_ iZjZee_evguo ijh]jZff \ klbe_

MIMD (Multiple Instruction Multiple Data qlh ih^jZamf_\Z_l h[t_^bg_gb_ ijhp_kkh\ k jZaebqgufb bkoh^gufb l_dklZfb H^gZdh ibkZlv b hleZ`b\Zlv lZdb_ ijh]jZffu hq_gv keh`gh ihwlhfm gZ ijZdlbd_ ijh]jZffbklu ]hjZa^h qZs_ bkihevamxl SPMD-fh^_ev Single Program Multiple Data) iZjZee_evgh]h ijh]jZffbjh\Zgby \ jZfdZo dhlhjhc ^ey \k_o iZjZee_evguo ijhp_kkh\ bk- ihevam_lky h^bg b lhl `_ dh^ < gZklhys__ \j_fy \k_ [hevr_ b [hevr_ j_Z- ebaZpbc MPI ih^^_j`b\Zxl jZ[hlm k gblyfb

Ihkdhevdm MPI y\ey_lky [b[ebhl_dhc lh ijb dhfibeypbb ijh]jZffu g_h[- oh^bfh ijbebgdh\Zlv khhl\_lkl\mxsb_ [b[ebhl_qgu_ fh^meb Wlh fh`gh k^_eZlv \ dhfZg^ghc kljhd_ beb \hkihevah\Zlvky ij_^mkfhlj_ggufb \ [hev- rbgkl\_ kbkl_f dhfZg^Zfb beb kdjbilZfb mpicc ^ey ijh]jZff gZ yaud_ Kb mpiCC ^ey ijh]jZff gZ yaud_ Kb b mpif77/mpif90 ^ey ijh]jZff gZ yaudZo NhjljZg Hipby dhfibeylhjZ³-o name´iha\hey_l aZ^Zlv bfy

5

name ^ey ihemqZ_fh]h \uihegbfh]h nZceZ ih mfheqZgbx \uihegbfuc nZce gZau\Z_lky a.out gZijbf_j

mpif77 -o program program.f

Ihke_ ihemq_gby \uihegbfh]h nZceZ g_h[oh^bfh aZimklblv _]h gZ lj_[m_- fhf dhebq_kl\_ ijhp_kkhjh\ >ey wlh]h h[uqgh ij_^hklZ\ey_lky dhfZg^Z aZ- imkdZ MPI-ijbeh`_gbc mpirun gZijbf_j

mpirun -np N ijh]jZffZ k Zj]mf_glZfb!,

]^_ N - qbkeh ijhp_kkh\ dhlhjh_ ^he`gh [ulv g_ [he__ jZaj_r_ggh]h \ ^Zgghc kbkl_f_ qbkeZ ijhp_kkh\ ^ey h^ghc aZ^Zqb Ihke_ aZimkdZ h^gZ b lZ `_ ijh]jZffZ [m^_l \uihegylvky \k_fb aZims_ggufb ijhp_kkZfb j_amevlZl \uiheg_gby \ aZ\bkbfhklb hl kbkl_fu [m^_l \u^Z\Zlvky gZ l_jfbgZe beb aZibku\Zlvky \ nZce k ij_^hij_^_e_gguf bf_g_f

<k_ ^hihegbl_evgu_ h[t_dlu bf_gZ ijhp_^mj dhgklZglu ij_^hij_^_e_g- gu_ lbiu ^Zgguo b l i bkihevam_fu_ \ 03, bf_xl ij_nbdk MPI_ ?keb ihevah\Zl_ev g_ [m^_l bkihevah\Zlv \ ijh]jZff_ bf_g k lZdbf ij_nbdkhf lh dhgnebdlh\ k h[t_dlZfb MPI aZ\_^hfh g_ [m^_l < yaud_ Kb djhf_ lh]h y\- ey_lky kms_kl\_gguf j_]bklj kbf\heh\ \ gZa\Zgbyo nmgdpbc H[uqgh \ gZ- a\Zgbyo nmgdpbc MPI i_j\Zy [md\Z ihke_ ij_nbdkZ MPI_ ibr_lky \ \_jog_f j_]bklj_ ihke_^mxsb_ [md\u \ gb`g_f j_]bklj_ Z gZa\Zgby dhgklZgl MPI aZibku\Zxlky p_ebdhf \ \_jog_f j_]bklj_ <k_ hibkZgby bgl_jn_ckZ MPI kh[jZgu \ nZce_ mpif.h (mpi.h ihwlhfm \ gZqZe_ 03,-ijh]jZffu ^he`gZ

klhylv ^bj_dlb\Z include ‘mpif.h’ (#include “mpi.h” ^ey ijh]jZff gZ

yaud_ Kb

MPI-ijh]jZffZ wlh fgh`_kl\h iZjZee_evguo \aZbfh^_ckl\mxsbo ijh- p_kkh\ <k_ ijhp_kku ihjh`^Zxlky h^bg jZa h[jZamy iZjZee_evgmx qZklv ijh]jZffu < oh^_ \uiheg_gby MPI-ijh]jZffu ihjh`^_gb_ ^hihegbl_ev- guo ijhp_kkh\ beb mgbqlh`_gb_ kms_kl\mxsbo g_ ^himkdZ_lky \ MPI-2.0 lZdZy \hafh`ghklv ihy\beZkv DZ`^uc ijhp_kk jZ[hlZ_l \ k\h_f Z^j_kghf ijhkljZgkl\_ gbdZdbo h[sbo i_j_f_gguo beb ^Zgguo \ MPI g_l Hkgh\guf kihkh[hf \aZbfh^_ckl\by f_`^m ijhp_kkZfb y\ey_lky y\gZy ihkuedZ khh[- s_gbc

>ey ehdZebaZpbb \aZbfh^_ckl\by iZjZee_evguo ijhp_kkh\ ijh]jZffu fh`gh kha^Z\Zlv ]jmiiu ijhp_kkh\ ij_^hklZ\eyy bf hl^_evgmx kj_^m ^ey h[s_gby dhffmgbdZlhj KhklZ\ h[jZam_fuo ]jmii ijhba\he_g =jmiiu fh]ml iheghklvx kh\iZ^Zlv \oh^blv h^gZ \ ^jm]mx g_ i_j_k_dZlvky beb i_j_k_dZlvky qZklbqgh Ijhp_kku fh]ml \aZbfh^_ckl\h\Zlv lhevdh \gmljb g_dhlhjh]h dhffmgbdZlhjZ khh[s_gby hlijZ\e_ggu_ \ jZaguo dhffmgbdZlhjZo g_ i_j_k_dZxlky b g_ f_rZxl ^jm] ^jm]m DhffmgbdZlhju bf_xl \ yaud_ NhjljZg lbi INTEGER \ yaud_ Kb ij_^hij_^_e_gguc lbi

MPI_Comm).

6

Ijb klZjl_ ijh]jZffu \k_]^Z kqblZ_lky qlh \k_ ihjh`^_ggu_ ijhp_kku jZ- [hlZxl \ jZfdZo \k_h[t_fexs_]h dhffmgbdZlhjZ bf_xs_]h ij_^hij_^_- e_ggh_ bfy MPI_COMM_WORLD Wlhl dhffmgbdZlhj kms_kl\m_l \k_]^Z b kem`bl ^ey \aZbfh^_ckl\by \k_o aZims_gguo ijhp_kkh\ MPI-ijh]jZffu Djhf_ g_]h ijb klZjl_ ijh]jZffu bf__lky dhffmgbdZlhj MPI_COMM_SELF, kh^_j`Zsbc lhevdh h^bg l_dmsbc ijhp_kk Z lZd`_ dhffmgbdZlhj MPI_COMM_NULL g_ kh^_j`Zsbc gb h^gh]h ijhp_kkZ <k_ \aZbfh^_ckl\by ijhp_kkh\ ijhl_dZxl \ jZfdZo hij_^_e_ggh]h dhffmgbdZlhjZ khh[s_gby i_j_^Zggu_ \ jZaguo dhffmgbdZlhjZo gbdZd g_ f_rZxl ^jm] ^jm]m

DZ`^uc ijhp_kk MPI-ijh]jZffu bf__l \ dZ`^hc ]jmii_ \ dhlhjmx hg \oh^bl mgbdZevguc Zljb[ml ghf_j ijhp_kkZ dhlhjuc y\ey_lky p_euf g_hljbpZl_evguf qbkehf K ihfhsvx wlh]h Zljb[mlZ ijhbkoh^bl agZqbl_evgZy qZklv \aZbfh^_ckl\by ijhp_kkh\ f_`^m kh[hc Ykgh qlh \ h^ghf b lhf `_ dhffmgbdZlhj_ \k_ ijhp_kku bf_xl jZaebqgu_ ghf_jZ Gh ihkdhevdm ijhp_kk fh`_l h^gh\j_f_ggh \oh^blv \ jZagu_ dhffmgbdZlhju lh _]h ghf_j \ h^ghf dhffmgbdZlhj_ fh`_l hlebqZlvky hl _]h ghf_jZ \ ^jm- ]hf Hlkx^Z klZgh\ylky ihgylgufb ^\Z hkgh\guo Zljb[mlZ ijhp_kkZ dhffmgbdZlhj b ghf_j \ dhffmgbdZlhj_ ?keb ]jmiiZ kh^_j`bl n ijhp_kkh\ lh ghf_j ex[h]h ijhp_kkZ \ ^Zgghc ]jmii_ e_`bl \ ij_^_eZo hl ^h n – 1.

Hkgh\guf kihkh[hf h[s_gby ijhp_kkh\ f_`^m kh[hc y\ey_lky y\gZy ihkuedZ khh[s_gbc Khh[s_gb_ wlh gZ[hj ^Zgguo g_dhlhjh]h lbiZ DZ`^h_ khh[s_gb_ bf__l g_kdhevdh Zljb[mlh\ \ qZklghklb ghf_j ijhp_kkZ-hlijZ\bl_ey ghf_j ijhp_kkZ-ihemqZl_ey b^_glbnbdZlhj khh[s_gby b ^jm]b_ H^gbf ba \Z`guo Zljb[mlh\ khh[s_gby y\ey_lky _]h b^_glbnbdZlhj beb lw] Ih b^_glbnbdZlhjm ijhp_kk ijbgbfZxsbc khh[s_gb_ gZijbf_j fh`_l jZaebqblv ^\Z khh[s_gby ijbr_^rb_ d g_fm hl h^gh]h b lh]h `_ ijhp_kkZ KZf b^_glbnbdZlhj khh[s_gby y\ey_lky p_- euf g_hljbpZl_evguf qbkehf e_`Zsbf \ ^bZiZahg_ hl 0 ^h MPI_TAG_UP, ijbq_f ]ZjZglbjm_lky qlh MPI_TAG_UP g_ f_gvr_ 32767 >ey jZ[hlu k Zljb[mlZfb khh[s_gbc \\_^_g fZkkb\ \ yaud_ Kb kljmdlmjZ we_f_glu dhlhjh]h ^Zxl ^hklmi d bo agZq_gbyf

< ihke_^g_f Zj]mf_gl_ \ yaud_ Kb \ \ha\jZsZ_fhf agZq_gbb nmgdpbb [hevrbgkl\h ijhp_^mj03,\ha\jZsZxl bgnhjfZpbx h[ mki_rghklb aZ\_j- r_gby < kemqZ_ mki_rgh]h \uiheg_gby \ha\jZsZ_lky agZq_gb_ MPI_SUCCESS bgZq_ dh^ hrb[db <b^ hrb[db dhlhjZy ijhbahreZ ijb \u- iheg_gbb ijhp_^mju fh`gh [m^_l hij_^_eblv ba __ hibkZgby Ij_^hij_^_e_ggu_ agZq_gby khhl\_lkl\mxsb_ jZaebqguf hrb[hqguf kblmZpbyf i_j_qbke_gu \ nZce_ mpif.h.

7

H[sb_ ijhp_^mju03,

< ^Zgghf jZa^_e_ fu hklZgh\bfky gZ h[sbo ijhp_^mjZo MPI g_ k\yaZgguo k i_j_kuedhc ^Zgguo ;hevrbgkl\h ijhp_^mj wlh]h jZa^_eZ g_h[oh^bfu ijZdlbq_kdb \ dZ`^hc kh^_j`Zl_evghc iZjZee_evghc ijh]jZff_

MPI_INIT(IERR) INTEGER IERR

BgbpbZebaZpby iZjZee_evghc qZklb ijh]jZffu <k_ ^jm]b_ ijhp_^mju03, fh]ml [ulv \ua\Zgu lhevdh ihke_ \uah\Z MPI_INIT BgbpbZebaZpby iZjZe- e_evghc qZklb ^ey dZ`^h]h ijbeh`_gby ^he`gZ \uihegylvky lhevdh h^bg jZa < yaud_ Kb nmgdpbb MPI_Init i_j_^Zxlky mdZaZl_eb gZ Zj]mf_glu dh- fZg^ghc kljhdb ijh]jZffu argc b argv ba dhlhjuo kbkl_fhc fh]ml ba\e_- dZlvky b i_j_^Z\Zlvky \ iZjZee_evgu_ ijhp_kku g_dhlhju_ iZjZf_lju aZ- imkdZ ijh]jZffu

MPI_FINALIZE(IERR) INTEGER IERR

AZ\_jr_gb_ iZjZee_evghc qZklb ijbeh`_gby <k_ ihke_^mxsb_ h[jZs_gby d ex[uf ijhp_^mjZf03,\ lhf qbke_ d MPI_INIT aZij_s_gu D fhf_glm \u- ah\Z MPI_FINALIZE dZ`^uf ijhp_kkhf ijh]jZffu \k_ ^_ckl\by lj_[mxsb_ _]h mqZklby \ h[f_g_ khh[s_gbyfb ^he`gu [ulv aZ\_jr_gu

Ijbf_j ijhkl_cr_c03,-ijh]jZffu gZ yaud_ NhjljZg \u]ey^bl ke_^mxsbf

h[jZahf

program example1 include ‘mpif.h’ integer ierr

print *, ‘Before MPI_INIT’ call MPI_INIT(ierr)

print *, ‘Parallel section’ call MPI_FINALIZE(ierr) print *, ‘After MPI_FINALIZE’ end

< aZ\bkbfhklb hl j_ZebaZpbb MPI kljhqdb ‘Before MPI_INIT’ b ‘After MPI_FINALIZE’ fh`_l i_qZlZlv eb[h h^bg \u^_e_gguc ijhp_kk eb[h \k_ aZ- ims_ggu_ ijhp_kku ijbeh`_gby Kljhqdm ‘Parallel section’ ^he`gu gZ- i_qZlZlv \k_ ijhp_kku Ihjy^hd \u\h^Z kljhd k jZaguo ijhp_kkh\ fh`_l [ulv ijhba\hevguf

H[sZy ko_fZ 03,-ijh]jZffu gZ yaud_ Kb \u]ey^bl ijbf_jgh ke_^mxsbf h[jZahf

8

#include “mpi.h”

main(int argc, char **argv)

{

MPI_Init(&argc, &argv);

MPI_Finalize();

}

>jm]b_ iZjZee_evgu_ ijh]jZffu gZ yaud_ Kb k bkihevah\Zgb_f l_ogheh]bb MPI fh`gh gZclb gZijbf_j \ <uqbkebl_evghf iheb]hg_ http://polygon.parallel.ru.

MPI_INITIALIZED(FLAG, IERR) LOGICAL FLAG

INTEGER IERR

Ijhp_^mjZ \ha\jZsZ_l \ Zj]mf_gl_ FLAG agZq_gb_ .TRUE. _keb \ua\ZgZ ba iZjZee_evghc qZklb ijbeh`_gby b agZq_gb_ .FALSE. - \ ijhlb\ghf kemqZ_ Wlh _^bgkl\_ggZy ijhp_^mjZ 03, dhlhjmx fh`gh \ua\Zlv ^h \uah\Z

MPI_INIT.

MPI_COMM_SIZE(COMM, SIZE, IERR) INTEGER COMM, SIZE, IERR

< Zj]mf_gl_ SIZE ijhp_^mjZ \ha\jZsZ_l qbkeh iZjZee_evguo ijhp_kkh\ \ dhffmgbdZlhj_ COMM.

MPI_COMM_RANK(COMM, RANK, IERR) INTEGER COMM, RANK, IERR

< Zj]mf_gl_ RANK ijhp_^mjZ \ha\jZsZ_l ghf_j ijhp_kkZ \ dhffmgbdZlhj_ COMM ?keb ijhp_^mjZ MPI_COMM_SIZE ^ey lh]h `_ dhffmgbdZlhjZ COMM \_jgmeZ agZq_gb_ SIZE lh agZq_gb_ \ha\jZsZ_fh_ ijhp_^mjhc MPI_COMM_RANK q_j_a i_j_f_ggmx RANK e_`bl \ ^bZiZahg_ hl 0 ^h SIZE-1.

< ke_^mxs_f ijbf_j_ dZ`^uc aZims_gguc ijhp_kk i_qZlZ_l k\hc mgbdZev- guc ghf_j \ dhffmgbdZlhj_ MPI_COMM_WORLD b qbkeh ijhp_kkh\ \ ^Zgghf dhffmgbdZlhj_

program example2 include ‘mpif.h’ integer ierr, size, rank call MPI_INIT(ierr)

call MPI_COMM_SIZE(MPI_COMM_WORLD, size, ierr) call MPI_COMM_RANK(MPI_COMM_WORLD, rank, ierr) print *, ‘process ’, rank, ‘, size ’, size call MPI_FINALIZE(ierr)

end

9

KljhdZ khhl\_lkl\mxsZy \uah\m ijhp_^mju print [m^_l \u\_^_gZ klhevdh jZa kdhevdh ijhp_kkh\ [ueh ihjh`^_gh ijb aZimkd_ ijh]jZffu Ihjy^hd ihy\e_gby kljhd aZjZg__ g_ hij_^_e_g b fh`_l [ulv \hh[s_ ]h\hjy ex[uf =ZjZglbjm_lky lhevdh lh qlh kh^_j`bfh_ hl^_evguo kljhd g_ [m^_l i_j_f_- rZgh ^jm] k ^jm]hf

DOUBLE PRECISION MPI_WTIME(IERR) INTEGER IERR

WlZ nmgdpby \ha\jZsZ_l gZ \ua\Z\r_f ijhp_kk_ Zkljhghfbq_kdh_ \j_fy \ k_dmg^Zo \_s_kl\_ggh_ qbkeh ^\hcghc lhqghklb ijhr_^r__ k g_dhlhjh]h fhf_glZ \ ijhrehf ?keb g_dhlhjuc mqZklhd ijh]jZffu hdjm`blv \uah\Zfb ^Zgghc nmgdpbb lh jZaghklv \ha\jZsZ_fuo agZq_gbc ihdZ`_l \j_fy jZ[hlu ^Zggh]h mqZkldZ =ZjZglbjm_lky qlh fhf_gl \j_f_gb bkihevam_fuc \ dZq_kl\_ lhqdb hlkq_lZ g_ [m^_l baf_g_g aZ \j_fy kms_kl\h\Zgby ijhp_kkZ AZf_lbf qlh wlZ nmgdpby \ha\jZsZ_l j_amevlZl k\h_c jZ[hlu g_ q_j_a iZjZf_lju Z y\guf h[jZahf LZcf_ju jZaguo ijhp_kkhjh\ fh]ml [ulv g_ kbgojhgbabjh\Zgu b \u^Z\Zlv jZaebqgu_ agZq_gby wlh fh`gh hij_^_eblv ih agZq_gbx iZjZf_ljZ MPI_WTIME_IS_GLOBAL (1 kbgojhgbabjh\Zgu 0 - g_l

DOUBLE PRECISION MPI_WTICK(IERR) INTEGER IERR

Nmgdpby \ha\jZsZ_l jZaj_r_gb_ lZcf_jZ gZ \ua\Z\r_f ijhp_kk_ \ k_dmg^Zo WlZ nmgdpby lZd`_ \ha\jZsZ_l j_amevlZl k\h_c jZ[hlu g_ q_j_a iZjZf_lju Z y\guf h[jZahf

MPI_GET_PROCESSOR_NAME(NAME, LEN, IERR) CHARACTER*(*) NAME

INTEGER LEN, IERR

Ijhp_^mjZ \ha\jZsZ_l \ kljhd_ NAME bfy maeZ gZ dhlhjhf aZims_g \ua\Z\- rbc ijhp_kk < i_j_f_gghc LEN \ha\jZsZ_lky dhebq_kl\h kbf\heh\ \ bf_gb g_ ij_\urZxs__ agZq_gby dhgklZglu MPI_MAX_PROCESSOR_NAME K ihfhsvx wlhc ijhp_^mju fh`gh hij_^_eblv gZ dZdb_ bf_ggh nbabq_kdb_ ijhp_kkhju [ueb kieZgbjh\Zgu ijhp_kku MPI-ijbeh`_gby

< ke_^mxs_c ijh]jZff_ gZ dZ`^hf ijhp_kk_ hij_^_eyxlky ^\_ oZjZdl_jb- klbdb kbkl_fgh]h lZcf_jZ _]h jZaj_r_gb_ b \j_fy lj_[m_fh_ gZ aZf_j \j_- f_gb ^ey mkj_^g_gby ihemqZ_fh]h agZq_gby \uihegy_lky NTIMES aZf_jh\

LZd`_ \ ^Zgghf ijbf_j_ ihdZaZgh bkihevah\Zgb_ ijhp_^mju

MPI_GET_PROCESSOR_NAME.

10

Соседние файлы в папке PobedilRomanskogo