Параллельное программирование с использованием MPI. Антонов (2004) (1186029), страница 2
Текст из файла (страница 2)
_keb \ua\ZgZ baiZjZee_evghcqZklbijbeh`_gbybagZq_gb_ .FALSE. -\ijhlb\ghfkemqZ_Wlh _^bgkl\_ggZy ijhp_^mjZ 03, dhlhjmx fh`gh \ua\Zlv ^h \uah\ZMPI_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_^mjhcMPI_COMM_RANKq_j_ai_j_f_ggmxRANKe_`bl\^bZiZahg_hl0^hSIZE-1.<ke_^mxs_fijbf_j_dZ`^ucaZims_ggucijhp_kki_qZlZ_lk\hcmgbdZevguc ghf_j \ dhffmgbdZlhj_ MPI_COMM_WORLD b qbkeh ijhp_kkh\ \ ^ZgghfdhffmgbdZlhj_program example2include ‘mpif.h’integer ierr, size, rankcall 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 ’, sizecall MPI_FINALIZE(ierr)end9KljhdZ khhl\_lkl\mxsZy \uah\m ijhp_^mju print[m^_l\u\_^_gZklhevdhjZa kdhevdh ijhp_kkh\ [ueh ihjh`^_gh ijb aZimkd_ ijh]jZffu Ihjy^hdihy\e_gbykljhdaZjZg__g_hij_^_e_gbfh`_l[ulv\hh[s_]h\hjyex[uf=ZjZglbjm_lkylhevdhlhqlhkh^_j`bfh_hl^_evguokljhdg_[m^_li_j_f_rZgh^jm]k^jm]hfDOUBLE PRECISION MPI_WTIME(IERR)INTEGER IERRWlZ nmgdpby \ha\jZsZ_l gZ \ua\Z\r_f ijhp_kk_ Zkljhghfbq_kdh_ \j_fy \k_dmg^Zo\_s_kl\_ggh_qbkeh^\hcghclhqghklbijhr_^r__kg_dhlhjh]hfhf_glZ\ijhrehf?kebg_dhlhjucmqZklhdijh]jZffuhdjm`blv\uah\Zfb^ZgghcnmgdpbblhjZaghklv\ha\jZsZ_fuoagZq_gbcihdZ`_l\j_fyjZ[hlu^Zggh]h mqZkldZ =ZjZglbjm_lky qlh fhf_gl \j_f_gb bkihevam_fuc \dZq_kl\_lhqdbhlkq_lZg_[m^_lbaf_g_gaZ\j_fykms_kl\h\Zgbyijhp_kkZAZf_lbf qlh wlZ nmgdpby \ha\jZsZ_l j_amevlZl k\h_c jZ[hlu g_ q_j_aiZjZf_lju Z y\guf h[jZahf LZcf_ju jZaguo ijhp_kkhjh\ fh]ml [ulv g_kbgojhgbabjh\Zgub\u^Z\ZlvjZaebqgu_agZq_gbywlhfh`ghhij_^_eblvihagZq_gbxiZjZf_ljZMPI_WTIME_IS_GLOBAL (1 –kbgojhgbabjh\Zgu0 -g_lDOUBLE PRECISION MPI_WTICK(IERR)INTEGER IERRNmgdpby\ha\jZsZ_ljZaj_r_gb_lZcf_jZgZ\ua\Z\r_fijhp_kk_\k_dmg^ZoWlZnmgdpbylZd`_\ha\jZsZ_lj_amevlZlk\h_cjZ[hlug_q_j_aiZjZf_ljuZy\gufh[jZahfMPI_GET_PROCESSOR_NAME(NAME, LEN, IERR)CHARACTER*(*) NAMEINTEGER LEN, IERRIjhp_^mjZ\ha\jZsZ_l\kljhd_ NAMEbfymaeZgZdhlhjhfaZims_g\ua\Z\rbcijhp_kk<i_j_f_gghcLEN\ha\jZsZ_lkydhebq_kl\hkbf\heh\\bf_gbg_ ij_\urZxs__ agZq_gby dhgklZglu MPI_MAX_PROCESSOR_NAME Kihfhsvx wlhc ijhp_^mju fh`gh hij_^_eblv gZ dZdb_ bf_ggh nbabq_kdb_ijhp_kkhju[uebkieZgbjh\Zguijhp_kkuMPI-ijbeh`_gby< ke_^mxs_c ijh]jZff_ gZ dZ`^hf ijhp_kk_ hij_^_eyxlky ^\_ oZjZdl_jbklbdbkbkl_fgh]hlZcf_jZ_]hjZaj_r_gb_b\j_fylj_[m_fh_gZaZf_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_^mjuMPI_GET_PROCESSOR_NAME.10program example3include 'mpif.h'integer ierr, rank, len, i, NTIMESparameter (NTIMES = 100)character*(MPI_MAX_PROCESSOR_NAME) namedouble precision time_start, time_finish, tickcall MPI_INIT(ierr)call MPI_COMM_RANK(MPI_COMM_WORLD, rank, ierr)call MPI_GET_PROCESSOR_NAME(name, len, ierr)tick = MPI_WTICK(ierr)time_start = MPI_WTIME(ierr)do i = 1, NTIMEStime_finish = MPI_WTIME(ierr)end docall MPI_COMM_RANK(MPI_COMM_WORLD, rank, ierr)print *, 'processor ', name(1:len),&', process ', rank, ': tick = ', tick,&', time = ', (time_finish-time_start)/NTIMEScall MPI_FINALIZE(ierr)endAZ^Zgby• Hldhfibebjh\Zlvbijh\_jblvwnn_dlb\ghklv\uiheg_gbyijh]jZffu\uqbke_gby qbkeZ Ib gZ jZaebqghf qbke_ ijhp_kkhjh\ ijh]jZffZh[uqgh\oh^bl\dZq_kl\_l_klh\h]hijbf_jZ\dhfie_dlihklZ\dbMPIbfh`_lgZoh^blvkygZijbf_j\nZceZo/usr/local/examples/mpi/fpi.f beb cpi.c).• Fh`gh eb \ ijhp_kk_ jZ[hlu 03,-ijh]jZffu ihjh`^Zlv gh\u_ ijhp_kku_keb\dZdhc-lhfhf_glihy\bebkvk\h[h^gu_ijhp_kkhju"• Fh`_l eb 03,-ijh]jZffZ ijh^he`Zlv jZ[hlm ihke_ Z\Zjbcgh]haZ\_jr_gbyh^gh]hbaijhp_kkh\"• Hij_^_eblvkdhevdhijhp_kkh\\uihegyxll_dklijh]jZffu^h\uah\Zijhp_^mjuMPI_INITbihke_\uah\Zijhp_^mjuMPI_FINALIZE.• Hij_^_eblv kbgojhgbah\Zgu eb lZcf_ju jZaguo ijhp_kkh\dhgdj_lghckbkl_fuI_j_^ZqZijb_fkhh[s_gbcf_`^mhl^_evgufbijhp_kkZfbIjZdlbq_kdb\k_ijh]jZffugZibkZggu_kbkihevah\Zgb_fdhffmgbdZpbhgghcl_ogheh]bbMPI^he`gukh^_j`Zlvkj_^kl\Zg_lhevdh^eyihjh`^_gbybaZ\_jr_gbyiZjZee_evguoijhp_kkh\ghb^ey\aZbfh^_ckl\byaZims_gguo11ijhp_kkh\ f_`^m kh[hc LZdh_ \aZbfh^_ckl\b_ hkms_kl\ey_lky \ MPIihkj_^kl\hfy\ghcihkuedbkhh[s_gbc<k_ ijhp_^mju i_j_^Zqb khh[s_gbc \ 03, ^_eylky gZ ^\_ ]jmiiu < h^gm]jmiim \oh^yl ijhp_^mju dhlhju_ ij_^gZagZq_gu ^ey \aZbfh^_ckl\bylhevdh ^\mo ijhp_kkh\ ijh]jZffu LZdb_ hi_jZpbb gZau\Zxlky bg^b\b^mZevgufbbebhi_jZpbyfblbiZlhqdZ-lhqdZIjhp_^mju^jm]hc]jmiiuij_^iheZ]Zxlqlh\hi_jZpbx^he`gu[ulv\h\e_q_gu\k_ijhp_kkug_dhlhjh]hdhffmgbdZlhjZLZdb_hi_jZpbbgZau\Zxlkydhee_dlb\gufbGZqg_f hibkZgb_ ijhp_^mj h[f_gZ khh[s_gbyfb k h[km`^_gby hi_jZpbclbiZ lhqdZ-lhqdZ < lZdbo \aZbfh^_ckl\byo mqZkl\mxl ^\Z ijhp_kkZijbq_f h^bg ijhp_kk y\ey_lky hlijZ\bl_e_f khh[s_gby Z ^jm]hc –ihemqZl_e_f Ijhp_kk-hlijZ\bl_ev ^he`_g \ua\Zlv h^gm ba ijhp_^mji_j_^Zqb ^Zgguo b y\gh mdZaZlv ghf_j \ g_dhlhjhf dhffmgbdZlhj_ijhp_kkZ-ihemqZl_ey Z ijhp_kk-ihemqZl_ev ^he`_g \ua\Zlv h^gm baijhp_^mj ijb_fZ k mdZaZgb_f lh]h `_ dhffmgbdZlhjZ ijbq_f \ g_dhlhjuokemqZyo hg fh`_l g_ agZlv lhqguc ghf_j ijhp_kkZ-hlijZ\bl_ey \ ^ZgghfdhffmgbdZlhj_<k_ijhp_^mju^Zgghc]jmiiu\k\hxhq_j_^vlZd`_^_eylkygZ^\ZdeZkkZijhp_^mju k [ehdbjh\dhc k kbgojhgbaZpb_c b ijhp_^mju [_a [ehdbjh\dbZkbgojhggu_Ijhp_^mjuh[f_gZk[ehdbjh\dhcijbhklZgZ\eb\ZxljZ[hlmijhp_kkZ^h\uiheg_gbyg_dhlhjh]hmkeh\byZ\ha\jZlbaZkbgojhgguoijhp_^mj ijhbkoh^bl g_f_^e_ggh ihke_ bgbpbZebaZpbb khhl\_lkl\mxs_c dhffmgbdZpbhgghc hi_jZpbb G_ZddmjZlgh_ bkihevah\Zgb_ ijhp_^mj k [ehdbjh\dhcfh`_lijb\_klbd\hagbdgh\_gbxlmibdh\hckblmZpbbihwlhfmijbwlhf lj_[m_lky ^hihegbl_evgZy hklhjh`ghklv Bkihevah\Zgb_ Zkbgojhgguohi_jZpbc d lmibdh\uf kblmZpbyf g_ ijb\h^bl h^gZdh lj_[m_l [he__ ZddmjZlgh]hbkihevah\ZgbyfZkkb\h\^ZgguoI_j_^ZqZijb_fkhh[s_gbck[ehdbjh\dhcMPI_SEND(BUF, COUNT, DATATYPE, DEST, MSGTAG, COMM, IERR)<type> BUF(*)INTEGER COUNT, DATATYPE, DEST, MSGTAG, COMM, IERR;ehdbjmxsZy ihkuedZ fZkkb\Z BUF k b^_glbnbdZlhjhf MSGTAG khklhys_]hba COUNTwe_f_glh\lbiZ DATATYPEijhp_kkmkghf_jhf DEST\dhffmgbdZlhj_COMM<k_we_f_gluihkueZ_fh]hkhh[s_gby^he`gu[ulvjZkiheh`_guih^jy^\[mn_j_BUFHi_jZpbygZqbgZ_lkyg_aZ\bkbfhhllh]h[ueZebbgb-pbZebabjh\ZgZ khhl\_lkl\mxsZy ijhp_^mjZ ijb_fZ Ijb wlhf khh[s_gb_fh`_l [ulv kdhibjh\Zgh dZd g_ihkj_^kl\_ggh \ [mn_j ijb_fZ lZd b ihf_s_gh\g_dhlhjuckbkl_fguc[mn_j_kebwlhij_^mkfhlj_gh\MPIAgZq_gb_ COUNT fh`_l[ulvgme_fIjhp_kkmjZaj_rZ_lkyi_j_^Z\Zlvkhh[s_gb_12kZfhfmk_[_h^gZdhwlhg_[_ahiZkghbfh`_lijb\_klbd\hagbdgh\_gbxlmibdh\hckblmZpbbIZjZf_lj DATATYPEbf__l\yaud_NhjljZglbi INTEGER\yaud_Kb–ij_^hij_^_e_gguclbiMPI_DatatypeLbii_j_^Z\Z_fuowe_f_glh\ ^he`_g mdZau\Zlvky k ihfhsvx ij_^hij_^_e_gguo dhgklZgl lbiZi_j_qbke_gguo^eyyaudZNhjljZg\ke_^mxs_clZ[ebp_Lbi^Zgguo\MPILbi^Zgguo\NhjljZg_MPI_INTEGERMPI_REALMPI_DOUBLE_PRECISIONMPI_COMPLEXMPI_LOGICALMPI_CHARACTERMPI_BYTEINTEGERREALDOUBLE PRECISIONCOMPLEXLOGICALCHARACTER(1)[blbkihevam_lky^eyi_j_^Zqbg_lbibabjh\Zgguo^Zgguolbi^eymiZdh\Zgguo^ZgguoMPI_PACKED?keb bkihevam_fuc k MPI [Zah\uc yaud bf__l ^hihegbl_evgu_ lbiu^Zgguo lh khhl\_lkl\mxsb_ lbiu ^he`gu [ulv h[_ki_q_gu b \ MPI.Iheguc kibkhd ij_^hij_^_e_gguo bf_g lbih\ ^Zgguo i_j_qbke_g \ nZce_mpif.h (mpi.h).Ijb i_j_kued_ khh[s_gbc fh`gh bkihevah\Zlv ki_pbZevgh_ agZq_gb_MPI_PROC_NULL ^ey g_kms_kl\mxs_]h ijhp_kkZ Hi_jZpbb k lZdbfijhp_kkhf aZ\_jrZxlky g_f_^e_ggh k dh^hf aZ\_jr_gby MPI_SUCCESS.GZijbf_j^eyi_j_kuedbkhh[s_gbyijhp_kkmkghf_jhfgZ_^bgbpm[hevr_fh`gh\hkihevah\Zlvkyke_^mxsbfnjZ]f_glhfcall MPI_COMM_SIZE(MPI_COMM_WORLD, size, ierr)call MPI_COMM_RANK(MPI_COMM_WORLD, rank, ierr)next = rank+1if(next .eq.
size) next = MPI_PROC_NULLcall MPI_SEND(buf, 1, MPI_REAL, next,&5, MPI_COMM_WORLD, ierr)<wlhfkemqZ_ijhp_kkkihke_^gbfghf_jhfg_hkms_kl\blgbdZdhcj_Zevghcihkuedb^ZgguoZkjZamihc^_l\uihegylvijh]jZffm^Zevr_;ehdbjh\dZ]ZjZglbjm_ldhjj_dlghklvih\lhjgh]hbkihevah\Zgby\k_oiZjZf_ljh\ ihke_ \ha\jZlZ ba ijhp_^mju Wlh hagZqZ_l qlh ihke_ \ha\jZlZ baMPI_SEND fh`gh bkihevah\Zlv ex[u_ ijbkmlkl\mxsb_ \ \uah\_ ^Zgghcijhp_^mju i_j_f_ggu_ [_a hiZk_gby bkihjlblv i_j_^Z\Z_fh_ khh[s_gb_<u[hj kihkh[Z hkms_kl\e_gby wlhc ]ZjZglbb dhibjh\Zgb_ \ ijhf_`mlhqguc[mn_jbebg_ihkj_^kl\_ggZyi_j_^ZqZijhp_kkm DESThklZ_lkyaZjZajZ[hlqbdZfbdhgdj_lghcj_ZebaZpbb03,13Ke_^m_lki_pbZevghhlf_lblvqlh\ha\jZlbaijhp_^mju MPI_SEND g_hagZqZ_lgblh]hqlhkhh[s_gb_ihemq_ghijhp_kkhf DESTgblh]hqlhkhh[s_gb_ihdbgmehijhp_kkhjgucwe_f_glgZdhlhjhf\uihegy_lkyijhp_kk\uihegb\rbc ^Zgguc \uah\ Ij_^hklZ\ey_lky lhevdh ]ZjZglby [_ahiZkgh]hbaf_g_gby i_j_f_gguo bkihevah\Zgguo \ \uah\_ ^Zgghc ijhp_^mjuIh^h[gZy g_hij_^_e_gghklv ^Ze_dh g_ \k_]^Z mkljZb\Z_l ihevah\Zl_eyQlh[u jZkrbjblv \hafh`ghklb i_j_^Zqb khh[s_gbc \ MPI \\_^_gu^hihegbl_evgu_ ljb ijhp_^mju <k_ iZjZf_lju m wlbo ijhp_^mj lZdb_ `_dZdbmMPI_SENDh^gZdhmdZ`^hcbagbo_klvk\hyhkh[_gghklvMPIij_^hklZ\ey_lke_^mxsb_fh^bnbdZpbbijhp_^mjui_j_^Zqb^Zgguok[ehdbjh\dhcMPI_SEND:• MPI_BSEND — i_j_^ZqZ khh[s_gby k [mn_jbaZpb_c.
?keb ijb_fihkueZ_fh]h khh[s_gby _s_ g_ [ue bgbpbZebabjh\Zg ijhp_kkhfihemqZl_e_f lh khh[s_gb_ [m^_l aZibkZgh \ ki_pbZevguc [mn_j bijhbahc^_l g_f_^e_gguc \ha\jZl ba ijhp_^mju <uiheg_gb_ ^Zgghcijhp_^mju gbdZd g_ aZ\bkbl hl khhl\_lkl\mxs_]h \uah\Z ijhp_^mjuijb_fZ khh[s_gby L_f g_ f_g__ ijhp_^mjZ fh`_l \_jgmlv dh^hrb[db_kebf_klZih^[mn_jg_^hklZlhqghH\u^_e_gbbfZkkb\Z^ey[mn_jbaZpbb^he`_gaZ[hlblvkyihevah\Zl_ev• MPI_SSEND — i_j_^ZqZkhh[s_gbykkbgojhgbaZpb_c<uoh^ba^Zgghcijhp_^mju ijhbahc^_l lhevdh lh]^Z dh]^Z ijb_f ihkueZ_fh]hkhh[s_gby [m^_l bgbpbZebabjh\Zg ijhp_kkhf-ihemqZl_e_f LZdbfh[jZahf aZ\_jr_gb_ i_j_^Zqb k kbgojhgbaZpb_c ]h\hjbl g_ lhevdh h\hafh`ghklb ih\lhjgh]h bkihevah\Zgby [mn_jZ ihkuedb gh b h]ZjZglbjh\Zgghf ^hklb`_gbb ijhp_kkhf-ihemqZl_e_f lhqdb ijb_fZkhh[s_gby \ ijh]jZff_ Bkihevah\Zgb_ i_j_^Zqb khh[s_gbc kkbgojhgbaZpb_c fh`_l aZf_^eblv \uiheg_gb_ ijh]jZffu ghiha\hey_l ba[_`Zlv gZebqby \ kbkl_f_ [hevrh]h dhebq_kl\Z g_ijbgyluo[mn_jbah\Zgguokhh[s_gbc• MPI_RSEND — i_j_^ZqZkhh[s_gbyih]hlh\ghklb>Zgghcijhp_^mjhcfh`ghihevah\Zlvkylhevdh\lhfkemqZ__kebijhp_kk-ihemqZl_evm`_bgbpbbjh\Zeijb_fkhh[s_gby<ijhlb\ghfkemqZ_\uah\ijhp_^mju\hh[s_ ]h\hjy y\ey_lky hrb[hqguf b j_amevlZl __ \uiheg_gby g_hij_^_e_g =ZjZglbjh\Zlv bgbpbZebaZpbx ijb_fZ khh[s_gby i_j_^\uah\hf ijhp_^mju MPI_RSEND fh`gh k ihfhsvx hi_jZpbchkms_kl\eyxsbo y\gmx beb g_y\gmx kbgojhgbaZpbx ijhp_kkh\gZijbf_j MPI_BARRIER beb MPI_SSEND <h fgh]bo j_ZebaZpbyoijhp_^mjZ MPI_RSEND khdjZsZ_l ijhlhdhe \aZbfh^_ckl\by f_`^mhlijZ\bl_e_f b ihemqZl_e_f mf_gvrZy gZdeZ^gu_ jZkoh^u gZhj]ZgbaZpbxi_j_^Zqb^Zgguo14Ihevah\Zl_ev^he`_ggZagZqblvgZihkueZxs_fijhp_kk_ki_pbZevgucfZkkb\dhlhjuc[m^_lbkihevah\Zlvky^ey[mn_jbaZpbbkhh[s_gbcijb\uah\_ijhp_^mjuMPI_BSEND.MPI_BUFFER_ATTACH(BUF, SIZE, IERR)<type> BUF(*)INTEGER SIZE, IERRGZagZq_gb_fZkkb\Z BUFjZaf_jZ SIZE^eybkihevah\Zgbyijbihkued_khh[-s_gbc k [mn_jbaZpb_c < dZ`^hf ijhp_kk_ fh`_l [ulv lhevdh h^bg lZdhc[mn_j :kkhpbbjh\Zgguc k [mn_jhffZkkb\g_ke_^m_lbkihevah\Zlv\ijh]jZff_ ^ey ^jm]bo p_e_c JZaf_j fZkkb\Z \u^_ey_fh]h ^ey [mn_jbaZpbb^he`_g ij_\hkoh^blv h[sbc jZaf_j khh[s_gby dZd fbgbfmf gZ \_ebqbgmhij_^_ey_fmxdhgklZglhcMPI_BSEND_OVERHEAD.MPI_BUFFER_DETACH(BUF, SIZE, IERR)<type> BUF(*)INTEGER SIZE, IERRHk\h[h`^_gb_\u^_e_ggh]h[mn_jgh]hfZkkb\Z^ey_]hbkihevah\Zgby\^jm]bop_eyoIjhp_^mjZ\ha\jZsZ_l\Zj]mf_glZoBUFbSIZEZ^j_kbjZaf_jhk\h[h`^Z_fh]h fZkkb\Z <ua\Z\rbc ijhp_^mjmijhp_kk[ehdbjm_lky^hlh]hfhf_glZdh]^Z\k_khh[s_gbymc^mlba^Zggh]h[mn_jZH[uqgh\MPI\u^_ey_lkyg_dhlhjuch[t_fiZfylb^ey[mn_jbaZpbbihkueZ_fuokhh[s_gbcH^gZdhqlh[ug_iheZ]ZlvkygZhkh[_gghklbdhgdj_lghcj_ZebaZpbb j_dhf_g^m_lky y\gh \u^_eylv \ ijh]jZff_ ^hklZlhqguc [mn_j^ey\k_oi_j_kuehdk[mn_jbaZpb_c<ke_^mxs_fijbf_j_ihdZaZghbkihevah\Zgb_i_j_^Zqbkhh[s_gbyk[mn_jbaZpb_c>ey[mn_jbaZpbb\u^_ey_lkyfZkkb\ bufihke_aZ\_jr_gbyi_j_kuedb hg hk\h[h`^Z_lky JZaf_j g_h[oh^bfh]h [mn_jZ hij_^_ey_lkyjZaf_jhfkhh[s_gbyh^ghp_eh_qbkeh–[ZclZiexkagZq_gb_dhgklZgluMPI_BSEND_OVERHEAD.15program example4include 'mpif.h'integer BUFSIZEparameter (BUFSIZE = 4 + MPI_BSEND_OVERHEAD)byte buf(BUFSIZE)integer rank, ierr, ibufsize, rbufinteger status(MPI_STATUS_SIZE)call MPI_INIT(ierr)call MPI_COMM_RANK(MPI_COMM_WORLD, rank, ierr)if(rank .eq.