ࡱ> `!BHG'3z"``GTYxcdd`` @c112BYL%bput/ @2@penR~CP=o(+\c`0`Ƞ T^20>y\cg6j;!2Bm`eD6^( ܐbr<޼J{L(F?ً90->(fgf\Nq`ciIJg+KRsAb\ ]@?:t?1e4`!BQ=[O{CF)x{c{w>JZH9WDQJ:!RH9rL9F0$"k1gFc10w}]5ُs_V{j|&煮s6SIjz6+NAV-f֮-T4qu-j_Q?vsGqT:׵+l*?ѭۆw5k|=6j\k1#Ƿ;vnj3l?5+ ^ѐsu#Fsoݘ}5~*_tyiyo[˭tuhi7EֵkHhGer[rKrUr~~]!.)Ts/lr]/R rW ݘ*\~ɛWoԯ]s}ƍ_Ѻ]ڮ[N{a9k.}V[o!\Gu]zn2srra@ג[UV%sM7G5nKMU?n?O]\sonuz|{ntiR詢G~Gk.w&|5uLJx^Fw&X]}YݚXzgk7 ?cӣ+xH9:Nx.`KcGau~ =n8ui;BX[>2јթ49q\gqѱ#QX94Mp*[>2թS4'qd'!ѱ#X:F7N ًuUS{&AauxfWgƮ :f8#xy{c{Nٖ啣v pxy[#q5VA-YkM1M2éVA͌Xji)Gǩ& g8<ȼQSUAڬRL@1Mp o賊h^ɵgL auAUcTG\D*4dr ܛ Lׄ5MTREE4[0yt[0y2]6Q:"ݲirL{vێmS5gLg`'&V;nW8UFxVlȳm'?ؓɳۛu{+zu7O}M??NY/pp{oC>42y+`G#8~6Q9ɫXf_)IwS>c^69ɫDf_IJw2NV>c^=0)9ɫ4f_iKw&T>c]5ӜKp6D;M*1&n<\]pԤM)1Nnb\op)d+1gnJ\̾ӗZv8VӍ i OOItmg,0OӜ;Ls.w1"e{Xl-6]A&?} d'iXXfec5/+iOH*[ ^eОu|FxQ=!ͯدwo&-8oPҼւww4M38xOR Uy4l=8X goOiOHwpw d_/M$㟴'|45<o;}FQ;}THSu4MPꃃj3id4=!MS 4U4A P>%5-hOH* o8mT% Tf]=f*m@}k5b!FihNfFS6-Y+Hkڵf[B3ҮJmX;H`ckigBko@*m:!Fi39#v7:lwc76]@3ִf>ƾ4Ҧatǚv=@ό;8fTa@}X0v8$pXF5Y_H61@?hiן Pil1Pv$05N$*ml1LHv*$05Έ$Uڌ6l1J8v$05G9*m&l1Adv>$0٘5.$)*ml1U v $0Ø5fFe*m0,6sUc6ִ&D檴޸fשn7bM[#I6;h6߸]Bv'$X5$U,2">6Kc1ִ{8DRiSׄHXE(D]+֒fiDH!XqhO3hhգ"U?:P*0j&jH!*"V-@W4_4MB3UEs(t4&fH!*"V 4&[K3H!*;fLf7BMUte@77ij"*Ut/U+P^b/Ld4M{fH!B3d,@)Ӧ dOL<)DUEz>!Pbh&26MS3HC]w >>ƾ b^P麨L{@۝F34Ϊ @:ƎPڳi&;&ȫbƶPQE5h-Kh&[&h[BkiiH׌5hf47MH3C7@L3LTbFm(to45gq:9.)V3 Wogf &}ݽPMsΪ=+PDtC=+Pν9sO2 |g}wοy~ Wnr,]?ܷ9z׋xo}uZ$z~J&?{W:\ᆭ~O| 1KǕ_nW~G+!EXZ|@5|}32 zkT5Z9:|d2V^Ҽ^TS+MW-Ya<թg4SqiO'cG5au1 #&x=[>Xթ4}q~cG :u'xf>]9:NaVvrtl2ǘթ4WYqJ3eѱ#3X2թ4@8uiN 2gթc4}ّq(e8u8xy7Vz)GǩMp FwNهuSS&^A]Xc1Ŵ']9]B{B,*1ۘClJ\BfWўZvZϸјG͍ '9D{B퐃T>c' 9I{B{}{U>c'y=9x=@{B+B *xeR<Ξ<=!/S_|3 j1=!sysY9glec% i^e!WhOH:[9x]3ƛԔ i~~ 9Lr[xx?О]r?&xrgОo_gcrgl0>f) i9M|ɾ|2_?iOH7;ߚ&p8Ϩ4jSSiԢ=!M]VrPW{Lլ>Z3id4=!MS rT{L-XKA hmlIMkc Ҵm!FmCg]GcGu4:ٙ l5vcCe]cu1:{bMnlH[F0YJH?ִze]1z9 f5d}!#3Үq G@c@6vCh6f(; j5톱iJ63 ӍӰ(6v㌳h6688kM U&Dڨ4lLRi3] L1.v"IdJ%4aLWis \f\5$Y*mWl1[\v $0׸k]I"שgDyƍ*mnaB7cM$rJƝ4[h,Pis7۸ k-$T,1cJÐCƃXH)yxfT<0ǚv#I)6+gixFHy9iR$f V/Y^VbM7"IdJ&ezW*@)Z4-L4gh&GJƪLXE(t X}FCUDUUԁHWE{$Z矑9}U͹]̽Ɠ o=:L`ki9Ƴ9=5~0~_}׆sLjWk@=pUQv28B\'WxC$T8&x] xTյ+3dN$Ix# $AE@+덢H,M: ЪEK XQ|T|-`.{`/U0wsٜ֙9ÜxV֙9{\ cȌ9筓+`ip&u]eg,+'bggm 9#AAp "e~'7TRڢr;K's!~~!w^X ˪])Xf/gk>PTh(UH6c=SOtww}H=Pfvv3V_z k"GfجLG7ԥ>qHsp<[zcz_ be ~b S|I{,;mCWTkPM{Br}?RVM> Y6}U:~w? ǹ:Eso)I27\,t&bcRZsRrhl:)+ gpmlMα]n~0d7qm ,Gd gx]<Tp*Qz4׼?g8^8>LyƯ k)(~& "v7sДW23^PeT } 8g'\c ;-UUu ?9knQ H n'&4.P?3ǨbՅ K]V.:>}QU a }/I 929LCS?p5+"l9L#At"Q:liQPP:a\z= bȇ?怌U}j{EK~ kˇ65 0,W|Ǽ?ƉXk]Lk l, 1Rns%9¤M}=bg%&_J8_HEy[t_w]C߫8o Ἔb8?p1;zGo'ToN2_D8?pF|17N|1q/`2_V% pތMn8_H8?%)8Tq^J2O"/"yGw8?~uS s |6~_ 8,UUtoj~/i8+ ȓD!}RNy?=;jdv؀Ʋ*n燑LA'uiC6 l1i+d=ȧ _XKW/N}Gţ#=3x#5] za KPTŬ/8>onD^~L}S0V_K_*|d Sc[#Ή7%ƴ'>aC?uhLll`LFØd.AqLagpMa-20'kSk_`5~n)?ÂϢgYP( YP9~8oǢTϻx=&ֲ):ײ+!8\Oqx-_@^^L\0Shj<`NpjN%ZY~,Sp*ϡ瘮#NOVSL6S:ZkyHƗuwogf=4ҏԟVörd`h;w0dsw YTscUf/OOWvaX*{1Rzlp+yld5v<5n|DL)B\uj_+rSEk\Cyߦ^K>>esBpS|.`%) A D{r8l/|&z.3?m.oCu{_Жw-Ro"c(i@gZC/i 8ra}a}T܎KuA鰄LI?\'Yew^${64~1F޾ݒƏq+N>@彏df4 l0iҺL,$GpUqk8q\19xq5{R`M#w\+ʤM}:Q`sIf8'_nl+i3_jKJ{XL=*iȿ] qhWziICJq(æJ(k}tډƝPQR,즸sW+6K+7ĝ'$*YeH>WonI{>sUqp޵?ԓ׌<8c4JVDJ3oo6i?h+&t#oS- ~ s)B__CKqogҾЯ$bd=ϱVyW% 6Aпq6&)y^k43cbY`Yy ^`łodJ 꿓ҿ,3SIrԓ֛of?9zcK{LOg%8<9Zϱ޷uBf3;g^4e%»[G6^GeKQʎw|o~֠5cmJ`li3WKL's$-{rrqX}Gݕ|]K#Uݕw~8x;{; yCv3c񚑟glCcfo)zEU8ȡ8|(<ӆ<'虉CBL/>U .Vq Zyˎ1o<ƪe qsq^̫On9"|a]mt6ȼ z>|4F)Gmu@C ߑ$Oɯ HCOxOWf蛳y7|B{%{^7WL/sг,+ϱ}[G9͏'鷟_%IsgGxN벵XR/{ vM07cb6?9 ',uq/ wY{R<7[鯕8lNۀ>3yT֚Q^/ܬA`ۍd7]MnrZ0LQ^hdvJoAK =g }qQ$p;Cc%rL6S2578$Pv8+}B(^˂qhs|0(\& 賫|?=7϶޷ BZm`SDѩdy:@>W1WdCp43v}z)c<7.G1ߔr2 3q_f Qmڻ ~᫰-c32Ϙo{ H|l'&z&©AA%S0SdGx_e3ԹCU>xNڬ~&q[sy35smsֹ2ם}o8p)ٞ#J簒% ""XYpE-o|^[:oIȷ|)[E-XX|뼐ozoSE5PE g=5 c8|(! bUG÷A}tG&p_'o=R-iFo-(mu(!¾qmQɷrC5I[Ka./FVx|k?{m.cgσ3Xwu 𱓠u5Ro,mF-ϧȷ{oUiqY-MIܬa\IqrǧhFog HΙ[ӉrzXm_^_RysMڏƋOo؟oy7QoP bAoQHߺYZ oEoQIܧe+NN! ~T7NVTjN5 _X~2؟k~,j Z-)s/S 䇫8eͻTjN%QjLQ NY+& Nqބ |?~Ug~jyXտ~̧7fv5j-_;iWb:,دϳtc>m6E眘ǜiyc@jC 䊞/-/W f׺ R(_#Q1 e8#|OZܯ ݫ[q_/[G9V ~-i{"HMu-1`, %L4 1kKʮޯꢧ;ORsPUmclDU;~PEOPkNja9ux0ƃ෕~ϫt{VuBy<6 =_#߬6σ@=bYhaYO0 ŃS$|[_#IxiYă'(4 Vvei`x,flO{#y,@.jn7Sw^7mB5c|񀪑y촫v1Pi<@f7_{:&/׼T׬QF5)Axf٤׀\|&o,-)%^H4>xpA`p(\"2?x>>ZOx̃P^K?pA"K_jƦx-o$&vP WOq~ϋq]qݏ>vPV5j-_+iUb:, i<8a{^鮵 cj<<'_#-G˱$r^u9VrTp>=L8nAa  S$|[pL7px`*έxOƵ<^3eufu&mBęy-P@_u&5{-m0\\mr|):_qJRWM 8mCH.kTGQLiھKa儐өB%'vM`L(/Sh@yeUDy}!ӽnaͅ1֖☫ϥ+U`(eL*(̤s[ Oxe@iNмR,ia/ }93]`/5?hvVOP[,J4#Z;Z A /BO v.vhIicIcGCzL{) y9:N=}ytpa&71 :p,~K@++HsrufG')$tq71.a:>GL%&xȔTgضVdͽ}%@L9nkƝuS{{}(O'<'<FNx1^? !<w~T~SY:4CFӺpM(0!x$UY1ccg5*.rr 1YB퇯{ig\g}ƃVm,㿣l8t59)W$qou~ T s珫^ ܾs캼C&xOj+Q޽m?|e<*܃AiUOѶul}#@B?0T}¿G3o5R}HЩҊ}ie:b"_M0ZQ/ AsJ!|,KK}J{C8Zd`_jod_z ̄}u8b-[/կ 8G_AYϘc56:yiL*{4k~W05o ?,{y#UrFS.&OmyR}+S S/kxj p਽qb{<0 zSBL<2#,n<5f1o^zJڼ)*j<֡Q_B9]'ծ?eJ};ja^fo>O%^eiw$m<6M:~UfhUv{'ɍ.w,4ҀZOl\OF>8xSpvmn>qY^9FkyT?ǐGi*J$~7)}9M _A+ү`WYPjJ:PZKRrSWIvZvQ~ MuxcaʨjvR{new+7Ps"Ykƚv< /3Mgƾ?`_27[C+6FׄI|}j*^\DN\ۦMBmiΜ.V<g4c?\PZg#u!ήNytM1fU͎zgQЀ/3랲~.xs " jz?xC9:{vt/γtҎ3K8 Wu4 &1\&}}#Q_0LwĢ'f>~%>W||^>lvOgFU: |}&_9_ZۇI;h '*<.|Ey=|oB\M?4n{3xy:s{3x f8x#т#-(MVM$?27ѿ#jOux3S޹?N{rf|=y[@jEP+<˧M_pdc?[X{X>Nsκ ylx5QaL \h#:iϳwwA?{/i<~6kij?sѹSwåK̡TZFSy:kj!ozWD? 뀶HAW|"J@'HdJ/U곈:AB:A\#u :SbK S&MNٱl <(.:T^rka쇪^Wﺈ6jSy^~/Lw6>Xz)&1D,D9>x~b5)OJ|^~O1x~N9&ոecPx=Ϳ>Q4+/'P's5.f|/'kb>Jib`>j3 bCy>N007; ̹&138w:Y_jv0iḁ XQ|~ +F"iĈuH`0PҶ#PO sQ`clYOi*ߴNğPBXwzSuX+50gkbӧqI|CDGԗ!h(}%$T_Ք~%ڂCW3߱Q{a?ۼo}fߌ˼rߴxf_euG:|+|x&o\{YOOf&j-4k OY]e03~<@hmQO1kJukzF}]<rMM_s?y\ a4kע>:RFhSTaΌBnEb?wb~bس^/4deE1Az!kk?h3տf58kJc>/9H0+>^-eg +K 5М\XOIϟgpFIݥ݊>]%Bo({VAX#/Pd{OҦb\ ?-Z!;;ѷם>;Lj2NG<|%V&6yKL}$&۶l{Ğ!}{lϊ#m3īm< bM;Q]l .}iׅp"]X<0>lG tocº|6 W/xb ³ixBe8=d\tʌGAAQ6A5{d8M.@8[5jq5o[.VxB6!8(“K>< }P)iAkq5栭lWz?7z!!~)>->׻b#z_ 4Ee2B?y?wPjўLYhk? eOfof2FQL鄣)Xh ÂP  ?OdOt111 ߌ9|DvR~uF<cIxjSO0xjci`fO=)3xj wPq ;,( /(D0oSOR<2fx }9=fްp^3=$Mo8ۇ6:hYcvHYYI~8+k42ge]#?N'&cz׵aiL+>BJ-سVخ\x+z?P?.䕹W+|^{߀2v8]}Ly\Ǒ#qA@ysח;݇?~竡<1_7ovnݖ sϼmDgq]>x.o-g&4m#i 8lQ:m7u8Jv@=}vs vpI@,vsiCvgd7i汭 `(yy'فjݼl= y7nnK6aMa7nvs-qG-nfanƳ[i}|@[h]|("-',ۗԩk3vn 6K)?S]@׏GӾvalLMa:>Gүah99Uy>V9SW9Z9AhJIzLΝ2ƨ͚ "'ڬUIi9j?Z-cZNNs;ƈkj945ye|9%L_BPKLqsUQ#z_IBw 嬡<2XCyYsۊ=MH T×O &jG,Is#ؓ^ܓmG}{P=%~̍=)>z;=J+kQQV;b}O~~8\!qnjy!yOGpL*~Z6KF\,W³sUVj9Y;JOP $ii9hsY0OB|nᵉq/C(-$r1O[P~xi:z|iw0!; ? $jtxf{L6:r^>ZZ댶ݬCZ+gVg7_%ݬ|Bvs4濐|Vc7i1lWJ bnw wݼa7 e7!æðY]Ch9)#<3fVh9zWB)i9yAk$j0FÉirL9θ#]")H`ZToqI>Ijw-;]6S6ϓyZ O( ϰy|k:'A0r4Z-kZN^sƐKrikj9i_-g>i9 -Mˌ B\r1=xYV(F(PuG)be` |h9y rrܱ'4?myj8q2s~Ři9ZN rE+'-AyrAJ+'5`[ |[}':=jR4/k9S g46=&n!1Ϸ08WW(A<: aqn$~O38WrnW{:ɺx) X%ښZ >{.Ġ~B[;N|qƙ $I|#m??eAR:Y ʏ0=>n/Cvw2L} 'fx %~勲JduTP)P>S3=)ձ;S8{Ԁq8u<tIW=j8Mq|1loI% TF{4oO#|{^F{WGF^¨@M~6h?6 m YnB.6"mo`?6WTL$m_ lѴ)+8ۼ0Opޥ > ץJjouP_8|EK~NWE : :S9n/TM}3ưi/PNG  IHDR":9sRGB pHYs  .IDATx^]{|Օ?&(`G <bME(&*n v[Z֪Z%P_ U>p+#J$%{N&Νg~y|Brw={Iknnk^άX{—a?`TO84=p 4}a^qtYp> 7Fa108'j?u.)T-W`ǻX@!CB1E?=fCU*6 icG6} G3ySÕ'q_:b2-|ޏewW%_ KJFGoc*YR,cݺ !q Pzw8G2n3һLut>8D=}W0 l HC<;!YN4oΙpaAPf? k^y ޭz˳bM O3 ztzGаXcftp%|b y; !k0fY߳ &ˇIU. !ApKjO~=Lr&/\}mvXUv9D350I]4kE 1Sp .n6~Q'+w՟V$ ; țQ>K3^7J{ OQ [$},Qm@cw S[.̯V,T6E^h'/Cq- g>TSTJضPRln(ךD1C LBWrJނd**Vᙑ5^D'!7tSK7cԾ8ՖjAjH2 =~RBvUc١.2n~D=)]mX]@>6^S䷾T`д.aQtMuJл.+pA6.^-ςLhW~n%#8|m ւWՆm?]U]>O3"tx_ ;h'l";?:8+"0q~7%!CU,vDCĄQ %Ozְ.*8"n;5:nXhTmopղ|QpL붥`yQ5˨ UL.ĭxJMatbuyx}4L>p"҄j.J"\ b[ed,RWVἧ,ֆKwXۂUuU=EG-k&׮*ĭBQ,Ԫ]Xq0V|qQI%Q_A bsVuaUMF _*>Ba)Z}1Rūw>+>*? A=EL, _G*\~ON[/zEa,T-Q?G^WڷIXPZ𭣿bW!P~׷qw5b_Չ8Kg/++ źk)vf\Es >BBŷŢnVjh?ĬOANgqLn}d[wW"܆_UtW}pͼG;"D4Co)[^KQ`hi=`Ⱥ#w{r4^х7Kbe]wfEyw{qW,vnnSzKGKhjQa}-, F?8k>g^e8$g-8mn/dSᓰwp*nGlJr% D.LUpTcK-5wY͜l ()Py|pxB.kνPlDOm \2DTXTߺc;g!rCr@/Lf9`l㇀vRw%t8x9=yQ͋c-'TX;lՓ:o˯rOO.֛ ڳby;q8uX^+\^edˆQűwcRߛxʘL?]b6ƨ 7j-YpV”\x+i[nZs3UA{Gqw<,1^,-g/bNwqX=LCuB\SMxF?닞3 6ܡ-B^6"f)!̒},!J0J'Z_Qڕ?m%r88vC:V,vR@T@ F|MVL8 k.hMݵъ ZiE^gm^q ™bU 'V0xʥEXrIȣDyˣ0|"lj:W@}zDŋ綂/[A+ĢQTGBrkF7$mD:[*=RAG2VE]GcϬP)!VҮw$E1DS@zJ wч>x(<|!%%ҍ3/IJVhw}դeXh8v(+X 0rE-b2bQO] ϴ{2•n%ow9|"ܛlP8& WIIn0t(n7=- O ['27m߿*YǰSS19+|xj쩵rKF{T ӔwmX&ݲE,m'ո+6#m|3S?Vl$|ZCX%cZ2ԇePb.<psZ/-biDS ##uq߽HvzyA,GnI(bQq9PTh6ğKJKA#3$xbij,ىd tXK tLr%i9h}c;S%T,G|ɫөRʲ–bQMNjh 60ׁb~"٭:nM*68B,p~LK32E_$>b][%΅XV/ʒ "c.^ٰHEA,-A(G4*EƁd`^[tXHޢ `. zWYx uiY2cRoVyiLBAbȅR}CC,|Ţ-P.qЙbuN!W?X_:G)"xy`ƇbU/ΎZ͊Eow,#  [ q Cm>[ sm7iK!Z!VdF,i*9K\# hX7ԹHRV:3bقkRPkq312gX l5 pW/`XT8 {XKc$"f*|KZ^ [&koa#FCbl7VBI@baSU> >|2RBZ_T@f_Yu##r?~c!=KrX( ԶBF, V/@E,^)Ɔ²3MU<QpIlD˿-A|.Vj5,ڝ~tXLzq} iűrf+f]⨊X+-!1qSR.vg!Og,,&Rk*k}k&{A,)V[BwĢ65IˊA"3/VJMu{3 (D)TExLn)9:3za qSfZ,Mb5-vXlG ]5=_Iz~+A-n~|щw"FxIf`XbQ Y)V@ aw [6fJ+$9t#Cn14H疄Є %„%ےH3an{JN0fU2'Όb 8jQ$bxy_I\HBt/kYbH*syIF?j3)V@N, ٬{6`Bޕ'qft 4A~Z Lؾ6 =Q^. i&D|,MRlkұ]([bjS9mM)c= rǻ6m:^g%`MNEbiWIzrp!V+na5C-x|M_R}TBJ?zHxlok dDd)&Lܽ?nX4B ,LEZ:\)$<ހXc }6u8Ub54~,m "VdXBk8/ӇR#MQhHWD)v+#?Ԫvy\<\L`6hBHH>P}!BN=g"3UXZo,یJE+1baebi6P`B"X)>>ڻE?9ۑ1B]i /*:ӹ~,ޮP[%¨b9) 2aXfFկNUyiyZ/q뷜(~m ªӵB,}YRեs׸TqM'N/)b V{Ƞr;* E_>&2' ougV : LIHUٖ+2w^ gV~yEe0dz5GW o$5 Xxk|[S* 2E3SٖaG||z1:k jNJ3>#Ѥ,:w[rlyՑXT̒{UZXi#\{VF4ޫXLXK,Oq|~*u0o~ð>V_Nu_AꪲkDSL(p@˓[z!H'Kp2N1)([Ty&h9+baC7cG@[6.SDϽ<6%Pb/rI]7*rHx]*)Bx 5b8+4hic# w4?8mTƴq =E^Ćq&hŽŔ`zKt 7K%J!xү@, ĒHF+8EBo p.eF=c j"LdX-횣zA+03>Td 4?3{5%c_/٩zȪ7 !T0/.^dIPtPp$#4.YÄX;ͩ> c7L6.n;@HAn|=GsAZ4* YCΕ\۔Zį[KqZHC_Dm!mcQV9}G %fx0eL% K2AVEgb)oq"H"J[hbH]n*\{e{9":$ Fw۷PzxxWn D)b RO-@Ű JsZYVzZيa:s:P[ h`~R,~DPvڮU1yD Src` ڠv6|FpNG %:Wb_+ȳCK- }RiUOR,z JM)EjJV7;S ]D/$#Qwb.#5#xF@B1- d}nID)ZQOyPk*Z[B-{cQDAS,w;VD@L0"ޅ<7$&&ZrgbIɶNTc vK8-+עCEoCTkOx**,rn`]LWpRSo,e?ɵ?Uyb}&r_/)@%%J6dod.~A~t?>P5Wݟ޾5kĞbV>?D)*DI }0NX8ZWeGS,2q ʕΧ3:UY">rkPjPb ́)d*e 5 |KWN&'!=}qz` ijPU2[=sz -\y|Ȯ_$CO_2U¦X) ċ*lo¾/kY4 NM=[wć{D)C oa~Dސ2͑FPW'q,S./8`2xl _ IfbI Q)͜(dѯ;Y ]xTCmFq_d&2 GrG?sivt3"^H%D}cnE%ԧw:;."AAMW-_DY-z_ 1I&)#TZGf:"uN~ -uP] +y@hָ)+/](o%VFUźoQg3$Сa̵V!D" 6 ~ށJ+|G1p%K YF$Sw, HƐ(3  mq0JⅢ'r9ak⯐#ĺ~V(֦dؒXEC sZ[ap{.y*+ZFAP.jIf7.F " jk%U:MG_*L -̥J#N1JxLVAv!8mzh`!Td͊;* A=7';Q=c" c;{NQ,ATl'@*Qp}_UuA`:>o gX(Md2K+,gɫi}$Z'܇򫐛 0ZO HZs=HCQR❧4Q1T'݅8PL <6*0Jx7'O]ޫh7d1".a6ق?T[/} M6R5Bc"^Y/&8>ZCGqJ>Bz` 6UC'lֻ#ж &  o8T}VU ;2l߮zxz{6n=߿VQVurhmN~ ku*| ƭuޕ_5F _Rf5Wp<\Pr*qwˢ'*TԣM\Kr+T,͡uhen^+ylkf{i NT2ǏcK|ar=`rZTVؑ2JU|g*T,lWBՑJ)m+orp6ۖL #E>Xr.׊Rɓ>lc%rXX!V"U@"N6_U6{wQ¬L4ܫ! vO?7&Χф AOqe3b_IV<j8Pyu陭#MXeDxl8Cɞ-wt]:m() i# ؂c*d:w[":Hh}s3U6l̿U\WU]|n9MYۧ̚dbNMs4ħSzafUHs$)I*oǍbatwHQ&c+KcE"lAD~j&}^RZ^ $^>޲b@wUKqSO;Ľavf#9ͻP`p|?*}dξpc& lq-t'h%b:7]]X!h[ zM=2J1#8kso-JP6]*w9qtX6qsgi?˯9UWF [u/7*R$yU,,'160)iЅXP1^q}5|x%ܼ BOC36yU,!yq z-6˵75б|jUb:~X؇£mqY Eu96b' N\FK4C))[+"ᩳ?bۄ g޶ܼT0w|us_/o&yslM4#m+,v ;ܫЦO^:ci!19l'B/w SS% &^e)p˸"[ FG$Y~'4 ,-iEږ.ˊ;@ {"M[y_bU|AՇꭧ%W-;< a񶺆{:v%A繰JA!VE2. W)pߡoy\p;Q}#ALA^/X8VtV̪ 9 >6<љϼA(.S{-CU,ϮQ Tna+IN[iC@yb1kfיB6LKf z"/3?ec7tbiiMάr mXnJn5.isJ(VtyzWB )R%sTE|igQ@}& \zQ ;nۗIKgNguPE܅3z@ 8T[LYC]. nUZF|bL v Qivҧc`+\UPO(j}jXCOj7*j]c*q]?߾Oo2St}q-槏+d$r?u|2~+?;6'(ɽ+?WT0MM?O:bla|UڝqZs"!rbVyyizeQACfff9YP4@jQtjrT]NV"{#IENDB``!G]w^ : `R=:xڥ1K@%V*B Tq\t]ܬѴ4K>:w ;dA(6޽^B-M.w9 C(,t4(!*"4VIV%=bf2#4C QKwebI^yZrjvQ0JjօyPsU3͉f=h"//Mrd lG|ItGu#=YWu>u[=M.q)Y9^&*?6s\;oGt\;,e|,c^Qhx #lP_d?wdBAgyd}]N Ǔ2Cz?FPTtMˑ} L/ {d8D@=|0J&?C$T<x] tTյ>gf2+I LSPpLD~#CPk+`] /6 .B-ľ>)1Q(.u}X$+K,=NwN&3 :{>Ϸ!\2w `,p?>Q:cwLcNa3:k|\c`]s+P8.Q _ $X; S:EuPḪ;֩]q^b ƏYG/mB?=b:2Oǟuuu}HNx:Wz ad>:lQIEDQNJ,^׬zFuDb+(eCNnͥTM^mK]t3v]c^0Xӭ7HQM_sO=S<{灠o^Xu8]fMёcC,\w-Ǿ:h"c9xpA*6%[csɮL;U8x mdTX ` W4c8{ OSh< Jp>HƯDө*L CxW;9m`ne3UӋ:.:up?̓g',iϰF" CV Ng{ԆAt7ߜBc^Sq˰ ^ܮW2إyu&^k\ט3"7^QPq}T%ܮmJA/M8oA1 (_v4Sɿh^:Pf_!CkLϡG[4p9da Y@  }98a]~{\&;BLǶ9HlJ&'I¬w/r"Ϋi༖72k1Ws $_EN-(\g 7>+8_n|kq~88}G *Ώ$'Z &uM$8Tppy%8_E8&/Qs4pޕψ,V[8἞c8ߟp~Z KN-(%Ꙁ66ga-۟?kchMp|K\Ulqqx2*ڔsތq$EX}D½ѝ19OI}^=+߱TxIc.J""o98gYZcՙ c<ϳ|^`% $[#| Ox57۟u-Ƹ \zP:rDVgv>.~_ i4wn5NG0: 6wPmNe  39#: Gmm9jվ8ϺmRsxnßuMfuIujX: ?~~Tp7Hg5_U6 }O%eŜbe\x&9\ mwf$zeb0g5I92֜Yz{\ck![9+OlNc:==.Ot ey eAHʕ=|{+Y`l ,6B)S8?p~k%,%YCeIlޓTp>@2%+yJqp>L8_9+_8`=p>z9pޗc8_J8M ԆCP 3g^}UtdkISewU8-/"S)<,|Nq؁xБCq֕Ne9Z){9խ$; ?lP^1.5Zf5b{s(pw Rhva?<=K`7r(?D=_2$>k}Λ9MpBnħJڂ眹g[RY+*wX톿_Vyugt;_;]La=`gD"u'{g^еد-x]翝?rۋ~g٣V5M ;:wVZbVٿc,]2U/CO ac 0R'{KŽ J^+SJ?f@ł=_O mdqf6{ۨwz aoȿ[踿;ֿ֟d[ئ?/gЖ*;&9>hi/%ڛ0#cϘ2hj댹 ƕZ~fTivHOBq=*Lצj֣An)t8U*N8ǩ0TQ) ؔ,0?0 X~hvo5~f< zimۨ_As 9hĤOpd>*%ƠkA[p'Ơvc;@pdd޽w񟠛\" 0 {~9= *ebkl=[Tà3p͂-0oc om2qFg2?u>' .O5-o{cЋ޷ -cE +@e ! (p>ϥϙA( !Zgfg)a Cb`Uf8 M`F[C+tu ,m~CHSˣQ¨,=cr:hϣ],bOҺF{bߊh2pu\E2/.vH4rS}, rZ3KAy8@DOl@>*:$0) N?D}K2`16tʆv.g-=bd΃xWwx;7hgOD{ۃCOZ ?Zv6hu҆~A|߿ Evxn\qosq!|G99f"oG:CE&v7p7Ȫ }KK#>F`~SH硘y,GvbC/A_M"(gT3Gvg0{t} ۯI ۪0ϝuy^{L%N Ku|I33LJ ,y~sѬa݆K1 O*HbT|1:Tg]*Yx:=;f%َv>7s/iĿ{Q^H1mwv,9^wB+Muzen B1s>Cs KI%g]ЇdIڬNMOKi$'6\m$/W3{Z<)1?x=1MKj¼_#!^HkFla,_ ~ʷKx'`D׺r6򍮭e~ֲ @|: <ߓƛڪB*FT8.{m,U&5 eU:8 \Laf 3qͦR\#>F>ĿX#:JfYէxbY%#5oh޽X#Լg5"q\+&I+׈i+kD,3FWyq$6w-[[Z[3ŕk RY#ydvYl[SbIڼ(6r73 LLd?51g7 ͚Y\6·`>Ĺ&NsCKs'\ĺ W8%m%9_d%(َoSy75s/FcnxZr5x:rkV|O 9O%Kuy~QB,9@$?ya r$hOT/JsmI##GҼD5r"7]n~b$|D5r ru0K<؏Hv޺ڻ(Wׁ{k5_[쫭*iNIđ!ɠ491LCI.ȑkr$Sh;d q$Q G"Hĺ8F^+G8#ip$u$ϑ$,ߒ?x:8>}8|`izHȍtzXU 9ƑG1ƻB˟SR=8մ| HE7uđ!$*HY G86 GҚT8đ<$`"G5jHڈ#Y{ϥ&NSHGp$-D+} k#ip$$9đd>(#YIɓđTd<F<#G}5cX<c}đ<H*A(3#YMBt/aɇطWuQ`|?s謋c䘄kDq;:u$FCсX#rFb ׈a.54ֈJ׈vs4F<7_shdi/rw>\kiֈ8n",M2o`.>σ d>_5HD^GrX}e#DpM}nC;W8ozm{g$>^κ?}#n"}Jⳛ$>+#9]HYǭ=Ei"k(aſ҈#zKڎ#bR(Ŀ}}^9iYI 4x>Y#YJ6\D9M$شBM22Į.BzƟF.2lq?IMzO߃:ºSÇD Tߏ]H@@=o7%4!83-"xOhW&kiLMԪ16V,H!P+ArE% x(B6jK=y҃<-)ŖJPҙfvoݷjw͛7y}3k0JJ;:p .+-v 0j/qLuD}h~IC|M(PgE1K?+ 5}in%ii)R̍ߞxFB=)h4cN >˥#fi(>J-ʚŤz9f}7;WjJ筯x3%cpA|YpJt~Pw׎:Ŷe}->1|>_=u5;^qӭ۝uqցIkfJ=uDzpSoɟsµcXk[xwly?hv-NItvqDZk8 A2~ߋ=,cO5~9|bX_?~?$ia(|Wq?=,cίbO8q`p~5|nDr3b9> |⾀2gr q1y {Y, =߄";Pn:yb9,?O];سb9.;@)'2$co?~dNb9|\7AI, =Oܜj09s3v/ps*4k/FN*;'D&!Oދrļ;ht!u* X٫HG54Gi}(¿~wu7b' G 3Cwq[W/ԍ7Wc~0?du׮3WƑ2Vu\>b7j|33k.3P_KoH?(o\øgygٷyN/Psg3}Ƴ{yNQ:*^S%ւc.4ՠn XC;EEByTS| ?"kqͥڄya9WU\3L\Ikx#ܿkTjp:Y,S R7VKRsgZP9)ץfo@ ܿӫ?r /I9/)rS_jnYe˦-S_PNG  IHDR*_`PLTE lGu8ףf)~ԓWv&BbKGDH cmPPJCmp0712Hs=IDATXGV˶0 3y`-9 +^ "ˊ3"O< < < <  쑱XApQ%hl_F7_7eKnK7V~-;`g9{Ο_W"kH2!)ِ"T5"]_1XR"Dn<•e#UyKawVautN \H5`>XZ 6)TEZZUk3??-ׂ &=A30zUbxA1?5,ƚ9KaŲ&7@)Wam `9fp`BfF.ׂ2!j)3=76Jq‰9+B5౉PYנy PT6xT'2 4vt& +׼nLz3 ]q*uVjgA#;2/`͜R" ̙B̉yuM\ی)M@֫:3z!-`h["@lRMu.b@U:㳹+$^K##2/(l@Q3$?n4!5cΚ/<KI2c<^AZq+_`'#՘%oj"OBqj# sؚ%~w—K X(=R>ͻ QQQQ[+eT`$ܗIENDB`@=l^4s˔:si5A@.:x[olTE߽wmQJ[CrZJR -H1A%hkFg4BbbREĪO4H&|C5~3fݞI.vgf߾wZ)uA:&Ԙ*W+V{v*Սf^(UօRIˮGU꬧@ZԭPy+/=uW%*ꖃI׋dI:ݘgj{4e;}޳o^k{&jVd0Lgfff^TZ5[w&,l.SG!ӗr6rt4p"P=ZN4Nϣ}@/C'G?ѬR4&{znG=6_'ơD 1f싘Z7yjoC\ ɶHS]D,?P4vL]l[֗]} Aig#MP?jxl~wM߁ӳNӳ67}hg3o8c+OX3ruNy-̯y#}XRܞk؏,ܨ @>1E]_=h?F/ q1iB__@h&?kU Z ν%8>.җX }rɘ7QɶVYO /M_;_;|M%VwK'L/;!'ȻҺ$1~r|Š;"ґW!_-GmzmuX׊ +M__|M䳋bs GG`OwY먜<tZLAi""3FuV :F[YmzAwX̛~6>Co"]̗G-@% 78TbL1""jṭڀf[%`鑢Šy׋/|M䳋8:.|rƉ|;Ew瘘8!g'Ȼ >1?oJqlA3`[ C\嘟V̛N DOg}#ֽ@$Lyw4vyC""s c;L ;\|b\%ڸ\#gUGxX+0#ywp&]Z}x$";uZ :FدFVp}+bI%ڸ'D~Lѳcs\c.M>"!ag:|2't㶙( ZeuXhSC-ǣy}jjj$a𛛮Br{Gcz9td;[?[ϗCK{> ?'Յc{ezXQCPaL5:eX_[u0ݶ-~?bF7v[5b7E c,OY)*ۭvvP|7{t.ly|ȿnEtf30wb:2ٔ| 1||)/y]qF˗oyo]>N`浶"o._A5FM?+i=]~ #F~ 3W;_rȯ5B=~-KoTcwdznw3w= yzw+)üwVM2susA'> mX^BtncCtnsй9DJֹ!DJ[X}Χ;9'60eJӋ,VNSCg7\>LƦC|HshzB?:#D }@J@ϣ6LXBO> W)wf'k{ᩀfawf?SwFz?x}܈ǭHq9!za.Hy]_{`@U( f3f3FRJxo.<JFIFHHSoftware: Microsoft OfficeC    #%$""!&+7/&)4)!"0A149;>>>%.DIC;C  ;("(;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;$"; !1"AQa2Rq#r%3Sb*!1A"Qa2q( ?m6bPv CJ W?5pO{<~Qqkccwtŝ]e9tE oK*Ǿ+Bz.\VuYW${*NZţ,u  4j@3ËbDpHK:BhZ/Gǵ|cR%ia 5J4~Sh˳1shk_P ͏/ 2z8[!--Ao޻ka q(FP7q_xg5iˀUuXŘ7eJ^X6 g]8Jw#'ue2)ZZpwA6ރ3 y3Euu?[ ޢ/<>s FVy*JJs4Y |iZ,^^mμćvKi@9>C$gڹg͕Mΐ<f3(iU$FeqmJ [eBmd YYF0Rv~2A<:cC142Nϩ"A7z-`9vYe+Ttp%.go 񮥃\WE)puyԣ܁[E``GFL41'k\Y9Hp3:IKypVRu>ǒy[kn4쉄.Q6.G_SH5uyUZk4ƷI7x7]%iVT0IwuvUŹb'1G-XDqtV! ӧ~a͈i\6Dÿ] qJK+PH&ŷE_~rr Ce IR<0OwL-FN>Vlj<&ZU?&E8Yb=]*)/8A-rz ^qɵ>T2=ݔVUq>WhR @I'sV_iSJbFK+܏x\]xsvzd\x]J1ጚkx=Q94 }tmt%ZZOjĶq2&: mYl+V3UA}\4#%?A7fJ R4) }Ns!T3ܯ= Fy(Ns뿽ZShJ~Nwۢ)j$v'Jq]qpIjDJI>#*Í;$("]e^n=b&2^WO*c9|a* 4mDT*8 ]p:}}MÈ%%JCI#$*Y#!'|\)LJR:(RR(%)JS!)JS;@)J %)JuDW`![xda옃Y@n 4 *xcdd``$d@9`,&FF(`Tiv! KA?H1 Yzjx|K2B* RAs_L TȠ1[)Ɉ@tD YB2sSRsnb u P3@vq-`*e9?dRE0AI9 u@ۜ\?bd]ŕs`} 2BpHBQd  `B ` |e橬 6/bFc68~L*? f  @TpAS&8KJ0g+KRsAb\ ]` g!: Word.Picture.80, 8AC=>: Microsoft Wordq c$>@<C;0 Equation.30,Microsoft Equation 3.0s g 8AC=>: Word.Picture.80, 8AC=>: Microsoft Wordz .http://www.mpiforum.org0http://www.mpiforum.org/ Jhttp://www-unix.mcs.anl.gov/mpi/mpichJhttp://www-unix.mcs.anl.gov/mpi/mpich Lhttp://www-unix.mcs.anl.gov/mpi/mpich2Lhttp://www-unix.mcs.anl.gov/mpi/mpich2x .http://www.parallel.ru/.http://www.parallel.ru/ nhttp://www.netlib.org/utk/papers/mpi-book/mpi-book.htmlnhttp://www.netlib.org/utk/papers/mpi-book/mpi-book.html jhttp://mitpress.mit.edu/book-home.tcl?isbn=0262692155jhttp://mitpress.mit.edu/book-home.tcl?isbn=0262692155  8AC=>: Word.Picture.80, 8AC=>: Microsoft Word $>@<C;0 Equation.30,Microsoft Equation 3.0  8AC=>: Word.Picture.80, 8AC=>: Microsoft Word $>@<C;0 Equation.30,Microsoft Equation 3.0 803@0<<0 Excel.Chart.802803@0<<0 Microsoft Excel 803@0<<0 Excel.Chart.802803@0<<0 Microsoft Exceld $http://www.bhv.ru/$http://www.bhv.ru// 0DArialr NewondeTT. ܖ 0ܖ"DWingdingswondeTT. ܖ 0ܖ DTimes New RomanTT. ܖ 0ܖ0DHarlow Solid Italic. ܖ 0ܖR@DSymbolSolid Italic. ܖ 0ܖPDBernard MT Condensed ܖ 0ܖ`DCourier Newondensed ܖ 0ܖ1 A . @n?" dd@  @@`` T V> ooVVkk     +        G  b'        &       %5ko2$BHG'3z2$Q=[OJ"$pUQv28B\'W"$KYjUk#2$b$TM}3ưi//[V$$$$$$$$2$G]w^ :y"$|0J&?K"$o7%4b$Ye˦-S_ "$^4s˔:sitr$.Hy]_{`@UiR$Jxo.<Z2$[xda옃Y@P <AApuu i@T ',aʚ;Sk8ʚ;g4FdFd  0\pppp0 <4dddd w 0T.  g47d7d8  0p@ pp<4PdPd w 0T. v<4!d!d w 0T. :___PPT10DTimes New RomanTTx 0xDCourier NewmanTTx 0x1 ppZ___PPT9<4^?- A=>2K ?0@0;;5;L=KE 2KG8A;5=89: #<=>65=85 <0B@8FK =0 25:B>@ 5@35;L ..O  =`t 0745; 4_1. 0@0;;5;L=>5 ?@>3@0<<8@>20=85 =0 >A=>25 MPI.; 0 :0 %  1@07>20B5;L=K9 :><?;5:A 2545=85 2 <5B>4K ?0@0;;5;L=>3> ?@>3@0<<8@>20=8O&J@1C$A!>45@60=85  HMPI: >A=>2=K5 ?>=OB8O 8 >?@545;5=8O 2545=85 2 MPI =8F80;870F8O 8 7025@H5=85 MPI ?@>3@0<< ?@545;5=85 :>;8G5AB20 8 @0=30 ?@>F5AA>2 @85< 8 ?5@540G0 A>>1I5=89 ?@545;5=85 2@5<5=8 2K?>;=5=85 MPI ?@>3@0<<K >;;5:B82=K5 >?5@0F88 ?5@540G8 40==KE @8<5@: ?@>3@0<<0 2KG8A;5=8O G8A;0 p 0:;NG5=85f40#@@#@ @ El2545=85&   @0A?@545;OBL 2KG8A;8B5;L=CN =03@C7:C, >@30=87>20BL 8=D>@<0F8>==>5 2708<>459AB285 (?5@540GC 40==KE) <564C ?@>F5AA>@0<8.Lw  G2545=85&    @0<:0E MPI 4;O @5H5=8O 7040G8 @07@010BK205BAO >4=0 ?@>3@0<<0, >=0 70?CA:05BAO =0 2K?>;=5=85 >4=>2@5<5==> =0 2A5E 8<5NI8EAO ?@>F5AA>@0E ;O >@30=870F88 @07;8G=KE 2KG8A;5=89 =0 @07=KE ?@>F5AA>@0E: ABL 2>7<>6=>ABL ?>4AB02;OBL @07=K5 40==K5 4;O ?@>3@0<<K =0 @07=KE ?@>F5AA>@0E, <5NBAO A@54AB20 4;O 845=B8D8:0F88 ?@>F5AA>@0, =0 :>B>@>< 2K?>;=O5BAO ?@>3@0<<0 "0:>9 A?>A>1 >@30=870F88 ?0@0;;5;L=KE 2KG8A;5=89 >1KG=> 8<5=C5BAO :0: <>45;L ">4=0 ?@>3@0<<0 <=>65AB2> ?@>F5AA>2" (single program multiple processes or SPMP) @F@+@@"@@@@B D  %  H2545=85&   2 MPI ACI5AB2C5B <=>65AB2> >?5@0F89 ?5@540G8 40==KE: 15A?5G820NBAO @07=K5 A?>A>1K ?5@5AK;:8 40==KE, 50;87>20=K ?@0:B8G5A:8 2A5 >A=>2=K5 :><<C=8:0F8>==K5 >?5@0F88. -B8 2>7<>6=>AB8 O2;ONBAO =081>;55 A8;L=>9 AB>@>=>9 MPI (>1 MB><, 2 G0AB=>AB8, A2845B5;LAB2C5B 8 A0<> =0720=85 MPI)`5ps 5Bps B D  8 I2545=85&   t'B> >7=0G05B MPI? MPI - MB> AB0=40@B, :>B>@><C 4>;6=K C4>2;5B2>@OBL A@54AB20 >@30=870F88 ?5@540G8 A>>1I5=89. MPI  MB> ?@>3@0<<=K5 A@54AB20, :>B>@K5 >15A?5G820NB 2>7<>6=>ABL ?5@540G8 A>>1I5=89 8 ?@8 MB>< A>>B25BAB2CNB 2A5< B@51>20=8O< AB0=40@B0 MPI: ?@>3@0<<=K5 A@54AB20 4>;6=K 1KBL >@30=87>20=K 2 2845 181;8>B5: ?@>3@0<<=KE <>4C;59 (181;8>B5:8 MPI), 4>;6=K 1KBL 4>ABC?=K 4;O =081>;55 H8@>:> 8A?>;L7C5<KE 0;3>@8B<8G5A:8E O7K:>2 C 8 Fortran. r BY@T^  X  _  M  K2545=85&   >AB>8=AB20 MPI MPI ?>72>;O5B ACI5AB25==> A=878BL >AB@>BC ?@>1;5<K ?5@5=>A8<>AB8 ?0@0;;5;L=KE ?@>3@0<< <564C @07=K<8 :><?LNB5@=K<8 A8AB5<0<8. MPI A>459AB2C5B ?>2KH5=8N MDD5:B82=>AB8 ?0@0;;5;L=KE 2KG8A;5=89 - ?@0:B8G5A:8 4;O :064>3> B8?0 2KG8A;8B5;L=KE A8AB5< ACI5AB2CNB @50;870F88 181;8>B5: MPI. MPI C<5=LH05B A;>6=>ABL @07@01>B:8 ?0@0;;5;L=KE ?@>3@0<<: 1>;LH0O G0ABL >A=>2=KE >?5@0F89 ?5@540G8 40==KE ?@54CA<0B@8205BAO AB0=40@B>< MPI, 8<55BAO 1>;LH>5 :>;8G5AB2> 181;8>B5: ?0@0;;5;L=KE <5B>4>2, A>740==KE A 8A?>;L7>20=85< MPI. ZSZZB @c@?@W@ @*@  {    X ]2545=85  AB>@8O @07@01>B:8 MPI 1992 3. 0G0;> @01>B =04 AB0=40@B>< 181;8>B5:8 ?5@540G8 A>>1I5=89 (Oak Ridge National Laboratory, Rice University). >O1@L 1992 3. 1JO2;5=85 @01>G53> 20@80=B0 AB0=40@B0 MPI 1. >O1@L 1993 3. 1AC645=85 AB0=40@B0 =0 :>=D5@5=F88 Supercomputing'93. 5 <0O 1994 3. :>=G0B5;L=K9 20@80=B AB0=40@B0 MPI 1.0. 12 N=O 1995 3. >20O 25@A8O AB0=40@B0 - MPI 1.1. 18 N;O 1997 3. ?C1;8:>20= AB0=40@B MPI-2: Extensions to the Message-Passing Interface. b n  + `  9   +  $  H `X  =.  + LHMPI: >A=>2=K5 ?>=OB8O 8 >?@545;5=8O& %%>=OB85 ?0@0;;5;L=>9 ?@>3@0<<K >4 ?0@0;;5;L=>9 ?@>3@0<<>9 2 @0<:0E MPI ?>=8<05BAO <=>65AB2> >4=>2@5<5==> 2K?>;=O5<KE ?@>F5AA>2: @>F5AAK <>3CB 2K?>;=OBLAO =0 @07=KE ?@>F5AA>@0E; 2<5AB5 A MB8<, =0 >4=>< ?@>F5AA>@5 <>3CB @0A?>;030BLAO =5A:>;L:> ?@>F5AA>2, 064K9 ?@>F5AA ?0@0;;5;L=>9 ?@>3@0<<K ?>@>6405BAO =0 >A=>25 :>?88 >4=>3> 8 B>3> 65 ?@>3@0<<=>3> :>40 (<>45;L SPMP). AE>4=K9 ?@>3@0<<=K9 :>4 @07@010BK205BAO =0 0;3>@8B<8G5A:8E O7K:0E C 8;8 Fortran A 8A?>;L7>20=85< 181;8>B5:8 MPI. >;8G5AB2> ?@>F5AA>2 8 G8A;> 8A?>;L7C5<KE ?@>F5AA>@>2 >?@545;O5BAO 2 <><5=B 70?CA:0 ?0@0;;5;L=>9 ?@>3@0<<K A@54AB20<8 A@54K 8A?>;=5=8O MPI ?@>3@0<<. A5 ?@>F5AAK ?@>3@0<<K ?>A;54>20B5;L=> ?5@5=C<5@>20=K. ><5@ ?@>F5AA0 8<5=C5BAO @0=3>< ?@>F5AA0.  ZcZZiZBBB<B BB WBB B  %  m G    m^HMPI: >A=>2=K5 ?>=OB8O 8 >?@545;5=8O& %%x >A=>2C MPI ?>;>65=K G5BK@5 >A=>2=K5 :>=F5?F88: "8? >?5@0F88 ?5@540G8 A>>1I5=8O "8? 40==KE, ?5@5AK;05<KE 2 A>>1I5=88 >=OB85 :><<C=8:0B>@0 (3@C??K ?@>F5AA>2) >=OB85 28@BC0;L=>9 B>?>;>388R1  q1\   MHMPI: >A=>2=K5 ?>=OB8O 8 >?@545;5=8O& %%V?5@0F88 ?5@540G8 40==KE A=>2C MPI A>AB02;ONB >?5@0F88 ?5@540G8 A>>1I5=89. !@548 ?@54CA<>B@5==KE 2 A>AB025 MPI DC=:F89 @07;8G0NBAO: ?0@=K5 (point-to-point) >?5@0F88 <564C 42C<O ?@>F5AA0<8, :>;;5:B82=K5 (collective) :><<C=8:0F8>==K5 459AB28O 4;O >4=>2@5<5==>3> 2708<>459AB28O =5A:>;L:8E ?@>F5AA>2. z mBmB1 U   I    1  UNHMPI: >A=>2=K5 ?>=OB8O 8 >?@545;5=8O& %%>=OB85 :><<C=8:0B>@>2& ><<C=8:0B>@ 2 MPI - A?5F80;L=> A>740205<K9 A;C651=K9 >1J5:B, >1J548=ONI89 2 A2>5< A>AB025 3@C??C ?@>F5AA>2 8 @O4 4>?>;=8B5;L=KE ?0@0<5B@>2 (:>=B5:AB): ?0@=K5 >?5@0F88 ?5@540G8 40==KE 2K?>;=ONBAO 4;O ?@>F5AA>2, ?@8=04;560I8E >4=><C 8 B><C 65 :><<C=8:0B>@C, >;;5:B82=K5 >?5@0F88 ?@8<5=ONBAO >4=>2@5<5==> 4;O 2A5E ?@>F5AA>2 :><<C=8:0B>@0. #:070=85 8A?>;L7C5<>3> :><<C=8:0B>@0 O2;O5BAO >1O70B5;L=K< 4;O >?5@0F89 ?5@540G8 40==KE 2 MPI.  `B @@ @@^@ 0'  OHMPI: >A=>2=K5 ?>=OB8O 8 >?@545;5=8O& %%t>=OB85 :><<C=8:0B>@>2  E>45 2KG8A;5=89 <>3CB A>74020BLAO =>2K5 8 C40;OBLAO ACI5AB2CNI85 :><<C=8:0B>@K. 48= 8 B>B 65 ?@>F5AA <>65B ?@8=04;560BL @07=K< :><<C=8:0B>@0<. A5 8<5NI85AO 2 ?0@0;;5;L=>9 ?@>3@0<<5 ?@>F5AAK 2E>4OB 2 A>AB02 A>740205<>3> ?> C<>;G0=8N :><<C=8:0B>@0 A 845=B8D8:0B>@>< MPI_COMM_WORLD. @8 =5>1E>48<>AB8 ?5@540G8 40==KE <564C ?@>F5AA0<8 87 @07=KE 3@C?? =5>1E>48<> A>74020BL 3;>10;L=K9 :><<C=8:0B>@ (intercommunicator). ^  PB@@@ Z%   s PHMPI: >A=>2=K5 ?>=OB8O 8 >?@545;5=8O& %%d"8?K 40==KE @8 2K?>;=5=88 >?5@0F89 ?5@540G8 A>>1I5=89 4;O C:070=8O ?5@540205<KE 8;8 ?>;CG05<KE 40==KE 2 DC=:F8OE MPI =5>1E>48<> C:07K20BL B8? ?5@5AK;05<KE 40==KE. MPI A>45@68B 1>;LH>9 =01>@ 107>2KE B8?>2 40==KE, 2> <=>3>< A>2?040NI8E A B8?0<8 40==KE 2 0;3>@8B<8G5A:8E O7K:0E C 8 Fortran.  MPI 8<5NBAO 2>7<>6=>AB8 4;O A>740=8O =>2KE ?@>872>4=KE B8?>2 40==KE 4;O 1>;55 B>G=>3> 8 :@0B:>3> >?8A0=8O A>45@68<>3> ?5@5AK;05<KE A>>1I5=89.\   B@@|@@K@ QFMPI: >A=>2=K5 ?>=OB8O 8 >?@545;5=8O$$8@BC0;L=K5 B>?>;>388 >38G5A:0O B>?>;>38O ;8=89 A2O78 <564C ?@>F5AA0<8 8<55B AB@C:BC@C ?>;=>3> 3@0D0 (=57028A8<> >B =0;8G8O @50;L=KE D878G5A:8E :0=0;>2 A2O78 <564C ?@>F5AA>@0<8).  MPI 8<55BAO 2>7<>6=>ABL ?@54AB02;5=8O <=>65AB20 ?@>F5AA>2 2 2845 @5H5B:8 ?@>872>;L=>9 @07<5@=>AB8 @8 MB><, 3@0=8G=K5 ?@>F5AAK @5H5B>: <>3CB 1KBL >1JO2;5=K A>A54=8<8 8, B5< A0<K<, =0 >A=>25 @5H5B>: <>3CB 1KBL >?@545;5=K AB@C:BC@K B8?0 B>@.  MPI 8<5NBAO A@54AB20 8 4;O D>@<8@>20=8O ;>38G5A:8E (28@BC0;L=KE) B>?>;>389 ;N1>3> B@51C5<>3> B8?0. n B@D@@@@h@ 0  `R2545=85 2 @07@01>B:C ?0@0;;5;L=KE ?@>3@0<< A 8A?>;L7>20=85< MPI& BBA=>2K MPI& =8F80;870F8O 8 7025@H5=85 MPI ?@>3@0<< 5@2>9 2K7K205<>9 DC=:F859 MPI 4>;6=0 1KBL DC=:F8O: (A;C68B 4;O 8=8F80;870F88 A@54K 2K?>;=5=8O MPI ?@>3@0<<K; ?0@0<5B@0<8 DC=:F88 O2;ONBAO :>;8G5AB2> 0@3C<5=B>2 2 :><0=4=>9 AB@>:5 8 B5:AB A0<>9 :><0=4=>9 AB@>:8.) >A;54=59 2K7K205<>9 DC=:F859 MPI >1O70B5;L=> 4>;6=0 O2;OBLAO DC=:F8O:  )6G B'@*  *   * q  &S2545=85 2 @07@01>B:C ?0@0;;5;L=KE ?@>3@0<< A 8A?>;L7>20=85< MPI& BB,A=>2K MPI& =8F80;870F8O 8 7025@H5=85 MPI ?@>3@0<< AB@C:BC@0 ?0@0;;5;L=>9 ?@>3@0<<K, @07@01>B0==0O A 8A?>;L7>20=85< MPI, 4>;6=0 8<5BL A;54CNI89 284:P  )b B'@b D * A T2545=85 2 @07@01>B:C ?0@0;;5;L=KE ?@>3@0<< A 8A?>;L7>20=85< MPI& BBA=>2K MPI& ?@545;5=85 :>;8G5AB20 8 @0=30 ?@>F5AA>2& ?@545;5=85 :>;8G5AB20 ?@>F5AA>2 2 2K?>;=O5<>9 ?0@0;;5;L=>9 ?@>3@0<<5 >ACI5AB2;O5BAO ?@8 ?><>I8 DC=:F88: ;O >?@545;5=8O @0=30 ?@>F5AA0 8A?>;L7C5BAO DC=:F8O:   * B*B J (  U2545=85 2 @07@01>B:C ?0@0;;5;L=KE ?@>3@0<< A 8A?>;L7>20=85< MPI& BB"A=>2K MPI& ?@545;5=85 :>;8G5AB20 8 @0=30 ?@>F5AA>2& 0: ?@028;>, 2K7>2 DC=:F89 MPI_Comm_size 8 MPI_Comm_rank 2K?>;=O5BAO A@07C ?>A;5 MPI_Init:   *\ B*@    G         V2545=85 2 @07@01>B:C ?0@0;;5;L=KE ?@>3@0<< A 8A?>;L7>20=85< MPI& BBA=>2K MPI& ?@545;5=85 :>;8G5AB20 8 @0=30 ?@>F5AA>2& ><<C=8:0B>@ MPI_COMM_WORLD A>7405BAO ?> C<>;G0=8N 8 ?@54AB02;O5B 2A5 ?@>F5AAK 2K?>;=O5<>9 ?0@0;;5;L=>9 ?@>3@0<<K; 0=3, ?>;CG05<K9 ?@8 ?><>I8 DC=:F88 MPI_Comm_rank, O2;O5BAO @0=3>< ?@>F5AA0, 2K?>;=82H53> 2K7>2 MB>9 DC=:F88, 8, B5< A0<K<, ?5@5<5==0O ProcRank 1C45B ?@8=8<0BL @07;8G=K5 7=0G5=8O 2 @07=KE ?@>F5AA0E.  *: B*B | V 7  9   |   V  7W2545=85 2 @07@01>B:C ?0@0;;5;L=KE ?@>3@0<< A 8A?>;L7>20=85< MPI& BBA=>2K MPI& 5@540G0 A>>1I5=89& ;O ?5@540G8 A>>1I5=8O ?@>F5AA->B?@028B5;L 4>;65= 2K?>;=8BL DC=:F8N:Z  E B@.  [X2545=85 2 @07@01>B:C ?0@0;;5;L=KE ?@>3@0<< A 8A?>;L7>20=85< MPI& BB>A=>2K MPI& 5@540G0 A>>1I5=89& 2   BB  Y2545=85 2 @07@01>B:C ?0@0;;5;L=KE ?@>3@0<< A 8A?>;L7>20=85< MPI& BBA=>2K MPI& 5@540G0 A>>1I5=89 B?@02;O5<>5 A>>1I5=85 >?@545;O5BAO G5@57 C:070=85 1;>:0 ?0<OB8 (1CD5@0), 2 :>B>@>< MB> A>>1I5=85 @0A?>;0305BAO. A?>;L7C5<0O 4;O C:070=8O 1CD5@0 B@8040 (buf, count, type) 2E>48B 2 A>AB02 ?0@0<5B@>2 ?@0:B8G5A:8 2A5E DC=:F89 ?5@540G8 40==KE, @>F5AAK, <564C :>B>@K<8 2K?>;=O5BAO ?5@540G0 40==KE, >1O70B5;L=> 4>;6=K ?@8=04;560BL :><<C=8:0B>@C, C:07K205<><C 2 DC=:F88 MPI_Send, 0@0<5B@ tag 8A?>;L7C5BAO B>;L:> ?@8 =5>1E>48<>AB8 @07;8G5=8O ?5@540205<KE A>>1I5=89, 2 ?@>B82=>< A;CG05 2 :0G5AB25 7=0G5=8O ?0@0<5B@0 <>65B 1KBL 8A?>;L7>20=> ?@>872>;L=>5 F5;>5 G8A;>.  0 BBAS           Z2545=85 2 @07@01>B:C ?0@0;;5;L=KE ?@>3@0<< A 8A?>;L7>20=85< MPI& BBA=>2K MPI& @85< A>>1I5=89& ;O ?@85<0 A>>1I5=8O ?@>F5AA-?>;CG0B5;L 4>;65= 2K?>;=8BL DC=:F8N:\  B BB-  U[2545=85 2 @07@01>B:C ?0@0;;5;L=KE ?@>3@0<< A 8A?>;L7>20=85< MPI& BBA=>2K MPI& @85< A>>1I5=89& CD5@ ?0<OB8 4>;65= 1KBL 4>AB0B>G=K< 4;O ?@85<0 A>>1I5=8O, 0 B8? M;5<5=B>2 ?5@540205<>3> 8 ?@8=8<05<>3> A>>1I5=8O 4>;6=K A>2?040BL; ?@8 =5E20B:5 ?0<OB8 G0ABL A>>1I5=8O 1C45B ?>B5@O=0 8 2 :>45 7025@H5=8O DC=:F88 1C45B 70D8:A8@>20=0 >H81:0 ?5@5?>;=5=8O, @8 =5>1E>48<>AB8 ?@85<0 A>>1I5=8O >B ;N1>3> ?@>F5AA0->B?@028B5;O 4;O ?0@0<5B@0 source <>65B 1KBL C:070=> 7=0G5=85 MPI_ANY_SOURCE, @8 =5>1E>48<>AB8 ?@85<0 A>>1I5=8O A ;N1K< B53>< 4;O ?0@0<5B@0 tag <>65B 1KBL C:070=> 7=0G5=85 MPI_ANY_TAG,   BBLA   _    A    \2545=85 2 @07@01>B:C ?0@0;;5;L=KE ?@>3@0<< A 8A?>;L7>20=85< MPI& BBA=>2K MPI& @85< A>>1I5=89& 0@0<5B@ status ?>72>;O5B >?@545;8BL @O4 E0@0:B5@8AB8: ?@8=OB>3> A>>1I5=8O: $C=:F8O 2>72@0I05B 2 ?5@5<5==>9 count :>;8G5AB2> M;5<5=B>2 B8?0 type 2 ?@8=OB>< A>>1I5=88.   N U BB b X  b  ]2545=85 2 @07@01>B:C ?0@0;;5;L=KE ?@>3@0<< A 8A?>;L7>20=85< MPI& BBdA=>2K MPI& @85< A>>1I5=89 $C=:F8O MPI_Recv O2;O5BAO 1;>:8@CNI59 4;O ?@>F5AA0-?>;CG0B5;O, B.5. 53> 2K?>;=5=85 ?@8>AB0=02;8205BAO 4> 7025@H5=8O @01>BK DC=:F88. "0:8< >1@07><, 5A;8 ?> :0:8<-B> ?@8G8=0< >68405<>5 4;O ?@85<0 A>>1I5=85 1C45B >BACBAB2>20BL, 2K?>;=5=85 ?0@0;;5;L=>9 ?@>3@0<<K 1C45B 1;>:8@>20=>.t   BB@  2  ^ 2545=85 2 @07@01>B:C ?0@0;;5;L=KE ?@>3@0<< A 8A?>;L7>20=85< MPI& BBA=>2K MPI& 5@20O ?0@0;;5;L=0O ?@>3@0<<0 A 8A?>;L7>20=85< MPI& 064K9 ?@>F5AA >?@545;O5B A2>9 @0=3, ?>A;5 G53> 459AB28O 2 ?@>3@0<<5 @0745;ONBAO (@07=K5 ?@>F5AAK 2K?>;=ONB @07;8G=K5 459AB28O), A5 ?@>F5AAK, :@><5 ?@>F5AA0 A @0=3>< 0, ?5@540NB 7=0G5=85 A2>53> @0=30 =C;52><C ?@>F5AAC, @>F5AA A @0=3>< 0 A=0G0;0 ?5G0B05B 7=0G5=85 A2>53> @0=30, 0 40;55 ?>A;54>20B5;L=> ?@8=8<05B A>>1I5=8O A @0=30<8 ?@>F5AA>2 8 B0:65 ?5G0B05B 8E 7=0G5=8O, >7<>6=K9 20@80=B @57C;LB0B>2 ?5G0B8 ?@>F5AA0 0:H  4 B4@ (  _ 2545=85 2 @07@01>B:C ?0@0;;5;L=KE ?@>3@0<< A 8A?>;L7>20=85< MPI& BBA=>2K MPI& 5@20O ?0@0;;5;L=0O ?@>3@0<<0 A 8A?>;L7>20=85< MPI (70<5G0=8O)& >@O4>: ?@85<0 A>>1I5=89 70@0=55 =5 >?@545;5= 8 7028A8B >B CA;>289 2K?>;=5=8O ?0@0;;5;L=>9 ?@>3@0<<K (1>;55 B>3>, MB>B ?>@O4>: <>65B 87<5=OBLAO >B 70?CA:0 : 70?CA:C). A;8 MB> =5 ?@82>48B : ?>B5@5 MDD5:B82=>AB8, A;54C5B >15A?5G820BL >4=>7=0G=>ABL @0AG5B>2 8 ?@8 8A?>;L7>20=88 ?0@0;;5;L=KE 2KG8A;5=89: #:070=85 @0=30 ?@>F5AA0->B?@028B5;O @53;0<5=B8@C5B ?>@O4>: ?@85<0 A>>1I5=89.R  @/N B@@}  ` 2545=85 2 @07@01>B:C ?0@0;;5;L=KE ?@>3@0<< A 8A?>;L7>20=85< MPI& BBDA=>2K MPI& 5@20O ?0@0;;5;L=0O ?@>3@0<<0 A 8A?>;L7>20=85< MPI (70<5G0=8O)& >6=> @5:><5=4>20BL ?@8 C25;8G5=88 >1J5<0 @07@010BK205<KE ?@>3@0<< 2K=>A8BL ?@>3@0<<=K9 :>4 @07=KE ?@>F5AA>2 2 >B45;L=K5 ?@>3@0<<=K5 <>4C;8 (DC=:F88). 1I0O AE5<0 MPI ?@>3@0<<K 2 MB>< A;CG05 1C45B 8<5BL 284: R  @ B@@ 0  1a 2545=85 2 @07@01>B:C ?0@0;;5;L=KE ?@>3@0<< A 8A?>;L7>20=85< MPI& BBA=>2K MPI 5@20O ?0@0;;5;L=0O ?@>3@0<<0 A 8A?>;L7>20=85< MPI (70<5G0=8O) ;O :>=B@>;O ?@028;L=>AB8 2K?>;=5=8O 2A5 DC=:F88 MPI 2>72@0I0NB 2 :0G5AB25 A2>53> 7=0G5=8O :>4 7025@H5=8O. @8 CA?5H=>< 2K?>;=5=88 DC=:F88 2>72@0I05<K9 :>4 @025= MPI_SUCCESS. @C385 7=0G5=8O :>40 7025@H5=8O A2845B5;LAB2CNB >1 >1=0@C65=88 B5E 8;8 8=KE >H81>G=KE A8BC0F89 2 E>45 2K?>;=5=8O DC=:F89:n  ?* B?@[: | X q n  |b 2545=85 2 @07@01>B:C ?0@0;;5;L=KE ?@>3@0<< A 8A?>;L7>20=85< MPI& BB(?@545;5=85 2@5<5=8 2K?>;=5=85 MPI ?@>3@0<<K 5>1E>48<> >?@545;OBL 2@5<O 2K?>;=5=8O 2KG8A;5=89 4;O >F5=:8 4>AB8305<>3> CA:>@5=8O 70 AG5B 8A?>;L7>20=8O ?0@0;;5;87<0, >;CG5=85 2@5<5=8 B5:CI53> <><5=B0 2K?>;=5=8O ?@>3@0<<K >15A?5G8205BAO ?@8 ?><>I8 DC=:F88: ">G=>ABL 87<5@5=8O 2@5<5=8 <>65B 7028A5BL >B A@54K 2K?>;=5=8O ?0@0;;5;L=>9 ?@>3@0<<K. ;O >?@545;5=8O B5:CI53> 7=0G5=8O B>G=>AB8 <>65B 1KBL 8A?>;L7>20=0 DC=:F8O: (2@5<O 2 A5:C=40E <564C 42C<O ?>A;54>20B5;L=K<8 ?>:070B5;O<8 2@5<5=8 0??0@0B=>3> B09<5@0 8A?>;L7C5<>9 A8AB5<K)8- xp-@ d2545=85 2 @07@01>B:C ?0@0;;5;L=KE ?@>3@0<< A 8A?>;L7>20=85< MPI& BBb0G0;L=>5 7=0:><AB2> A :>;;5:B82=K<8 >?5@0F8O<8 ?5@540G8 40==KE& C45< 8A?>;L7>20BL CG51=CN 7040GC AC<<8@>20=8O M;5<5=B>2 25:B>@0 x: ;O @5H5=8O =5>1E>48<> @0745;8BL 40==K5 =0 @02=K5 1;>:8, ?5@540BL MB8 1;>:8 ?@>F5AA0<, 2K?>;=8BL 2 ?@>F5AA0E AC<<8@>20=85 ?>;CG5==KE 40==KE, A>1@0BL 7=0G5=8O 2KG8A;5==KE G0AB=KE AC<< =0 >4=>< 87 ?@>F5AA>2 8 A;>68BL 7=0G5=8O G0AB8G=KE AC<< 4;O ?>;CG5=8O >1I53> @57C;LB0B0 @5H05<>9 7040G8, ;O 1>;55 ?@>AB>3> 87;>65=8O ?@8<5@0 ?@>F5AA0< ?@>3@0<<K 1C4CB ?5@54020BLAO 25AL AC<<8@C5<K9 25:B>@, 0 =5 >B45;L=K5 1;>:8 MB>3> 25:B>@0. XA ZZA@ e2545=85 2 @07@01>B:C ?0@0;;5;L=KE ?@>3@0<< A 8A?>;L7>20=85< MPI& BB0G0;L=>5 7=0:><AB2> A :>;;5:B82=K<8 >?5@0F8O<8 ?5@540G8 40==KE& 5@540G0 40==KE >B >4=>3> ?@>F5AA0 2A5< ?@>F5AA0< ?@>3@0<<K& 5>1E>48<> ?5@540BL 7=0G5=8O 25:B>@0 x 2A5< ?@>F5AA0< ?0@0;;5;L=>9 ?@>3@0<<K, >6=> 2>A?>;L7>20BLAO @0AA<>B@5==K<8 @0=55 DC=:F8O<8 ?0@=KE >?5@0F89 ?5@540G8 40==KE: >2B>@5=85 >?5@0F89 ?5@540G8 ?@82>48B : AC<<8@>20=8N 70B@0B (;0B5=B=>AB59) =0 ?>43>B>2:C ?5@540205<KE A>>1I5=89, 0==0O >?5@0F8O <>65B 1KBL 2K?>;=5=0 70 <5=LH55 G8A;> >?5@0F89 ?5@540G8 40==KE.vA P=PP0PFA@;@%F d zf2545=85 2 @07@01>B:C ?0@0;;5;L=KE ?@>3@0<< A 8A?>;L7>20=85< MPI& BB0G0;L=>5 7=0:><AB2> A :>;;5:B82=K<8 >?5@0F8O<8 ?5@540G8 40==KE& 5@540G0 40==KE >B >4=>3> ?@>F5AA0 2A5< ?@>F5AA0< ?@>3@0<<K& (8@>:>25I0B5;L=0O @0AAK;:0 40==KE <>65B 1KBL >15A?5G5=0 ?@8 ?><>I8 DC=:F88 MPI: pA =R FA@;@5  h2545=85 2 @07@01>B:C ?0@0;;5;L=KE ?@>3@0<< A 8A?>;L7>20=85< MPI& BBh0G0;L=>5 7=0:><AB2> A :>;;5:B82=K<8 >?5@0F8O<8 ?5@540G8 40==KE& 5@540G0 40==KE >B >4=>3> ?@>F5AA0 2A5< ?@>F5AA0< ?@>3@0<<K& $C=:F8O MPI_Bcast >ACI5AB2;O5B @0AAK;:C 40==KE 87 1CD5@0 buf, A>45@60I53> count M;5<5=B>2 B8?0 type A ?@>F5AA0, 8<5NI53> =><5@ root, 2A5< ?@>F5AA0<, 2E>4OI8< 2 :><<C=8:0B>@ comm A = FA@;@ '*    '*i2545=85 2 @07@01>B:C ?0@0;;5;L=KE ?@>3@0<< A 8A?>;L7>20=85< MPI& BB0G0;L=>5 7=0:><AB2> A :>;;5:B82=K<8 >?5@0F8O<8 ?5@540G8 40==KE& 5@540G0 40==KE >B >4=>3> ?@>F5AA0 2A5< ?@>F5AA0< ?@>3@0<<K $C=:F8O MPI_Bcast >?@545;O5B :>;;5:B82=CN >?5@0F8N, 2K7>2 DC=:F88 MPI_Bcast 4>;65= 1KBL >ACI5AB2;5= 2A5<8 ?@>F5AA0<8 C:07K205<>3> :><<C=8:0B>@0, #:07K205<K9 2 DC=:F88 MPI_Bcast 1CD5@ ?0<OB8 8<55B @07;8G=>5 =07=0G5=85 2 @07=KE ?@>F5AA0E: ;O ?@>F5AA0 A @0=3>< root, A :>B>@>3> >ACI5AB2;O5BAO @0AAK;:0 40==KE, 2 MB>< 1CD5@5 4>;6=> =0E>48BLAO @0AAK;05<>5 A>>1I5=85. ;O 2A5E >AB0;L=KE ?@>F5AA>2 C:07K205<K9 1CD5@ ?@54=07=0G5= 4;O ?@85<0 ?5@540205<KE 40==KE. A < A@;@ 0 [ <   @    0   [   R j2545=85 2 @07@01>B:C ?0@0;;5;L=KE ?@>3@0<< A 8A?>;L7>20=85< MPI& BB0G0;L=>5 7=0:><AB2> A :>;;5:B82=K<8 >?5@0F8O<8 ?5@540G8 40==KE& 5@540G0 40==KE >B 2A5E ?@>F5AA>2 >4=><C ?@>F5AAC& @>F54C@0 A1>@0 8 ?>A;54CNI53> AC<<8@>20=8O 40==KE O2;O5BAO ?@8<5@>< G0AB> 2K?>;=O5<>9 :>;;5:B82=>9 >?5@0F88 ?5@540G8 40==KE >B 2A5E ?@>F5AA>2 >4=><C ?@>F5AAC, 2 :>B>@>9 =04 A>18@05<K<8 7=0G5=8O<8 >ACI5AB2;O5BAO B0 8;8 8=0O >1@01>B:0 40==KE.lA 5AB3Bd:T u k2545=85 2 @07@01>B:C ?0@0;;5;L=KE ?@>3@0<< A 8A?>;L7>20=85< MPI& BB0G0;L=>5 7=0:><AB2> A :>;;5:B82=K<8 >?5@0F8O<8 ?5@540G8 40==KE& 5@540G0 40==KE >B 2A5E ?@>F5AA>2 >4=><C ?@>F5AAC& 4A 4A@2@ t l2545=85 2 @07@01>B:C ?0@0;;5;L=KE ?@>3@0<< A 8A?>;L7>20=85< MPI& BB0G0;L=>5 7=0:><AB2> A :>;;5:B82=K<8 >?5@0F8O<8 ?5@540G8 40==KE& "8?K >?5@0F89 MPI 4;O DC=:F89 @54C:F88 40==KE& 4A 0A@.@ p _2545=85 2 @07@01>B:C ?0@0;;5;L=KE ?@>3@0<< A 8A?>;L7>20=85< MPI& BB0G0;L=>5 7=0:><AB2> A :>;;5:B82=K<8 >?5@0F8O<8 ?5@540G8 40==KE& "8?K >?5@0F89 MPI 4;O DC=:F89 @54C:F88 40==KE& MPI_MAX 8 MPI_MIN 8ICB ?>M;5<5=B=K5 <0:A8<C< 8 <8=8<C<; MPI_SUM 2KG8A;O5B ?>M;5<5=B=CN AC<<C 25:B>@>2; MPI_PROD 2KG8A;O5B ?>M;5<5=B=>5 ?@>872545=85 25:B>@>2; MPI_LAND, MPI_BAND, MPI_LOR, MPI_BOR, MPI_LXOR, MPI_BXOR - ;>38G5A:85 8 42>8G=K5 >?5@0F88 , , 8A:;NG0NI55 ; MPI_MAXLOC, MPI_MINLOC - ?>8A: 8=45:A8@>20==>3> <8=8<C<0/<0:A8<C<04AP Z/PZXPZA@/@()0<  -  o2545=85 2 @07@01>B:C ?0@0;;5;L=KE ?@>3@0<< A 8A?>;L7>20=85< MPI& BB0G0;L=>5 7=0:><AB2> A :>;;5:B82=K<8 >?5@0F8O<8 ?5@540G8 40==KE& 5@540G0 40==KE >B 2A5E ?@>F5AA>2 >4=><C ?@>F5AAC& $C=:F8O MPI_Reduce >?@545;O5B :>;;5:B82=CN >?5@0F8N 8, B5< A0<K<, 2K7>2 DC=:F88 4>;65= 1KBL 2K?>;=5= 2A5<8 ?@>F5AA0<8 C:07K205<>3> :><<C=8:0B>@0, 2A5 2K7>2K DC=:F88 4>;6=K A>45@60BL >48=0:>2K5 7=0G5=8O ?0@0<5B@>2 count, type, op, root, comm, 5@540G0 A>>1I5=89 4>;6=0 1KBL 2K?>;=5=0 2A5<8 ?@>F5AA0<8, @57C;LB0B >?5@0F88 1C45B ?>;CG5= B>;L:> ?@>F5AA>< A @0=3>< root, K?>;=5=85 >?5@0F88 @54C:F88 >ACI5AB2;O5BAO =04 >B45;L=K<8 M;5<5=B0<8 ?5@540205<KE A>>1I5=89.A 4A@2@ x` t        x `\2545=85 2 @07@01>B:C ?0@0;;5;L=KE ?@>3@0<< A 8A?>;L7>20=85< MPI& BB*0G0;L=>5 7=0:><AB2> A :>;;5:B82=K<8 >?5@0F8O<8 ?5@540G8 40==KE& 5@540G0 40==KE >B 2A5E ?@>F5AA>2 >4=><C ?@>F5AAC (?@8<5@ 4;O >?5@0F88 AC<<8@>20=8O)4A UA@T@  p2545=85 2 @07@01>B:C ?0@0;;5;L=KE ?@>3@0<< A 8A?>;L7>20=85< MPIAA0G0;L=>5 7=0:><AB2> A :>;;5:B82=K<8 >?5@0F8O<8 ?5@540G8 40==KE !8=E@>=870F8O 2KG8A;5=89 !8=E@>=870F8O ?@>F5AA>2, B.5. >4=>2@5<5==>5 4>AB865=85 ?@>F5AA0<8 B5E 8;8 8=KE B>G5: ?@>F5AA0 2KG8A;5=89, >15A?5G8205BAO ?@8 ?><>I8 DC=:F88 MPI: $C=:F8O MPI_Barrier >?@545;O5B :>;;5:B82=CN >?5@0F8N, ?@8 8A?>;L7>20=88 4>;6=0 2K7K20BLAO 2A5<8 ?@>F5AA0<8 :><<C=8:0B>@0. @>4>;65=85 2KG8A;5=89 ;N1>3> ?@>F5AA0 ?@>87>945B B>;L:> ?>A;5 2K?>;=5=8O DC=:F88 MPI_Barrier 2A5<8 ?@>F5AA0<8 :><<C=8:0B>@0.t@ @@@     x        `6@8<5@: KG8A;5=85 G8A;0 p& 6 a6@8<5@: KG8A;5=85 G8A;0 p& , b6@8<5@: KG8A;5=85 G8A;0 p& , c4@8<5@: KG8A;5=85 G8A;0 p, }$0:;NG5=85&    ?5@2>9 ?@575=B0F88 @0745;0 @0AA<>B@5=K ?>=OB8O 8 >?@545;5=8O, O2;ONI85AO >A=>2>?>;030NI8<8 4;O AB0=40@B0 MPI (?0@0;;5;L=0O ?@>3@0<<0, >?5@0F8O ?5@540G8 A>>1I5=8O, B8? 40==KE, :><<C=8:0B>@, 28@BC0;L=0O B>?>;>38O). 0=> 1KAB@>5 8 ?@>AB>5 22545=85 2 @07@01>B:C ?0@0;;5;L=KE ?@>3@0<< A 8A?>;L7>20=85< MPI. @82545= ?@8<5@ ?0@0;;5;L=>9 ?@>3@0<<K A 8A?>;L7>20=85< MPI (n /@>@Dk  ; C,>?@>AK 4;O >1AC645=8O!;>6=>ABL ?0@0;;5;L=KE ?@>3@0<<, @07@01>B0==KE A 8A?>;L7>20=85< MPI @>1;5<0 >B;04:8 ?0@0;;5;L=KE ?@>3@0<<kT@@ 'DN"5<K 7040=89 4;O A0<>AB>OB5;L=>9 @01>BK((x 07@01>B09B5 ?@>3@0<<C 4;O =0E>645=8O <8=8<0;L=>3> (<0:A8<0;L=>3>) 7=0G5=8O A@548 M;5<5=B>2 25:B>@0. 07@01>B09B5 ?@>3@0<<C 4;O 2KG8A;5=8O A:0;O@=>3> ?@>872545=8O 42CE 25:B>@>2. 07@01>B09B5 ?@>3@0<<C, 2 :>B>@>9 420 ?@>F5AA0 <=>3>:@0B=> >1<5=820NBAO A>>1I5=8O<8 4;8=>9 n 109B. K?>;=8B5 M:A?5@8<5=BK 8 >F5=8B5 7028A8<>ABL 2@5<5=8 2K?>;=5=8O >?5@0F88 40==KE >B 4;8=K A>>1I5=8O. !@02=8B5 A B5>@5B8G5A:8<8 >F5=:0<8, ?>AB@>5==K<8 ?> <>45;8 %>:=8.0BBBE !AK;:8=D>@<0F8>==K9 @5AC@A =B5@=5B A >?8A0=85< AB0=40@B0 MPI: http://www.mpiforum.org 4=0 87 =081>;55 @0A?@>AB@0=5==KE @50;870F89 MPI 181;8>B5:0 MPICH ?@54AB02;5=0 =0 http://www-unix.mcs.anl.gov/mpi/mpich 81;8>B5:0 MPICH2 A @50;870F859 AB0=40@B0 MPI-2 A>45@68BAO =0 http://www-unix.mcs.anl.gov/mpi/mpich2 CAA:>O7KG=K5 <0B5@80;K > MPI 8<5NBAO =0 A09B5 http://www.parallel.ru @w@f@ED5      .                               0:Q  0  0 /  0_uW8B5@0BC@0&   >52>48= .., >52>48= ;.. (2002). 0@0;;5;L=K5 2KG8A;5=8O.  !1.: %-5B5@1C@3. >@=552 .. (2003) 0@0;;5;L=>5 ?@>3@0<<8@>20=85 2 MPI. >A:20-652A:: =AB8BCB :><?LNB5@=KE 8AA;54>20=89,2003 5<=N38= !., !B5A8: . (2002). 0@0;;5;L=>5 ?@>3@0<<8@>20=85 4;O <=>3>?@>F5AA>@=KE 2KG8A;8B5;L=KE A8AB5<  !1.: %-5B5@1C@3. Group, W., Lusk, E., Skjellum, A. (1994). Using MPI. Portable Parallel Programming with the Message-Passing Interface.  MIT Press. Group, W., Lusk, E., Skjellum, A. (1999a). Using MPI - 2nd Edition: Portable Parallel Programming with the Message Passing Interface (Scientific and Engineering Computation). - MIT Press.PFNFFiFFxF~G  4 8 ^   e      0GT8B5@0BC@0  Group, W., Lusk, E., Thakur, R. (1999b). Using MPI-2: Advanced Features of the Message Passing Interface (Scientific and Engineering Computation). - MIT Press. Pacheco, P. (1996). Parallel Programming with MPI. - Morgan Kaufmann. Quinn, M. J. (2004). Parallel Programming in C with MPI and OpenMP.  New York, NY: McGraw-Hill. Snir, M., Otto, S., Huss-Lederman, S., Walker, D., Dongarra, J. (1996). MPI: The Complete Reference. - MIT Press, Boston, 1996.TZ>\|   E <                  0  0F& 5@35;L .., ?@>D5AA>@, 4.B.=., @C:>2>48B5;L @8H038= .., 4>F5=B, :.D.<.=. 1@>A8<>20 .., 0AA8AB5=B (@0745; 10) 01CB8= ..., 0AA8AB5=B (A8AB5<0 0@001) C@K;52 .., 0AA8AB5=B (;01>@0B>@=K5 @01>BK 4, 5) !KA>52 .., 0AA8AB5=B (@0745; 1) 5@35;L .., 0A?8@0=B (@0745; 12, ;01>@0B>@=0O @01>B0 6) 01CB8=0 .., 0A?8@0=B (@0745;K 7,8,9, ;01>@0B>@=K5 @01>BK 1, 2, 3, A8AB5<0 0@001) !5=8= .., 0A?8@0=B (@0745; 11, ;01>@0B>@=K5 @01>BK ?> Microsoft Compute Cluster) 825@:> !.. (A8AB5<0 0@001) BEJX f<    R) ~ &5;LN ?@>5:B0 O2;O5BAO A>740=85 >1@07>20B5;L=>3> :><?;5:A0 "=>3>?@>F5AA>@=K5 2KG8A;8B5;L=K5 A8AB5<K 8 ?0@0;;5;L=>5 ?@>3@0<<8@>20=85", >15A?5G820NI89 @0AA<>B@5=85 2>?@>A>2 ?0@0;;5;L=KE 2KG8A;5=89, ?@54CA<0B@8205<KE @5:><5=40F8O<8 Computing Curricula 2001 564C=0@>4=KE >@30=870F89 IEEE-CS 8 ACM. 0==K9 >1@07>20B5;L=K9 :><?;5:A <>65B 1KBL 8A?>;L7>20= 4;O >1CG5=8O =0 =0G0;L=>< MB0?5 ?>43>B>2:8 A?5F80;8AB>2 2 >1;0AB8 8=D>@<0B8:8, 2KG8A;8B5;L=>9 B5E=8:8 8 8=D>@<0F8>==KE B5E=>;>389. 1@07>20B5;L=K9 :><?;5:A 2:;NG05B CG51=K9 :C@A "2545=85 2 <5B>4K ?0@0;;5;L=>3> ?@>3@0<<8@>20=8O" 8 ;01>@0B>@=K9 ?@0:B8:C< "5B>4K 8 B5E=>;>388 @07@01>B:8 ?0@0;;5;L=KE ?@>3@0<<", GB> ?>72>;O5B >@30=8G=> A>G5B0BL DC=40<5=B0;L=>5 >1@07>20=85 2 >1;0AB8 ?@>3@0<<8@>20=8O 8 ?@0:B8G5A:>5 >1CG5=85 <5B>40< @07@01>B:8 <0AHB01=>3> ?@>3@0<<=>3> >15A?5G5=8O 4;O @5H5=8O A;>6=KE 2KG8A;8B5;L=>-B@C4>5<:8E 7040G =0 2KA>:>?@>872>48B5;L=KE 2KG8A;8B5;L=KE A8AB5<0E. @>5:B 2K?>;=O;AO 2 8653>@>4A:>< 3>AC40@AB25==>< C=825@A8B5B5 8<. .. >10G52A:>3> =0 :0D54@5 <0B5<0B8G5A:>3> >15A?5G5=8O - D0:C;LB5B0 2KG8A;8B5;L=>9 <0B5<0B8:8 8 :815@=5B8:8 (http://www.software.unn.ac.ru). K?>;=5=85 ?@>5:B0 >ACI5AB2;O;>AL ?@8 ?>445@6:5 :><?0=88 Microsoft. P """","       u  F  0Zw/    0` 33` Sf3f` 33g` f` www3PP` ZXdbmo` \ғ3y`Ӣ` 3f3ff` 3f3FKf` hk]wwwfܹ` ff>>\`Y{ff` R>&- {p_/̴>?" dd@? qPd@ d B" @ ` n?" dd@   @@``PR    @ ` ` p>>   @(    68  G2   D2545=85  \  0  8(,   1@075F B5:AB0 B>@>9 C@>25=L "@5B89 C@>25=L '5B25@BK9 C@>25=L OBK9 C@>25=L M&  0d  :   (*.>23>@>4, 2005 3.: c # c    0n  g    4A=>2K ?0@0;;5;L=KE 2KG8A;5=89: 0@0;;5;L=>5 ?@>3@0<<8@>20=85 =0 >A=>25 MPI 5@35;L ..@[ " " +" " H   0L  `   `* 87 56*c # `B   s *D iԔ"e`B   s *D iԔ"]S]B   N?D iԔ?"0?@NNN?NESSe  BA ??#" `$ H  0@޽h ? 3380___PPT10. .D>@<;5=85 ?> C<>;G0=8N  0 ,$/(  0 0 6} >   V"1@075F 703>;>2:0  0 0a     \(1@075F ?>4703>;>2:0  0 0 ^8  D*@>5:B  "# .>23>@>4, 20043.##c X 0 0Ċ ^T    *>4 :C@A0. 0720=85 <>4C;O. 0720=85 ;5:F88 20=>2 .., 5B@>2 .., 20043 PPc  0 0D ^x(  t* 87 NNc    0 00"Iy j8653>@>4A:89 3>AC40@AB25==K9 C=825@A8B5B 8<. ..>10G52A:>3> $0:C;LB5B KG8A;8B5;L=>9 <0B5<0B8:8 8 :815@=5B8:8(rXx@2<*  B   0 BA ??#" `QZ H 0 0@޽h ? 3380___PPT10.   0` 33` Sf3f` 33g` f` www3PP` ZXdbmo` \ғ3y`Ӣ` 3f3ff` 3f3FKf` hk]wwwfܹ` ff>>\`Y{ff` R>&- {p_/̴>?" dd@ |?" dd@   " @ ` n?" dd@   @@``PR    @ ` ` p>> ` h(   h 6\rU "T2* U V"1@075F 703>;>2:0 j h 0tU "M8(, U 1@075F B5:AB0 B>@>9 C@>25=L "@5B89 C@>25=L '5B25@BK9 C@>25=L OBK9 C@>25=L Mf h 0@|U "8 U <*.>23>@>4, #, 2003-05 33.X c # c # c   h 0DU "d@  U D*c  h 0U "f` U ! * 87 NN* # c  `B h s *DԔ"B h N?DԔ?"0?@NNN?NESUU`B  h s *DԔ"]S]H  0@޽h ? 33D<___PPT10..oc ,!?5F80;L=>5 >D>@<;5=85` 0 ?p(  @  0I P    X*   0     Z* d  c $ ?X  \  08  0  1@075F B5:AB0 B>@>9 C@>25=L "@5B89 C@>25=L '5B25@BK9 C@>25=L OBK9 C@>25=L M  6| _P   X*   6 _   Z* H @ 0޽h ? 3380___PPT10.  8(   $ 0Q P     >*  $ 0LQ    A @*  $ 6Q _P  A >*  $ 6\Q _  A @* H  0޽h ? 3380___PPT10.7 0  ((     6TA0"`~  A    6m0"`Q%  A (QQ33^  <v r 5@35;L .., ?@>D5AA>@, 4.B.=. 0D54@0 <0B5<0B8G5A:>3> >15A?5G5=8O -HH (UU.   A 9'H  0@޽h ? 33___PPT10i.E+D='  = @B +  0  N(  r  S 8`,    H\ w_   H  0@޽h ? 33___PPT10i.2`+D='  = @B +  0  (     H` w_      c $Lp  &xqlm  0) /  5H5=85 2A5E ?5@5G8A;5==KE 2>?@>A>2 >15A?5G8205B MPI -8=B5@D59A ?5@540G8 40==KE (message passing interface)Bl(20D0    0 \A g ??~0 g  ~  6 c "`~?F>6___PPT9 6 2KG8A;8B5;L=KE A8AB5<0E A @0A?@545;5==>9 ?0<OBLN ?@>F5AA>@K @01>B0NB =57028A8<> 4@C3 >B 4@C30. ;O >@30=870F88 ?0@0;;5;L=KE 2KG8A;5=89 =5>1E>48<> C<5BL: ,a@" ;" @ xQvwH  0@޽h ? 33___PPT10i./"ِ+D='  = @B +  0 pln(  l l H윏  w_    l  0"`8,>   H l 0@޽h ? 33___PPT10i./"ِ+D='  = @B +  0 tT(  t t H( w_   x t c $8  H t 0@޽h ? 33___PPT10i./"ِ+D='  = @B +  0 xt(  x x H\ w_    x  6"`8,   H x 0@޽h ? 33___PPT10i./"ِ+D='  = @B +  0 |T(  | | HT  w_   x | c $, 8`  H | 0@޽h ? 33___PPT10i./"ِ+D='  = @B +  0 p0 6(  0  0 H w_   x 0 c $8`I   0 6 "`9 W f 07@01>B:0 AB0=40@B0 MPI ?@>872>48BAO <564C=0@>4=K< :>=A>@F8C<>< MPI ForumlK Z B BB ( )  xQvwH 0 0@޽h ? 33___PPT10i./"ِ+D='  = @B +  0 T(    H( w_   x  c $\)8`Y  H  0@޽h ? 33___PPT10i./"ِ+D='  = @B +  0 4 n(  4  4 H8 w_    4 c $Ј8`Y  &`89:H 4 0@޽h ? 33___PPT10i./"ِ+D='  = @B +  0 T(    HP w_   x  c $8Y  H  0@޽h ? 33___PPT10i./"ِ+D='  = @B +  0 T(    H w_   x  c $"8`,  H  0@޽h ? 33___PPT10i./"ِ+D='  = @B +  0 T(    Hx w_   x  c $y8`,  H  0@޽h ? 33___PPT10i./"ِ+D='  = @B +  0 T(    HD w_   x  c $8`,  H  0@޽h ? 33___PPT10i./"ِ+D='  = @B +  0 T(    H, w_   x  c $48`,  H  0@޽h ? 33___PPT10i./"ِ+D='  = @B +$  0 ;3 (    Hp w_   x  c $48`,  O  0l<"`}w )int MPI_Init ( int *agrc, char ***argv ) 2* 2b          0D"`V 'P  int MPI_Finalize (void) 2 2  <   H  0@޽h ? 33___PPT10i./"ِ+D='  = @B +  0 0(    HP w_   x  c $8,  <  0/"`vp #include "mpi.h" int main ( int argc, char *argv[] ) { <?@>3@0<<=K9 :>4 157 8A?>;L7>20=8O MPI DC=:F89> MPI_Init ( &agrc, &argv ); <?@>3@0<<=K9 :>4 A 8A?>;L7>20=85< MPI DC=:F89 > MPI_Finalize(); <?@>3@0<<=K9 :>4 157 8A?>;L7>20=8O MPI DC=:F89 > return 0; }d RI E.         #      *    )   H  0@޽h ? 33___PPT10i./"ِ+D='  = @B +q  0 @(    HD w_     c $,8,  "  (O  0;A"`  /int MPI_Comm_size ( MPI_Comm comm, int *size ) ,0 2 b         O  0tI"`   /int MPI_Comm_rank ( MPI_Comm comm, int *rank ) ,0 2 b         H  0@޽h ? 33___PPT10i./"ِ+D='  = @B +  0 PB(    H w_     c $d8,  "  (  0|"`[ b#include "mpi.h" int main ( int argc, char *argv[] ) { int ProcNum, ProcRank; <?@>3@0<<=K9 :>4 157 8A?>;L7>20=8O MPI DC=:F89> MPI_Init ( &agrc, &argv ); MPI_Comm_size ( MPI_COMM_WORLD, &ProcNum); MPI_Comm_rank ( MPI_COMM_WORLD, &ProcRank); <?@>3@0<<=K9 :>4 A 8A?>;L7>20=85< MPI DC=:F89 > MPI_Finalize(); <?@>3@0<<=K9 :>4 157 8A?>;L7>20=8O MPI DC=:F89 > return 0; }k   U E           '                  "    )   H  0@޽h ? 33___PPT10i./"ِ+D='  = @B +  0 `j(    H w_     c $$68,  "  (H  0@޽h ? 33___PPT10i./"ِ+D='  = @B +   0 p<(    H w_     c $#8,  "  (  0hS"`[ \(int MPI_Send(void *buf, int count, MPI_Datatype type, int dest, int tag, MPI_Comm comm), 345 - buf  04@5A 1CD5@0 ?0<OB8, 2 :>B>@>< @0A?>;030NBAO 40==K5 >B?@02;O5<>3> A>>1I5=8O, - count  :>;8G5AB2> M;5<5=B>2 40==KE 2 A>>1I5=88, - type - B8? M;5<5=B>2 40==KE ?5@5AK;05<>3> A>>1I5=8O, - dest - @0=3 ?@>F5AA0, :>B>@><C >B?@02;O5BAO A>>1I5=85, - tag - 7=0G5=85-B53, 8A?>;L7C5<>5 4;O 845=B8D8:0F88 A>>1I5=89, - comm - :><<C=8:0B>@, 2 @0<:0E :>B>@>3> 2K?>;=O5BAO ?5@540G0 40==KE.Xb068MMb                      a 0 6 8 M MH  0@޽h ? 33___PPT10i./"ِ+D='  = @B +6  0 6645(    H w_     c $4=   "  (2 j Y   #"J>j Y  = <?E Y z0___PPT10:___PPT9 unsigned short<(" dcb   @` < <ܤ?j E  z0___PPT10:___PPT9 MPI_UNSIGNED_SHORT <(" dcb   @` ; <? YE z0___PPT10:___PPT9  unsigned long<(" d cb   @` : <h?j E z0___PPT10:___PPT9 MPI_UNSIGNED_LONG <(" dcb   @` 9 <ܱ? Y z0___PPT10:___PPT9  unsigned int< (" d cb   @` 8 <0?j  z0___PPT10:___PPT9  MPI_UNSIGNED <(" d cb   @` 7 <@?? Y z0___PPT10:___PPT9  unsigned char<(" d cb   @` 6 <??j  z0___PPT10:___PPT9 MPI_UNSIGNED_CHAR <(" dcb   @` 5 <?6 Y z0___PPT10:___PPT9 short<(" dcb   @` 4 <?j 6  z0___PPT10:___PPT9  MPI_SHORT < (" d cb   @` 3 <?N Y6  V    @` 2 <?j N 6 z0___PPT10:___PPT9  MPI_PACKED < (" d cb   @` 1 <?YN z0___PPT10:___PPT9  long double< (" d cb   @` 0 <?j N z0___PPT10:___PPT9 MPI_LONG_DOUBLE <(" dcb   @` / <$?Yz0___PPT10:___PPT9 Long<(" dcb   @` . <?j z0___PPT10:___PPT9  MPI_LONG < (" d cb   @` - <d?Yz0___PPT10:___PPT9 Int<(" dcb  O @` , <?j z0___PPT10:___PPT9 MPI_INT < (" dcb   @` + <??Yz0___PPT10:___PPT9 Float<(" dcb   @` * <X?j ?z0___PPT10:___PPT9  MPI_FLOAT < (" d cb   @` ) <?{Y?z0___PPT10:___PPT9 Double<(" dcb   @` ( <T?j {?z0___PPT10:___PPT9  MPI_DOUBLE < (" d cb   @` ' <P?Y{z0___PPT10:___PPT9  signed char< (" d cb   @` & <4?j {z0___PPT10:___PPT9  MPI_CHAR < (" d cb   @` % <|?Y V    @` $ <$?j z0___PPT10:___PPT9  MPI_BYTE < (" d cb  O @` # <(?Yz0___PPT10:___PPT9  C Datatype< (" d cb&    @` " <<?j z0___PPT10:___PPT9  MPI_Datatype <(" d cb    @``B > 01 ?j Y`B ? 01 ?j Y `B @ 01 ?j j `B A 01 ?YY `B D 01 ?j Y`B F 01 ? ZB J s * ?j YZB Q s * ?j {Y{ZB X s * ?j ?Y?ZB _ s * ?j YZB f s * ?j YZB m s * ?j YZB t s * ?j N YN ZB { s * ?j 6 Y6 ZB  s * ?j Y ZB  s * ?j Y ZB  s * ?j Y ZB  s * ?j E E `B  01 ?E YE ,  0F   j07>2K5 B8?K 40==KE MPI 4;O 0;3>@8B<8G5A:>3> O7K:0 C "6 qP63 H  0@޽h ? 33___PPT10i./"ِ+D=' = @B +  0 j(    H5 w_     c $8,  "  (H  0@޽h ? 33___PPT10i./"ِ+D=' = @B +   0 f(    H# w_     c $\w8,  "  (  0P"`(D~ Pint MPI_Recv(void *buf, int count, MPI_Datatype type, int source,int tag, MPI_Comm comm, MPI_Status *status), 345 - buf, count, type  1CD5@ ?0<OB8 4;O ?@85<0 A>>1I5=8O - source - @0=3 ?@>F5AA0, >B :>B>@>3> 4>;65= 1KBL 2K?>;=5= ?@85< A>>1I5=8O, - tag - B53 A>>1I5=8O, :>B>@>5 4>;6=> 1KBL ?@8=OB> 4;O ?@>F5AA0, - comm - :><<C=8:0B>@, 2 @0<:0E :>B>@>3> 2K?>;=O5BAO ?5@540G0 40==KE, - status  C:070B5;L =0 AB@C:BC@C 40==KE A 8=D>@<0F859 > @57C;LB0B5 2K?>;=5=8O >?5@0F88 ?@85<0 40==KE.)m)UPSlz                          ) U P  Q kH  0@޽h ? 33___PPT10i./"ِ+D=' = @B +  0 j(    HX& w_     c $28,  "  (H  0@޽h ? 33___PPT10i./"ِ+D=' = @B +  0 (    Hx w_     c $^8,  "  (  0Tc"`; status.MPI_SOURCE  @0=3 ?@>F5AA0->B?@028B5;O ?@8=OB>3> A>>1I5=8O, -status.MPI_TAG - B53 ?@8=OB>3> A>>1I5=8O.$C-.-qx   3   %  0Y"`c J  AMPI_Get_count(MPI_Status *status, MPI_Datatype type, int *count )B-B<      H  0@޽h ? 33___PPT10i./"ِ+D=' = @B +  0 j(    H@ w_     c $8,  "  (H  0@޽h ? 33___PPT10i./"ِ+D=' = @B +  0 (    H  w_     c $48,  "  (  0r"` IU W Hello from process 0 Hello from process 2 Hello from process 1 Hello from process 3"X-WW H  0@޽h ? 33___PPT10i./"ِ+D=' = @B +  0 .&(    H w_     c $|8,  "  (L  0p"`   LMPI_Recv(&RecvRank, 1, MPI_INT, i, MPI_ANY_TAG, MPI_COMM_WORLD, &Status)8M-,6   H  0@޽h ? 33___PPT10i./"ِ+D=' = @B +  0 \(    H,i w_     c $H8,  "  (  0"` r  |MPI_Comm_rank(MPI_COMM_WORLD, &ProcRank); if ( ProcRank == 0 ) DoProcess0(); else if ( ProcRank == 1 ) DoProcess1(); else if ( ProcRank == 2 ) DoProcess2();             H  0@޽h ? 33___PPT10i./"ِ+D=' = @B +g  0 ~v (    HL w_     c $8,  "  (  0LTE"`.  . - MPI_ERR_BUFFER  =5?@028;L=K9 C:070B5;L =0 1CD5@, - MPI_ERR_COMM  =5?@028;L=K9 :><<C=8:0B>@, MPI_ERR_RANK  =5?@028;L=K9 @0=3 ?@>F5AA0 8 4@..`+--   &      $H  0@޽h ? 33___PPT10i./"ِ+D=' = @B +  0  0(    HE w_  E   c $pFE8, E "  (  0TE"` double MPI_Wtime(void) * >      0(E"`j Q  double MPI_Wtick(void) *  >    H  0@޽h ? 33___PPT10i./"ِ+D=' = @B +  0 @H(    H\ E w_  E   c $E8, E "  (^  6`p  c &A q ??"?" q H  0@޽h ? 33___PPT10i./"ِ+D=' = @B +  0 PM(    HXE w_  E   c $E8, E "  (^  6`u  0$ܟ"`9  qMPI_Comm_size(MPI_COMM_WORLD,&ProcNum); for (i=1; iB?@02;O5<K< A>>1I5=85< (4;O ?@>F5AA0 A @0=3>< 0), 8 4;O ?@85<0 A>>1I5=89 4;O 2A5E >AB0;L=KE ?@>F5AA>2, - root - @0=3 ?@>F5AA0, 2K?>;=ONI53> @0AAK;:C 40==KE, - comm - :><<C=8:0B>@, 2 @0<:0E :>B>@>3> 2K?>;=O5BAO ?5@540G0 40==KE.lv H2I   2IH  0@޽h ? 33___PPT10i./"ِ+D=' = @B +  0 p(    H)E w_  E   c $*E8, E "  (^  6`^  6[`[j  S A s ??"?S Q} s H  0@޽h ? 33___PPT10i./"ِ+D=' = @B +  0 6(    H  w_     c $8,   "  (^  6`^  6[`[H  0@޽h ? 33___PPT10i./"ِ+D=' = @B +  0  (  j  S A  ??"?~6    H w_     c $aE<8v  *O7h^  6`^  6[`[^   6`j  S A  ??"?    H  0@޽h ? 33___PPT10i./"ِ+D=' = @B +   0   (    H(M w_     c $KE8,  "  (^  6`^  6[`[r  0"`,  :int MPI_Reduce(void *sendbuf, void *recvbuf,int count, MPI_Datatype type, MPI_Op op,int root,MPI_Comm comm), 345 - sendbuf - 1CD5@ ?0<OB8 A >B?@02;O5<K< A>>1I5=85<, - recvbuf  1CD5@ ?0<OB8 4;O @57C;LB8@CNI53> A>>1I5=8O (B>;L:> 4;O ?@>F5AA0 A @0=3>< root), - count - :>;8G5AB2> M;5<5=B>2 2 A>>1I5=8OE, - type  B8? M;5<5=B>2 A>>1I5=89, - op - >?5@0F8O, :>B>@0O 4>;6=0 1KBL 2K?>;=5=0 =04 40==K<8, - root - @0=3 ?@>F5AA0, =0 :>B>@>< 4>;65= 1KBL ?>;CG5= @57C;LB0B, - comm - :><<C=8:0B>@, 2 @0<:0E :>B>@>3> 2K?>;=O5BAO >?5@0F8O.A A(AA#A@AAA@A@A@A @A @AAAA@A@A@A@A @A@A@A@A@A@ AAA @A @A@A @AAA@A @A @AAA@A@A@A@A @A@A@AAA@A@A@A@A@A@A@A @AAA @A@A@A@A @A@A                      ,  K  *   ?A<H  0@޽h ? 33___PPT10i./"ِ+D=' = @B +F7  0 ]6U625(    HE w_  E   c $ .E8" E "  (^  6`^  6[`[3 P(  #"F: P(  : <?t|(z0___PPT10:___PPT9 \?@545;5=85 <8=8<0;L=KE 7=0G5=89 8 8E 8=45:A>26/ " d.c b  @` 9 B`?|t(z0___PPT10:___PPT9  MPI_MINLOC8 (" d c b    @` 8 <(?t |z0___PPT10:___PPT9 ^?@545;5=85 <0:A8<0;L=KE 7=0G5=89 8 8E 8=45:A>260 " d/c b  @` 7 B? t|z0___PPT10:___PPT9  MPI_MAXLOC8 (" d c b    @` 6 <p?t$  z0___PPT10:___PPT9 K?>;=5=85 18B>2>9 >?5@0F88 8A:;NG0NI53> "" =04 7=0G5=8O<8 A>>1I5=896H " dGc b  @` 5 B?$ t z0___PPT10:___PPT9 MPI_BXOR8 (" dc b    @` 4 <]?tx $ z0___PPT10:___PPT9 K?>;=5=85 ;>38G5A:>9 >?5@0F88 8A:;NG0NI53> "" =04 7=0G5=8O<8 A>>1I5=896K " dJc b  @` 3 BT[?x t$ z0___PPT10:___PPT9 MPI_LXOR8 (" dc b    @` 2 <m?t x z0___PPT10:___PPT9 tK?>;=5=85 18B>2>9 >?5@0F88 "" =04 7=0G5=8O<8 A>>1I5=896; " d:c b  @` 1 B8? tx z0___PPT10:___PPT9 MPI_BOR8(" dc b    @` 0 < o?t  z0___PPT10:___PPT9 zK?>;=5=85 ;>38G5A:>9 >?5@0F88 "" =04 7=0G5=8O<8 A>>1I5=896> " d=c b  @` / B,? t z0___PPT10:___PPT9 MPI_LOR8(" dc b    @` . < ?tt  z0___PPT10:___PPT9 pK?>;=5=85 18B>2>9 >?5@0F88 "" =04 7=0G5=8O<8 A>>1I5=8969 " d8c b  @` - B;?t t z0___PPT10:___PPT9 MPI_BAND8 (" dc b    @` , <l?t t z0___PPT10:___PPT9 vK?>;=5=85 ;>38G5A:>9 >?5@0F88 "" =04 7=0G5=8O<8 A>>1I5=896< " d;c b O @` + B872545=8O 7=0G5=896" " d!c b  @` ) Bl? t z0___PPT10:___PPT9  MPI_PROD 8 (" d c b    @` ( <?tp z0___PPT10:___PPT9 4?@545;5=85 AC<<K 7=0G5=896 " dc b  @` ' Bm?pt z0___PPT10:___PPT9 MPI_SUM 8 (" dc b    @` & <?tpz0___PPT10:___PPT9 B?@545;5=85 <8=8<0;L=>3> 7=0G5=8O6" " d!c b  @` % B?tpz0___PPT10:___PPT9 MPI_MIN 8 (" dc b    @` $ <X?tz0___PPT10:___PPT9 D?@545;5=85 <0:A8<0;L=>3> 7=0G5=8O6# " d"c b  @` # B?tz0___PPT10:___PPT9 MPI_MAX 8 (" dc b   O @`z " <M?tPz0___PPT10:___PPT9 |?8A0=85: (" dc b  @` ! <H|?Ptz0___PPT10:___PPT9 ?5@0F8O : (" d c b   @``B ; 01 ?PP`B < 01 ?((`B = 01 ?P(`B > 01 ?P(`B A 01 ?`B C 01 ?tPt(ZB G s * ?ZB N s * ?ppZB U s * ?  ZB \ s * ?  ZB c s * ?t t ZB j s * ?  ZB q s * ?  ZB x s * ?x x ZB  s * ?$ $ ZB  s * ?  ZB  s * ?|t|`B  01 ?t||H  0@޽h ? 33___PPT10i./"ِ+D=' = @B +  0 48 ^(  8  8 H w_    8  6D"`8   *,^ 8 6`^ 8 6[`[H 8 0@޽h ? 33___PPT10i./"ِ+D=' = @B +  0 6(    H< w_     c $8,  "  (^  6`^  6[`[H  0@޽h ? 33___PPT10i./"ِ+D=' = @B +  0 `, .(  ,  , HX w_    ,  6L"`8  "  (^ , 6`^ , 6[`[^ , 6 ` j ,  S A  ??"?~  H , 0@޽h ? 33___PPT10i./"ِ+D=' = @B +U  0 ld(    H w_     c $t8,  "  (^  6`$  00b"`   int MPI_Barrier(MPI_Comm comm); *! H     H  0@޽h ? 33___PPT10i./"ِ+D=' = @B +   0 8 0 <  (  < ~ < s *4   R < s *aE "aR < s *aE "aR < s * #R < s *aE "aR < s * |#R < s *U\UR  < s *U\UR  < s *U\UR  < s *U\UR  < s *U\UR  < s *U\UR < s *U\UR < s *rR < s *rR < s *rR < s *oR < s *Bh < 0as t=0G5=85 G8A;0 p <>65B 1KBL ?>;CG5=> ?@8 ?><>I8 8=B53@0;06;q+( *  B < 0Ljx  x;O G8A;5==>3> 8=B53@8@>20=8O ?@8<5=8< <5B>4 ?@O<>C3>;L=8:>2 = qf32=<  ^ < 6`j <  S A  ??"?@   ~ <  BA  ??6 3   H < 0@޽h ? fDW&cC3y___PPT10Y+D=' = @B +;   0 b Z @  (  @ R @ s *aE "aR @ s *aE "aR @ s * #R @ s *aE "aR @ s * |#R @ s *U\UR  @ s *U\UR  @ s *U\UR  @ s *U\UR  @ s *U\UR  @ s *U\UR @ s *U\UR @ s *rR @ s *rR @ s *rR @ s *oR @ s *B @ 0خM4  0A?@545;8< 2KG8A;5=8O <564C p ?@>F5AA>@0<8 (F8:;8G5A:0O AE5<0) >;CG05<K5 =0 >B45;L=KE ?@>F5AA>@0E G0AB=K5 AC<<K 4>;6=K 1KBL ?@>AC<<8@>20=K:qo( m   @ H 4   ~ @  BA  ??24o   ` @ s *"`3S ` @ s *"` 36  @ nA,"5<=K9 4803>=0;L=K9 1"@ 3  @ 0i  R- @>F5AA>@ 0 - @>F5AA>@ 1 - @>F5AA>@ 2*0Z2*) H @ 0@޽h ? fDW&cC3y___PPT10Y+D=' = @B +  0  D (  D  D 0E"`u lL#include "mpi.h" #include <math.h> double f(double a) { return (4.0 / (1.0 + a*a)); } int main(int argc, char *argv) { int ProcRank, ProcNum, done = 0, n = 0, i; double PI25DT = 3.141592653589793238462643; double mypi, pi, h, sum, x, t1, t2; MPI_Init(&argc,&argv); MPI_Comm_size(MPI_COMM_WORLD,&ProcNum); MPI_Comm_rank(MPI_COMM_WORLD,&ProcRank); while (!done ) { // >A=>2=>9 F8:; 2KG8A;5=89 if ( ProcRank == 0) { printf("Enter the number of intervals: "); scanf("%d",&n); t1 = MPI_Wtime(); } % "!  V/ ,4d         -            -      %  &                    R D s *aE "aR D s *aE "aR D s * #R D s *aE "aR D s * |#R D s *U\UR  D s *U\UR  D s *U\UR  D s *U\UR  D s *U\UR  D s *U\UR D s *U\UR D s *rR D s *rR D s *rR D s *oR D s *B D HȖ 4   H D 0@޽h ? fDW&cC3y___PPT10Y+D=' = @B +  0 H h(  H R H s *aE "aR H s *aE "aR H s * #R H s *aE "aR H s * |#R H s *U\UR  H s *U\UR  H s *U\UR  H s *U\UR  H s *U\UR  H s *U\UR H s *U\UR H s *rR H s *rR H s *rR H s *oR H s *B H HD 4    H 0y"` $ MPI_Bcast(&n, 1, MPI_INT, 0, MPI_COMM_WORLD); if (n > 0) { // 2KG8A;5=85 ;>:0;L=KE AC<< h = 1.0 / (double) n; sum = 0.0; for (i = ProcRank + 1; i <= n; i += ProcNum) { x = h * ((double)i 0.5); sum += f(x); } mypi = h * sum; // A;>65=85 ;>:0;L=KE AC<< (@54C:F8O) MPI_Reduce(&mypi,&pi,1,MPI_DOUBLE,MPI_SUM,0,MPI_COMM_WORLD); if ( ProcRank == 0 ) { // 2K2>4 @57C;LB0B>2 t2 = MPI_Wtime(); printf("pi is approximately %.16f, Error is %.16f\n",pi, fabs(pi PI25DT)); printf("wall clock time = %f\n",t2-t1); } } else done = 1; } MPI_Finalize(); } Z   5                       " =               !                H H 0@޽h ? fDW&cC3y___PPT10Y+D=' = @B +  0 <l(  < < H| w    < <g 8(,  H < 0@޽h ? 33___PPT10i.ٮ +D=' = @B +  0 @ d(    S $U8(, U "P@08@  H  _   H  0@޽h ? 33___PPT10i.3 >7+D=' = @B +  0 P d(    S U8, U "P@08@  H  _   H  0@޽h ? 33___PPT10i.3p+D=' = @B +  0 ` N(  r  S U8(, U   HU _  U H  0@޽h ? 33___PPT10i.4`K+D=' = @B +  0  T(   x  c $U8(, U   HU _  U H  0@޽h ? 33___PPT10i.4`K+D=' = @B +  0 plT(  lx l c $0U8(, U  l H"U _  U H l 0@޽h ? 33___PPT10i.4`K+D=' = @B +A  0 XPT (  8 x <3U "` d&2B>@A:89 :>;;5:B82"P T Z "`b A H 8 0@޽h ? 33___PPT10i.a+D=' = @B +  0 >(   8 Z?U "`Tb U ` 8 C 8A ms_masthead_ltrw 8 <,8 "` P ?@>5:B5" P H  0@޽h ? 33___PPT10i.a+D=' = @B + 0 &(  ^  S  X     S   0   " H  0޽h ? 3380___PPT10.P2Ebnx @\u.g`"$iTI4$D DF `;6;4<_.^塚yR&S'WeqDC1#K3H7}k3s@lgΜ{^ģψ9Esi 1?䀔2 yY5+D*X_ƿbQO 11sO@uzS:]inч~ͬ/|k<6~S3UD;%5Q(u[ h zB~Znx|<$zAӄҧkKC_:zo>j\@Z0 !nB[+XfAm 2KLB#g".G?{9 ?qO ߆I v;D nd?B"">ȟE F#!P|?ASd 򗑿ϐ\\5.h #בw D.B.FKBOȻKD~ad$Gȏ!TڐG~y7)={F/v d@އ_+g }NVRRӇPBG:7^1$@%vwW!wd""!#-!@;ف ;_ B{CMȇ 7mdr3-A~<"" "rߑCvc?B15S?C9/_DDB%A~ 7/#@A~$ȯ!)7BE~42^^dYd?;#_@.r%Wҥp{FGǐǑ''ddj X; k⻉o//w؋܎3?LC">p$S)Rii'{OHWtXdM*ڊs [رIo,aK\q n(B(JW/+ANu.<_#9z8KQep!t*]O }T$+L@ yHÀTStVlS{#k$TgT,J˜BtE|-[[yTʒ[ Od$] jTOKP7@-ȫ1F]JԂ Z} h5+_ CzWjR߰zTgSbni+NaT &_h][ :CJZZ.\e0SK(dݲݹ:R Ƽqx[ wE2A``i )Qꍐ8nNpq>e׹s EX=ɞwtaO}+.խDonұ)j|0e\ךRV] k:U_3HPxcQn_HYBUk߿J!mGD.qh;}lX"|l>/-{QŢjT2Z>.R]by? jAUfӧH6شL*03Yj ʐ (Щka%J;Lw -.f^(w=ȡp X)[>/]''UVzO $5T 2`4[Ozq;)I=d\Vd @p& 6BMjVzEN@'Э!A+W-meG\Ba}`:VDU& cבU߷ڢo[5;}W-Ia$BWqXVдQF:+;9[^m.wLî$WTU]+lv=R){u<rXB.+X9Kj˂S{یÊh+V)OiS'_B EAv=Gm 67ƽ(a 7p+KPzY|cj2Wp(-%LAj2μy!K2[V"˖[`|S$QgB$񌒟'*m \P)UB-ǣu} ONEJih1^ Jr?8WOQ5 .veEd/к"|—Vf5ª`Iu;8,f`acw@hQEmI[#'}1T""HLm ,=YU`@a6P| _A2,s$%ځ7]B*u1.ɆZ(!nry[+V^LW¶s+#յgYt- RLu,*ދ \PLk_SrxTn joٟ"_bw߷l+ZR%{߿9oA=y)!+uеLB2? =p,Ft@Jh#z*3[f]kV: .Xľ*5S/ފ\v"+L b&PߥeČN ͩ[G֩zkQsa wX.R<6 =݌CO"~BwLy/cw,)L1?0*S=A+LA]rd~vňjSK)Z峢Q_HO:}trl e- Xi*j~-VӒ?Z9815[J ,eyĞ:S"Kςʒ@z 6\-&-d#9hjg?^3g9X-24%D*`'-솊Z!aY0v^.BIGg`\ӖAԄKS >nFSl4{&uM׸sWO'41ŵ(> OqK@Sxj9oYTOLcq+; 38B |߾6%+-[kU H0xB +1BNKgdnwJ+*_BjU? 8@t˫swZјz'$(!{^ԵPnZTN/BTTwن]Ft홵Gltnp "' Q=Q:=Znr!Kx.J'XqHqhQQA:2@V|pXj ҀթY%.(F 1v?j-C۰àSP gbذXhF{t $llGֲ8=t2&m;_hjglH,S^\^0B_<"*E<''>*v'y4*sڧS KpR'UhÂBPNq5DuF/(ȽǝO(LRhe5 z:}4osH4,\Wrb&1EQq#Kp}${Xq5[o߫1 0*{N=φD Y 6'k>Ζt=ɎrID"b9ֹADRp8]ZCg.,EMwKR >h5[HOXЋL y"k b0/=ږSX5JIKUWl϶΍uZ.4:Vpv}/=JŸ1;Q˗j2?oc8-l8 L<jExsbxnw?Lp~e/:#"B)LBxW>R-ڪ2}1;;QbG4ȊaQ_Ȋ1P$ѹg _d@jЅmmevep=H䈩[t*P!2Zčgs K򙃙IyuE9&]8Xai-'bb1 b[40Gj*JTI1Nݻ.R𙚨V^ STR4t(ZpZULQ RM4QĂΨEQWhhќz70骠b9Kv0SAmUq[%V~ӣI)W*-=ۭ%ы%ÍJ`z~2EAVڳEd#*g2 {:7ҠrX6TUh+лUؕΙP+mm1+q#+p}ךp%CF6BI6'K=xnƑQ̪h6@H\)1}45ITuzF'tKh;} )W_L&%f+6m+b!/1'~!j8h)?YmD0h$uG>]K'hZw-%)u "V0VwH6;vLVOhMg\P(^W9sĂǖc/1E,W=E( 7& 'uHx)Q ̠M4'T E/&!yT0%1&Gϖ#5qTo!{{h@WalE[kE^('+.,NId3;Q#.pE7-1B"/XDK U*y!^k2cu 2@C8bPȓ0$ X%Drshh"B%*-?9+vUd)AJjX{裰Y;^hY5?',"6 `"- Ϲ%V+E]S5E!#>y"dK[qm$"kcafV|]X};c؆ѴHG5xNfWALܪG#U0UXX<bZ@$sm ŘEsFDh&d40Z`Cܪ$)ygptR^lJ]!%&h&^47`)/n0%i)yrKc9 NJhK(!UMf xյ\jASDph9\3x>7'][xR`Tb%WQQP#$o(xhxd8Q?gÓ'"+xװ~WRwr[6ˆV/QEi>*!«mY7p h^ \W5*'fS.)Ee_E莈xU9UE- 40< "//كQ]^ͬ#8,W+^-0pػ43uqpqs1\A"AOI«3@E6͋8#Dӯ"2ѐ0.KfBa]Iz`?xE"^Ad ݧOٛi먃U^)8hOc[B\my:/6 Tr:1̧֛3ta!jJQ]mSm/aXrGz4$U]I{*|^pJlx+욆]LϒĽ&1ϸWf'b/M~\tj;&OgҢX :C&Ix5W#M +)⟲qK:_sͥ$f7Wp[zJQT?])Ix5wO䘄Iſ 'W2)xE=8GKII«ՙWsuq`:DPZ*1JohwU'WljVˎWq/ZtCUt2'WsYʹRxk*vFǫ`Hr ԏᅈ WDW<_1N) K*6X-.7(^i[0^遚mxUe2;VRx5``VˈWT~.F+}~]^ęmx}*\=^nDjoԵDvnw.#^'5#x _7^Wtw0^IY[_R؉_%)\z'Qv'qӢJ{ ;W-֍WW H 6t.P0^B/hn(z*5=P,q̛qK~ %&3C{^J ?KӖa/}-6#SevxSI=舐;Ó0'" 6>Q+d.{Hb(EqR? |HžX%=G|.↊huVT*LVZ 6`ԤĞ/KI:^XJ+i(Ⱦ#9%9LmlD%O8SiRjf l29@RIOtDS4j*yRZjI17&%DƞQÃսJE3[Eب5TLOXjp7Ya,~ykMwB;w)(-hYs xIWwl"϶zvꓤZXsC+:֒정$飐 τ/ATZ1| VgR][BL)ZIO֪N Ӹ/N}kL OqbrSPGnq?q*A|~*L4́,]gIM&#I<=V\IDSt~nX^wLILf( Dy'I pMg"nG!( ]*R49~+Q~ZFo*x qL|yc䤭8"tCeZwݽǺ _yGbBi3yJ% rr: 9y Z C f[oE~/GzB o#w?A(!o@},?@Ǒ?|'7"!r6&ۑs@.仑?GRXHm*є"B>rRqÿ}޿񳟯xme{7;n}[7ݽqc{7ܝsԦ <eO6ܕsm(G?OsY};9O~;g>sǝwqݷM+n/i=#t[)O؎;ʹZI:O=voxOmO?X}~O?r={?}wUss?}={ww~Osۺ z?dAAdI>Qݰ|}~_cb'dX |yZw̩ΡYw:I~JIIIIIIIIIIIIIIYQ"fBe奟~Fi4җyQv댟M5_ӑ+K y7]/6Zz1ʹa>G?CK3wE?x3\?) v~^߸kC;橬Pf=!UzQZK(F 7sj!OC? ~r ղGOhߙ .u?䇕ѧv?Szʟ~nmt{w[˞zpoY)s7OiS+O{YǺo| {U9|Rۜ?㏢hj[9ߊTg/(#>vA w׏,n"ߊknAWފ(߂|3YGEEB>%WhhQ筠Uߏָqvv_B~h~Ohmh/#o_C;vuC2_گ_nC=0J੐n\)ۈҲA.p %d'P/>DFK} gDd.?>[~9W> j߆6^CxRGToE\9ڼ pyϡ].ދ(ڿO>zfA>?3_ŹϢGUw%lO/84ʺ 'podN\w'} }}>eٿǟAkÿ,B|z`7=珠f7̮ſtηF"J@>/3}6KfXcʴ;|U}˜Y6ki&K/?i>/6ݕyE\0^f7~$k,BU'a'bg:~*۲OcfLB|1`S[8f"R-TƘqeRgOtZ$ 1c]`IvKEln2.Ϝ?0^1N Cfn |EqfMȓy,L'kp4)ZQC5:]~]!EѤяEM|v)Bѓ⟍^-+e[{ROӏo -)(\8%5e a9#ͯ7<˞.)F>+8#*Mo_{;l8-Fp;XSƴ|ρT]~%}b, RLia} 2r (TuǭR!ʷ)j죫pCѷPq1|Jt.FS mk0rnD}A2M 4OǢI#fj&} D9\$8K_6rtҨjkh6U=L;&q! qnb.%wb1FC^ E}Qxa0̌"9; b1b°G2ƉiOwMDc%C&/ 7F4fx27Ļ9>3N!~4~.N6@; yb)?|fbAQ…fP흨MupUPc4g&FQ9Մ>0\$=PT,LBខ1OT( z~ρFbO`h}\ϴ3:*Ę-E9}y(?;/]XJ̫( &]+bt|K;g4*'9@i阦IZ>ihsBYS6}0KA }|&Sc8V0uf ]ӡA uW 4n C=08,Ys]bm3ona("al [t"g$M |~V1UP'ugpbB0NXO g8B K21gX*au Kx$hOгt:w B5ZZh8a Sibi" Uw3EdP+Da q3`GF}b939KoB dWIeu1 *iRfB BwpsCtSG F .,s*4 iXY%nvMk" jH;ekfM0kAܞTQrgnǣyPN_meY'Wij><&4"rNrqS }8E+/yeQ5Sh 1D? ݖAϰ$zZfR.1R' ?17`Mc΢qBXXai@q}#HR,n~ n9m&\B#9{,1w 4*U;$T>#aEP6nl#YS) #J T$A2*Jv0=MsՔSt4Ʌ տ YA 9E{GΚ~!Ly9ctw22Ղ_X kd6l}w&ѱbih=!5jy112Anec@Ք^5HZ4IV۳lv!E9-S fFWpcblShjwX0ь)3 ޮaE 4MYt(mj$:;s "YD@A IC20!/eE6Z곳3MԸU5;G#EMi4e@5- lemBMgzԽ~xVSPWʧfj÷ /Qp4Z5Vœ]KsGe$FMH4eNTyQA!N3nf}P7S?MMe"i\SjŖ1FCWyy@27 R^0@q 1p7Y>PR&C :ppWs\ g-J (xW}U꘷y].rKK?VAخHCxc&鬏ϺzyEX.>AMeZnz]&&4!7f~чc; Od1Ci6qCФT724V{YYFUGPk)9C%ix^AZ:k-K XIUc!ًj|e)sL]ykhju k9q8 @//+qa,ӠyZv64ŇW;'YҁHu[0l|EyRlX6%r|Ce%kWJ~^4SwJ/iu4?gii/m|ֵOӂ|͐r۴^lEݽ(5r5%jE;Ӥ$1c1A uܯS@g3Kɓ4Vg$kuRBE~|+vx%NPBh5_)>!-_f yͼ5_~F߯/Y/)1~딿@eG_ȟɴ~ dֺ&IJA"P0uRw~$(;pc,k?m2DT͒uargF]՞)倚 YsW:;MU5~ql䰚,d4Ew]M\- *gי^UltPM X9OS1G\hSʁ6hcrZPƳηi(6lSL6J\`v9OQ ~sM0T >rLK(⦼z y0J(ąM9;wIoj{8ƕ oLBoi88#|OCp\ υұE!8&e{9h(OS^0nj00biHojO: GT Nzi[8ǁjX9ǟcgNű8vbs0NްY4`̃[k<%YfsV^Ćek`FJ6[y.LyqrW9:#;=n.[Z;!;s=/0Xjpdi2%8PGP*UNcUs\@mWPػXV°̃VJ*}8p!sLRj13,oݺk(r(u XGڥdkYy-2#k+!*{ uckRiRu1j~)jf#5aq=e6xra\08ϛ aWlagj^AQ<; zD;Twe:ǝ7Wۻ[U }~u«؅cL0>iהLe 8<[`lRM!o܂t m[TtE !Ê[K0(+eV:ovtLGUS4A)uvNW٧anog6A +c < ""o:11M=CI#&1KLnG/:uN:$.O֕9<se$v̅¹5oK1) ]]78Ik}<&cWM8׀G)g`Q0Vq_\ٞe.iyROc ξ@T70ݰS3'+`4=7K k(=/Lbo cjZT2Nzhd#$LHc!)gn5M?qA>`lv*f.3d-5+љV!vQƋv* J8ǟnDV\pO^I9y]$@q8vʺu2Dމ)r58BIt|96 15&.cPy/Sr! .Y#k+E'AR<6ҏpN*<%0SP(̤mM#3ܤee&9r/7& "n,4zTeT5q0c4~7IIJBt0$F4xYy7K<1)B&m$6H$'p:#Pbnj%Bh[!uGkx'*_Ԕs.qAyOִb|9|v_(lEg{xbFQ'ʣ4] LM2SS#Cb0sRNnDSΠp;jDEPcU|uM0_`CapBUulIJ(ũB:U{UݐSc\|#X69K-XۨX 6?8rLpMY Q=UeRʫgqyT0.=lsmSЂad#U^ȫ ?50H wW0 UL;('MnEu4\+T:=&#'鿆 *A=A9:9 '?cNyxfkol{+n%&0fw T ޘUcc1`Xنi SrUCkOg#"*i4xdfh IoN4dqP8Eib\Hb+`Z Raj p$~XFᶲORD 1,gY+vz՜q4 H*w# iPDj0GZuC\&I!~05B@CMoc`h!)vey<.GJn`]ZRhӊU 8L[UW@N/ H yER>?8iel!sFpz:HGK6AC [*/l]u#4n+hb6piz83SAᚃ*& ф[ᾄY8T~YMC0:_\+B?Z9_W}a\}-vmޕQf5qVӶܭFK&ڀ4Zނ$M=fc^{ ű^nra2Ďhti%C3ɺtG d L| |YߢKNVSc^ Ӵv]A"~Чfc0o+u#]W0W{|* 5Y7Y^41mmq_ļɃ]kN; هjyp =κ%+ip9t (hۃMk:J3\f˶m[6m|ES`Q6S˴Tnr]܅ZjƐᐱ6Ɔ+T9mKl7Le-0dXa.BH#f{pc;<yo(x8|! %ܾe {,c(~,AI4ms Y Ӭ2$bzVnIM7G^CsMPX/ӻ9qOqdڀc \y==]͇g4f/Qȧ3'v{)lO8 n~qi1k6/מ>(z)LQxh;t-׳[wZ;U|;JfPAۚi*ۘbk0) Wx)6L`{S,Yz3&w|s)K4CL퀻aGO7/EQ3E'Lzx&v-[`6oCkim͇G353lwoU Nl{iߤ3F \Cy3@6? 墨Kh|sTKJ8ŕ Q9;(fcԮALR@_DBlxA&Av bq߼=yK灣GE2ԡ{0pM(=.h!C j:7{rPV4x-;+b 'vaU8LYZ-qK5~YzvS*"&23uN Љ=tLy_mv􃟫fŮx!'vLx'2//zhG Lk3$1BEbF,P&_@8'8#]G 6Di6'艫c1H_)&R6)7`٥a!MWlV!z%i8NC'FzhBqSz( LY{ajed 4#&A>CqKpmKfoV/"xeE/ɟ >pCEiw (;/dQ[F$3,"AWThO sGUvCUΑO'jOr$J}o7I06K{(J>`,4xwLs5e@DDp,(| xI#8@߉@l䏇yȝ3qH-:.IHԨ'fI -i)fycgFA.iV3Ck M<Ѿ{COcR<@80ׯ㍍HF``{f ԎJofj==g{,~=V*G΀.#uW"KK>$n,P7BBq= /;=7kNysQb#뜵cs-M!n`}\8}v= ׎v*v‘،3)RgL!A&Inw\!h9H,mWUg5QpB6l$$,;&y> q16I~V_/|) kIǵ0H'ImHcڨ'at39h{ qxs`RZ XR4,(ۈ2L|[. ,6-8g4gЌzd(;6&uO ;C 2 'xFߔ?Pİ<9JU

}x U铡&]++ 5ٵPdtKUET0nROR1gqs UrUdjF>ajD!" +U% HTu7嵶sZ{3&'H6SLr$wh=[8[DvUkIA9}HA"L$ + &ǸhQxUC2o>KV87Ʀ,4beJܩDbsrǘj:WM >t$ukjn$vRlM2ɰB=iXQP21\jj l$IjlCj+l0U!n~x3DD\Da,9n!1865R蒼Qܤ:yP9PKv.%.toJ,CƄh: i2:s :&%(p /t뮩+#3yz'#<5IH;tG7tPٖ 6uk)'ϛn/jW0-9JCyq%Xonv萆~e.iy'q!ytK IC 9a Ů Mfs=Z{mms')Y,9zȫ $ d1fĵղE z5mȽ&iIAA2@#U&3]5@qHaBpfLv{o{1^&IӒ8DlPi{S&dD]s 1I#Ѕ|h6^0}A*%VpB%4|{:k5O$+9$YصPA dL qAjY4CU$Oh0&CmnZ[pt4[5+RBoDڎR;,iD팙0Mi8}^ 1,F/9zG dXeKbtDim>qirOJBHq<(_7< iPr,V+d̤j1LĕoۭytiK&8+ Ҷ Ny!@)^m0.T>Ku WmAӷ 0b ~%0⎣8ؔ88#4kyW Uhg*)Ķ R1͠ >vBkf=S{q%GBI3 Ơv6 ͣL I8CzZCGX0ULJ+םoʎ%]fM {/cΰ*oFWheRo:O^1΃% E.J*42w1#Z{9Q[-5 g?~e_ ,̫^PX{B90 :&k;P)3 6=ntS7-L4s{ap|ګ.GڗNδZ=\1/.HUW{ʫg=C+ƹ^I뫽FK]^! -W`=LU9SA*h 5F$-]h|Z 5<@>g\aNm>. N|l" sNjk-0odk7ٝmЩ"@!bnx @\u.g`"?I4 M$cb% Ih'QQ-6㎍|-7\_.^rGBjd0q䊶L4HbH2&4Fk  0ٚ-Μ9g^k>/Os4aҐ/ B nB@tMiJ3J+o DS?υ':)QKeK47|sC?fxvmTw׼o~fOs5(KPZ'DO|x|<$:a}iKK_BZ߶ D7=W_Vvs]k# f[oE~`@!> T ⷑ?;FD] 7 >r  ȟ@ 9y9w ߉|$h|EE }ț?9AGC/#y !k[\s oG #@މ\\w! ?BGE"?LRiC~ rO"G䧐 E~?!ۑ+i4yAD 7AcA( DxŐZߕ_ߑ j#\\\7|oAv"r#Awȇ#A{o"?" .fg[w y! EnEgAW6d7!ǐcjzǑ;s_ ܉܅K_!كr7o_F>܃ IW_C~ So"܋6id2>~w!G|]>Kȗ K^xyyyy yyyy yAfA1(١+]}yҁLs1V 45+tGa-[|7-ttE]n{q'})~HnR9d*R*-md 骗ZE[pn6gUxYpjo\qXb%*e)mKa(|0HỻMAƸ%,Fz|)J/k/CM )CMҙ7/~Q1d~IwUd{0To$jvwW$QDTbm*岪[xATaZ~)`[)m"-W=˲Q)TG\?FxNԐZWdO]USj۬v}YXu?neLR,l.B-8:bcDĺ/TDIJɳ W"b44c1* 7 Fz;+Hc\eD;F34BHE4%P % U./w 5xe*ë ]V{ze$,>\_@PB Z%T{QK tzJ m![-SKaT Ad7-'/c!aE|bB\RZg^ZgѡHB mDOe&wˬk-JrOc[^NWsÂQP޸zI9cH:U/zW"r.",VSG]߆ZQ~ pTO8uL񎅇 0|P A}eR Y˩Y%ò&z En߱qҢ *>+V% !wK\E(5AP=)&F%>8r'q}I=8#^̏®zB-vj)E+p|V4* IQY|r1'hq-GGOSNNmqe+[_/*qZGK?>7'=pqZ:f+ZI|aa,ؓYgJ$~YCY[ŤVz$'ٞM-k,g`6k\HYؼPPK?D8,a&eY蟣1,k2h`i]`0' h}fDӡ_yNI~ė&6%)?} hzjO--9)zl9pxDSzGY$$vqbuꗁ ]OF%c.֓\txain@ĺ MwXPZh*]q5[hVwIm Һ&AOGmJzXB6;(*1nx d+&3y+4{uu=U\6fvF%u}}_1RBVِUz dG#\.hV],:W"(X4h[bsVKtlՅnIjmxf {zBW!TtZlFGrBð&S)iɲ #ֹ1N˅F Юo=GI7F`G7*u|4YSMfM<z Rհv 't!ǁ|@"`N XGiίl=WzEg$UDs=S^GE[Uf/fg'W}v#*SLY1lv=kRY<$:7,!] (VBã, n1}Ne"00BF\Pl}QArI>s033(GQ٤KK ,5@,^AT2fO _V|ݲё悳Ò<bCME *I:Ʃ{ׅP >SʋWYaVCrqYCK5^?\A&X(> my"\OfRf=]TlV2>gơx*!j9cˡOTwz400EJEú"ܢgu׾$zu${bcqBi,Z"#TO1U=J{(lDEL&yY^wOG&\zѢm9=x%.rsZRD0?uXF|B!`|dg/Pr8R13jYmf+@tx#%5bu4&QN脮}ɓ^Mqg|/!j$W,`q}sbE,%ƃ0#DM;#X:͓h͓ȧk}AMKn{2EcA\ F׊NIfgn5It m \r*gXr%9Ȑї$>ζ/%Q!u8 a%$$J$r&3.!jYc-"0cb~v/ *LMh  qۼv%Ӆ) crf'v?j9CUt.hF%F\(z)aJ%/68DkMf A`B\hX y|$+x^^n pWDHqD%q#bNJ,:WI k}33k :WDpAL<[9jk Q!da$'ODlx)yT5NW2:Bt!܃x,j˵@og 0&^WT؉L*I[hD GW YL dahḦ́fF l[9%4 ._ʂߋ _b42Dst֤ċ0EvM$:-9%OnItu,:'؉P Cs)32%D3Jތz]JJ'!p¥iA!(ͅUym7nJղ$WP%QLh EsǭDJZ0Ac)] ҋW-V«h) $HҁZѬ6=R!?ϜѳD.kWIī=EC];ǜk_T-(bѼM<ǚkZGk TJQ W<*]#xj-% l'j}'lxDd_~%5֯JNnˆWe7 ‡#"^%d<^Cx5M4f.V"-٫W PEČbJ%%L1j25{ܔ|RȔT%9='ADEU4{0 u%jū{q@q^Bf{F81.V.Ws.ƕ+WD:I}:#Ix7u&HY=ڦyghUD&=1X"IL(>I'HXP1X){S=mu+g]i,wKhҙ#OGzJ^Q'ztƒ7,DM 8j p #l5y`B1PD Q+);{/9^O Nmy6| ]ӰYdB`p1=l]ŸӯB>.9^-~ڄ ѡYZ6Y'`$ jqa%\S6} TV }$JnKW =J'Yk3% 0)xWJ&h)I3 Sx:Sj{-u:^5~q\-1 pzdW.&-^QJi2z{!k9ͱXɏCZfWgiCPL'\ź*ϺF1k45tF(xu#伉zūtGOytGqEv}c+Sa[\*.^E ^-Jh{cpi*jEd:+W~_#7n,y_ZXK%1^j81j*%\דnhVjQ4Vbm|RŎxW8qU0C;1a*^b*UK7F)Wa)>^U\Z^}+!m +=P  17Uf'J _WzjJ%u߈xݯ +8 OVYKˍW퍺Hߎve+&S+.+)k K6X* ;"8WUKo$W?nZ4^iOa'J pR< z~oX_ )Jp0mτUB%'@p-C7^%gH(mS"ȉ7*_=WjGA-}x^oZObDNK^Y5Z<^E)n,g'9,Pj RzӁWz!氨SN_hBb|㕊L^)VdłJ A2.^i`Ohxx5sXy?%+FONQ4TCB!KWMZ*AVB"xT4cЩj2#b`KWXW_5ҋl&-0>*ܕU)KW;.3^fp!}Y_y U1D3ף[D[< Vrj.X+T ]pU/(`gf;8{yn jˉW wNB-.K.fjH[Nw_TAc_BKWJ.^ᲗֽsiioЃWp!f__T4R1_`1ߥ«_6w%/PF.hZ z*?F-fPntht9G+eVǚEX+yδK d̀a)їStR:k<ڍ?-)xqxh3HH,+ %^+IzB ;C"d) 7vBE;G> Р&3ݬluJ]LS/TS 4W6bR"^F9@L]iVfϿ%*qf,3z"Ǻa~e~#zK腧Ձ'-ESo\Eb%y3FGW<ö*{voXn=w<2c_Se۾Q߰=>>Kw?Tv{ŃOc-{jφ=.Kg'>WpLm_vlݰwmpwNnݷS6<ԃOw?epW=ȧJ? ķfݻn?G3w}wߎ+n>Xq{?M0O9~vqWΝwк L*y'>|Ã~zn{J~{{nܞ;oܻs+3}m' "SOL' kOJ+0>iݽw' 10T9B]94+P;O)")")")")")")")")")")")")")")"+Jd݌Wso(Q27=Jn3}i[k:rr=!了kݦXB^/6_w<~yghw3.tn>s'EKymcG<>j5'ĽJ/jYkyڈfΗ?DOC? ~r ղGOhߙ .u?䇕ѧv?Szʟ~nmt{w[˞zpoY)s,.^.3Wxt2?Ov<0g)h٬3>uևp_Yޯ_}h釵ӳ.~uS=l9xZ~|/]ʞ}M=ݏ~*q/ZB?{~kOSpGC;{CA睿 ]l{9 34YߨoWW^ T2AlVEG 8Wlq!\DAC~+ &S2dIo"qz 7iwr-ot*o7NqwsߝwW;n`o=)1TL9Z:Ðο3>kXZOg/k߃׆~~u5D^[o/78߂|3gu}Z.Oă)E1_ψ/p^b3}A| qV% 1WpeiCS[~Zpν8c"߇sxڌw§@6%g#~_|l} g>)mGQ  ٭oEK3GmaC;栄[{o5 ߌ+oUoAw,j#菏U"OFq+VPۂ~*Gk܏V{f;Zc;/pO!Jv^k b6ؗ;:Zy!RpW/YNk忎y?ETu7ʿ mDi٠z8ڄ@c(CO"g>3w]2-| 휍+oCZzAm<#*VԢ u.B m^8܀>ߍϠ5ݏ_wx!~>y=hYGPYf_:]g[#]^% z%_1eZla*zS@a̬M\εXN44MaPʼ".Q}??5!~n*Si i13??m'1Qd~&! >ۈx0 )-B3NK*cL8f2~)3m :~-_~ۘq.$"g6K|gN!ey7B"EǸh3яWIo5i8a!|GE.ߐhR|Ϣ &qb>_;ޔoIOF/2ҭm)M猧i .2^WEeO ~D#~o~&󷌯~6G#y,O)c]@*.[?IWRdς[>1f)ZĴѰхZ|9|}yQQmO])|DÐ _{WU[v(<(5~:ot |!A듗?⼺rI^'Ih__P[a* "M>ZMJM 1&ר)ǡ^͢eTF1D"mZE `hҖq447 :4h;ȐONp܍8N5wEb0ՇnF ƅ̞7br?ӁW 4=Yaal !7fOB~( Nߢ _+T P|^d2Fk2 '@ O88BL*Դ!p҂qOնDLsHw@М _%mvp} rdt2 FM-RfK qW6,A وa(1$X F}A֮l` kH|[4Ib{_|QZfآbF}s#!Usj?98C/#s'|%hTQE愦EqqÍ>q%:Ʃpk6ݵo  ~7" w&}cѤ35CNhF.C\HsU ҥ/L qBiq9:iT554CԈ_&TQ\a S1IƻKHρXxH_/݄tKL>(l`<0 B|xfFyߜ}1aX# Ĵ'[; ݏ¦HIt#331KX֠(RSC BL3(NT:R8G䈪K( Y3sXĨbqNjBdo.gLO( i*EyT~&pv'Z*RE`L=?I#1'O0Ot4>.RgZ@bL2GSSטLkiG:g:a<s~FGԟǏ.iWWD%by1Je\Xi3FPa}JМ[tL$RA|4H̹p}O)>M`>>Che1 i H釺3Ўdzp 7 W]?17A 00e-:3 t>K?*(TP381K'_e ͳLQ% T3,Ͱ:Ȉ^L{<S4'C Y:F;Aa--4}ƴ?1K4Pi ;Jʙy2j0v0D#>1p𙜥f7Ddl_2: _Ln#$*Hw [:S >'D Q&5[IfS~h(  eArLC_Cj1 &NBF2S0{fa ym#r؜f'ŔJعc!l9p+&2'笿 .sxaJ o$^^6q“ne ƕe0 i Lm> b UkT\1.JC47 W= &=uX?ʼ ?+Xqn Kk:j. pR6,^JQS:xŘB2W(Ṝ|{MF5z-M~"^DOɬ.H&G;ZFgE}QO?j;$MFmOPim&Ḡ8GZ=9fg=-C-0:47 t6qiC^hl[}GbHoTqSĥR ,`C1He ңj3KOB$\4h=#qhdW__ 6me!S nR} -I3^`(ц 4Q3IX;P8R^vΡ #zt#9TՆ4VEʬu75L]b$Xm~֝\}&`о;mAD!-^1@jMO)2ݷ?'g--uxT iѯ 6J TaERd)*}nI=b҈3| mX2fD$ U';MCph*0qR:T?vK05Phs;m4*|7 |okOaNb9J]5 nOFF^Nj(93O@Q<('v/6`@F4q}Hc}gj|YMt'r>l˼2()jdnKŠgXppR =-h3))Jf򅟘 H1g8!f,P,04TzSFMsP7H6~p͜=fêb*0 ݀"{@H7zBͬ]AB)֏T%Q iW% ;&9kj):gy@dž_,ҠOj=#gM?1sIkjUcj/52ij|M6ľ;g1 L[ אS֘l \1jJyK$GYP-$+Y6hyDŐ"`y鈜Ֆ)3+lBwP116)o4C;,hFyEo0"qB&k , 6\i9N ,v e!  2"M-ٙaj\*|ab磏莑Vxk2iW663\=\^?b<+Ʃr~B |+S35[(zRcDfi-mLɮ#q#&$2'{t }G^*}<(ݠe7>ț)O埦24 fbK!<ڼJ PӛWu/ENѸ_8ZpC,C()DDd^PI+93Db[NQ%zX ԈZ*uۼLڏK.Tx9 CrlWH1atgWM} ,uA[Ā ̲oh 7x t~@s3UC{@?kFa~EL2pLݘ4!QhpWej+ݽ,gd}FNYYw*I#Gej(Z5!|4!E25HݫT%?o;|g 4^:KKo346IڧiA>fHmZvo6^ZnϚ ߒT"iRe1ޠww:)xCI+35:)_"o>Gy~;j@'(^E/zcѐ/k3_f^yI7c?\YLUqu_2ŏ#t/dZ? q2k??eq$?\s(spOE:;|?? ׿ 15v6~*fFnM\09å& <D%s 9AԟB)UZ~^5֒& o޶ZQhpyZ(MYy5. dŅKFw* X[vھ}kRXRp(5%1 )͵Xne-cWUUW]pZW]]Ue)ھRVRcFI۸[=*δ*Z{9,,qx8,_a1y~ P jW׽ 8U Vhms8dK& *1Zа!3 1fx(df]Cq8sȹ>3>SC883єR!hzJQbٞ6g3jO Ԕr@MԬ9YAW٫Z睦*{?86rXMj2 ;j{ٮ&qpdxJr wWL*epCl6:(&Åb眧#.)@R 19r-(Y[4`b)` %.W]?9Odo9_w%tS }qSw \D%zcj¦is􍿻$W75PJ=~ʅR[I7&w!74l!8.VBIJ s)s?75qN[4S7n'#*^=4ڭ @5 1 X ;S9'o,0CWAȭ5,9+ZbCqC 2o5t #%yPҭY<_Sm;/Sb=<1(rǃLQpP.Xge& SOyYT19) '7 IVgT8Qi"cf&/0N|yʡc8^WMG!ƪ]X|Td :m6$%ST!A_c%磱o?r}Df?|utY:ϫSXjt.4ETzܣ nch%-uf_9 BŵR7 ʭ^ נҿl$LuJuEaa 8(PĐ_Њs&%tWp:kӸnTNZ7M qW (.i:"C=D^I01R~N&!06|WÍ(lvN=;1 TA*k!"hE#.Wqw,D b.7,.Y wm:m n)1.O>b Ɗp,kmTz9&f8ʊ&p,H2T]EX ճ8ZIAۣ~T! Xp\?K(VMk¼%JW7 EkR*)XqT!0v<]NRuEVJj\fQR 5NU s;-­A܅ T3,>8dشz*jPQLN< %s7L :rث;Cw]iqΩX=vhM.^ 8 F۷y"c4`ELJ5 G3 U_ggxDc<2VU 4L $U7't8P"41q$Vƀ0TbM?0@X5J8]^M PT,#p[Y'Q)Asp"fp;^ ujN۸AFId$r;C}YMv4k("U5#ǺEqk$?hr C!k䏱m;<%7IVbipC)4xi~*OYRuЭf srqc$" OKNL#cES% \-]W论sZ\S4=BЂFNp[oahˆͭp_,QYK` *@&^L [LAںZSwvUYYSQk)ܾG-MlI-;]@q!]^fG֯a.ՕG!]YpЎ寫>0.>eƶO(8d}i[V#%Um@K M-oAQT1=X\70zbG4ꡙedOrM2usAeC>@coQGҍ%B M)1_V\/JF|iZ l?S1ݕ:?Ñj۫JToNfw󚬍VW/6bA@5UuvkBC֐n≲Ӈ愽vHS?Ѡm9iVE]S 1=+y9Q&y(kZ[88 Nx mdWh%k{dcɺP1n&[w&6CJ{09_ N9`gT rwhhr hb/~Ci ҁ8SWs2.*8(^7 %gYɮW; 8WxV4yI'rp4hF㠳_B;-t <:࠳UٰAwҝ\ Va^ ø)аQYQZ%/JT8ZkK- TB^&X5 Ǫ9VHE$ut!GY9jQk|bA8j}ً樵\Zk5SwIG㨵RZਵ#uvsԚgGpZ9YQkQk:/pԚ֊_ਵ#s5&ZTQkcUQk֍fh5XǜC<5[QQk/8ѭڭf-mWQkݭG~]*\QkN%M~9vTeM[*z5cP Rׯn5V@1 ܒqܼ-?p;|Ёg$& ^;AkNgjvz.[ޞC??f?c4t#;Nȴ>oOFqPy\ ;Ť qNkzzPvgEihLhkQ..;寤04_A ֶٞ!}?vf@4Fˠp(/سA=9G%! wq&vs zD"ۈpi=y}܏fa;-07ۡMɴ#֙o㻷lb'hiCǽoR#O!9%u {PJ쨜jNmMJ j &O|)/mk!6SX U\g;8zNIroޞRṛr ĢCW=<&^\fh_fLfXfM=m|28QN\ׁ!FNPиqys8&Ii 4!? csZEq5Bʛ=9PWw a^D+̖dd;pbY&,8̥,B=xƍ~OJ HHND:J'ў~: /N;U3bW~M;C hC]}C C=h4#5I c x1FMh/{ qҏ#4UbrN1A|Lv)ZR0R0&+6+ D4!#=N!ҸbB &Ȭ=05F2hhI I|!aec6ϥ I|7+@CP2OzDFPezDsIqLc-#r`B+x'^ 9*;!TE*f'dTq9>E QA7$u^Gb!a,k9 /։/E ^ #yHvJ %32 #P' _O߻D zyxaZ ,a$ûѠ^å=%@S0No<;ong "Q"8> D 6MOΙxb$Z C@ zy${$j3S$k3̼P3#BOmٴ@!Dk h_b=֧͡1) vph׈FprLc0fc3MbgjG%35Q˞BZ{ +#g@:OB+m%%@WB7!!~h nㅗ5o(1`uZ􊱹7n0>.>;kG;p;Hlf&ΐy@ i$yLvx4$@Ѷ(8!6 j<$x?`cs}ȵ^JiрzTkx6ԇ1mTLk=8wsG h0)I,_umD&v-`jEeD3hF=~Ёg2nbn هB:'ڿܝ!XtDoʋ쇈t(LbXKĜFnE(woЋhP.VƄmZCewn:ĥr"sJ LC *7T'Txɳg*K*yL25PyEBm#q05ap"L*ՒM$: ϛ}LINZ[9-$R|&yUv ;y-WP* L> &`vpDQOcZ(!7B+{cSsCW12iԎ\yCeBo9cL5h& LM::557;)&dX4irA ,ՍuX (K`mf5Pxn$H~5i`O!Lkj56P逪j?I<G"" .wOm7Wi֚h` tIިSnR^4/ W  c+h!TܒNN='֕V,Z(àsm ո ,vJء*D'lRxDi!67Oufc-8jPK-˚)Qi"mp?FFv̋WB>/Tq߆z2,Nĥ{1R:QWIWQqѸN4{'rrY[8mY4(Fgxc{L+K2fm&ZyoʷCM|_`'@g 芞^.} ֘S*?CWɫO7y {cx.jI_ˤ0nmifgl޲f%ZqBK ajEN:_*zD8k!/n:oF-➾_?c{LK* }VvyA?PÝ@ Bx4/kZQ:kd=tU\^^gՁo\^^Tg%U.|wR_+0S*ъpߠhT#FŎ_.L>tgIK3J6iN['wa9'h2ێ浛w6TwPa"ut'z?mz\ }- ϴϘĦR2;4x?3IelV@P@AAP JS* AQT""b*zm(ŊBV,({;Ϝ3])z{d;d2ff3-m[]\#Uf:Z9*S :0d@iz_3&dzh'e7?jeE0m!2ʮ5ot&)P_U}N9bgo4mk5Ha}Ls:a:g~}{'oM-={eS0?tӏE|1̂m]CyB 9Jc\JUU@U۠T ZJoJu.ԃ(ԇA>ĠA p Ô~jmph8:@G8 :Ag(u t +1Q{/=翞nlz >ض t [BxWg5|PvKCJ뎮r#K(OeԩMN(TpҌIxܢ[7s;cZl݋ 颪=.>)_|ZOҽ8t)6UDJwe3!ڑ@gZgw~^ot~:7wܱ#2֨/2.{rĸowcLK#yI5?[?ݶs/Уf>%fv>\p%,&s^25\zVS[Wei$\mI9ޫϤJv?2hBM~R4g'œPŹcH~~uiK,ϒseؼx+{m,V'ˑ5J*/oO֥o)5X pp'ʺ83Y ;DFXm)KN*Fjuqg7}7v~e*k9qg-[*2"c;+˩U֕!o̳=2.1Z{&0KZe&̅LKawh3,セ *LVYӈC83ɘh)5I,2ڹ;s cU8Ό6FY sDFi-y &Q!98R  c0/9 PӈC83d)NDcIN@?/O™>¼z,y !tVY=C8byhG-؁ (tVYGp`G6'a¡*5qgZ-,x k%2Z:8M&* hXq"XdF)OBTyY5X-VOdZ)U8Յj*qgU,MJ!\UVqg2b"SF/A\Eɴ[)9"S൯U6xmV<Yޣ' P5 : j\=#J,o+'4 Pli 21Zgc56hpc{7 U&!ijuȵ2%QV_jZd꯵3p;@GZNNIFG1tԎ1O:u3(z7Iq+O"s Ns'}"'XN~3@w3E$]i'N6N!l9)N~wS+4;I 5"C-'A{!"sε Nsc"XN޻/89z4`HrR,?7 |4&Kڭ2 qCcQCQ QcI92 8%Q Q;DFIrRv#K}3?Eh4~$rR,¿8;Q7QCYe9)"B<S8edE,ckD\IQEL2gՉ",cVӨEi9)u#>ƙz$DA$e 9e YqJ$J\!Z?WŨJJ ?W]ZugjIjRuII P/D-?'QHhH+0$QR5B3͍I4QZ-IHZvpg(i+ϵ7 Q>(ZGg:G(,tu1(zCn^Fo%cs}II Q'@D%A0؊ZY vpgg("N;+ pg Q&Y~&n$QFPFDFY~f0L0%Q2AO h4Ԧ S,?38D a:~€hLf6K3sKHPDY~ JԮ.Bcjܒhb\-,GjagVג(Y!\C> pgV 7J3[Hn 3w wvpg(Y#C{ pgxOȊZV$F-XmjQc5Ub?.\%EU*cdrV1e$A82XHV#lS<0 \ 4_l9)?+3kGÈ{qV`{V`U8Nɳ;vx]s|.Jt]Wٌ̲ ?X1GR2wݖ]־ۥ1eדn_=^ ǼO/9xL+8Z?\)M8Bm#06Ǡo: )d0.g|:3S޺M[R%Mbl%'Ejqg36Z EF{xRUzƹL#HU?r8S٨BbQ }syF5#yVSUdc9Cb6Q#h b 83 HČ|156il8LhL3 1b 1rq0Zieh#E}3$FqH#tB1F#GqѝH7 űB/dzq8c;Kb a 2c9Db$D1ΝlBbd dNNCLq&B 1 5H RȌqlcc;Cb xa2qc9ϘHb<\1M6l.@f0 }33I\`>ƹI\d#Ef0}3H\j\>ƹˌI\fX ,Dfp%g2X>ƹ2#K+FX>ƙu$FVעqF#7X)nV#spgn5n#1rq 0$1rUa 2wq>~#q.aIX) #Vx}33%171=n2 qCc>6>!1U3sd>q K#_XѾ6v*HK؍.[1|o@b{Nd?Ugd~>ƙߌIf8CbDY)"B2!>ƙ,#H}Lr HUP*Be1T3faSdF-#5u@L=r !Fm=єDI~p0jͅfia$QB8Z?wqCSᨵX~qB;j\#)\gh: ,?Jp ~уDI~^±cOp~яDI~np"jd &Q2H8Z?wq*SR! N̙Y$J sE0%E)\\Z\aQh%sc$JƤssQ Dcy)0ՊZSY3Q!LLB%3 s[~fp js9g'Q2OZ?wE@4r,PX`%sWDY~fp-j+k,?sq=넕Uр-?Z͖͸Dm­wZ~fp/jk{,?ssD-?j k-?GQ IM5Ʀ DFhDsgZ5yK{`ek̙Tmy<]'Ngd[fnx "h~me]RwzJ=#lݑ~)E4\ϗ1<}t3`\gdTntNW+pJIZ=ND{2Y˫ڟyW'PrBqԟDqf݇ QwkX+t@.@V+ބUD9Ua]-E*+^+Pr Z{곐 ; SQF9a=ȝVa?V螌ȝIV~?VvCrݐ?ƊG#GQwHX+t[~r?Ċ)Qw@X+t^z`诎z aD=LV-  ?ېV~8ڑgq+Wǽ P߆ȿk7oR|H+t_B}r/!wE3?K9C!}G{Gn i-߆-dSweH+tE_i蟇|㦅B|g"w>Ӭ; QD9VD}r#nݳ&gQ?'>o);*G?ʊG=GPwPH+tFr#wDRW#Q\mkXq*^rRG+tCG !_갸S/}h7B俲 ){ wPwӊ({ P֊O)ԟ?G+tD}-r"wנPwPU_owB  w;sPK9$G+t>OG}qg9Z;  C,+A?xG+t>~o^?^hnG;!#mPoK9܁V6ErM?ЊFUuB:5|U+Eݥ?R\j$YDG>'ܗnO1P)t@-@5+nFo?iR>ߑ{G ֐B~ݏ+މ;PrнV]/?n.)t~rk݋S7Q`a>rb`ȝ ?S('P?>nw#CH#[~(ꍑ+@?C=J9GzrUw-?,񸁮g0NFm|uq]OWwC+rg0$;YkzZ-k?@}Fmߊb\ϋ ۈ<ۀ߀F180Aa䊑ga^߇zwcg5oA}5r7"VbZDF1\B/B}!r#.%Ÿ)?MAsSĸ\O#Q#W<+/DHQ\_qP+utFѨwFG;;qMr=0͑k1ԛqr=_ZUCU|%WF[AurBֿr"꧜,.x9}<ێOѿ/ĸ9o#y'Q*mlDsoDnlD:7qx ݇<wnVxnD*oDn%l9FrWqx.G_ܥȳ٘٨_*Ɲ㙂OA<8̏E8 sߏ}ݍ<vg{V:W"yѿblϥ蟇F]bܸly蟈yȍC(F}wZg^iȳ&>\OYWwAW{q=vȵF| D C1 b@TF+#<|q+U?gu9+пuqey3Է#}̿QH{%˓D I^A"ꯈqey֡)!a̯Eè?&ݞ~7r#VcfFv1nIg9A}9rKg 1 Q_"]噍9FB OG /Fgyơ<.7ͬ2So*fzC:|4pQ.=l%AP`֞~=TsNjS3] ~ `~qTmtQ/>- ƫM}F/#G\}UkZ?}{],Eny[y-ozU]eoU o^ w]WpCT=JqrMXIbIף}:S&?70,gsMNL:t j7˵C/3-Sb՟Ⱦܲ#Bdtd ZmH>Ge}f[Ⱦ=f~Xd"~,~̊-2 ^+M~7=s:ZalqF[2|^F65v[[{K{M]rm6DxMdtd LYLAGoeoY_- 2K29kw"5Ѷ&$9-|M$ʪк0{:Ooߠ:*Uidzv@5aͩcFjvO ciKKDEyK?h,sYO8mM*oZ3\q?A7J"#h뙏u4~ f~ohǍW(u,oDGoSQݾSO^x}b\V/?,u:> #̏}=G#Ӿ^_=#"~`ۥ7},VzTjXyG8Uޱ۔wDTGc+h FRy*zBo/*o5ۡ1 RhZ$d_;aڡw0ϬrY_w}_^;&LW4Ո UcQ^^߆O0iL8"C+.b=gݧas|̲lSzJO)=SzJO)=VѼe+_l룔_~qܥ/zQW޾ $zUp|OwOoߵ{wۿS##r~9^Q0G*y7@_>Pʶ?޶svSzJO)=SzJOtUIПؗ6wY9ޱ^X3MjHh|N7|Hk5Ha}9hq}OcSaש~>vّ }GџП}Ї?g3q]/Tg2PMys:gc:>SM[ raF1$S@AJd`8Z@Kh*lJCp8pҟ Rtt}6+tz*oAr8NsHwV^G'+J 00u,\ E0 +<ɜmѠ1;'jd)]{WoK!o?b׿yd>Bfk^~Y06xnw&^gVfxgUg;X\6}oٱ|Nȑ΢Ib =jᓧL:RMíxEc+-}g}<;6Ιɕ"@KVMKYr)F͙9C×^Fh˗^hטf/[eK =ser~2b *c5ԜYDթahޕ?cC/ޠe+/w϶U?άRYW Ī[ہ2;6>919QcM\r2ja 3c+}Dj~D=KGoݩ%2g7xzVt Y.VezR\2j|2.gU[egu1)/#u_T~V1gSzJO)=SzJO)=f KAyhep9\WXh2W)%հ;סnaܤUyw;~p7k^w\XyhmSqxu[x9x^y'^e q$kiG;{_pU̱]'0(s7NpQ;ۛ׷elѰ)G/6f5y>].YG.Jt߃󱪐i+9)=SzJO)=IyC?oyRן!F?evu+/Hj+??COѾ͗=M1آv5&͇HVOM? ? }WU=Qpe/?)X[O0˶zyf9eF҈Im=;l3Ѷꪏp_z){v}]or3Fyߜ*f ף?_vl4i{,]V4ۻ/x=WT/{Aoyu=qgT%;Y?;XyVmHUJ-=)?OxWd `1wނwl=⮯?-.<լ5j"Py^._Jٿ~O0H L"-algfHaxoI@z`UU;r8=}NPJ/ [cctxj xSSGۉ]72 &[MuUߕF5bGѸ|GFz`"_k?ǂΟFw!2xUm{$[D; K嫎'g #S9|!7PTwp[0<:_d׬Gc*}* N@' . ;'RGs J-7D7%ܼ_NQuY\~rqe/O(粹MO;1N,s*):П _00Վ M!%;Ës{>~ڕ?L>ΟA/Y˴/"ooCǗ7ƿa.gzFܥ?n[kxYXP3Mv2תisMqMuo*-Qe_βhٛ]vegѲ xˎe} .)Tν>_۴u)~q+W")rYfeWpٙ)YKr˹f4gQrE>+)2"[s /X)vMGb#}#a5锹}X%7ZU^ ߀{s*Y\ϝ#/rfx _vKyWYR+eumcVTR^5}K/j>F]W[‡ռ[~ʥǹSmoi m{;Tz.+OSs ѷ?ܗ)dU8_Q[@iJ4Oՙ~7J2v\?Pc'}8vkrTjBcT߽彯Rxju8ҭ/*{Yoƽj/v6P(3#ϧ/"1*M]4 ~h=ӯRN ed=,Ij H>mSv73SG]ٗQѺQ~Zai~yyUoVLgZx>k.}J#bL(jq?:s7}ٮҪxΚn_)lTZZLOAmUs }cx8?JuxVQkPtC;tRAFFAD jW[0+"tV Mn* |( '$.aCIJ~{νss9|xp zS@D C7YT5Ezr89^oo;%̥k旯DtSr2H:C]w;L1G?K)~_ri՛/%GzC#g[sw\zEP|\=`jCoEvbo~XnVKh(W+S${8~^T[d)E;݊YJ+֊ɃKTcN+TU4 ^cn],2Ӹys H0jMH3f*`@\|8Un2otlo-Z6dse(|R{ꬳRaI;m)<זxR[|)򉞦a="?ueeC6zL\>jN"FL٧Bu@wGہrNOsU>ĀU8?jd'޹y#֓  n0x] `UҮI&>db!  w# ]-"&*' }PW U'=3=3IVģkUwTׯ_~9?eCErAN&!ʴ;U/EaI* :"L=DD!1 @,"H@$"ɈD*" q"p 2YlU=Q qLD/"/YB@Dbm!bD 1TX<`&nz %aʒ݄,%Ӷ%~ΞRxOQkut)dI_a "ƣ0vJ4>ΝG/Zf(Dj c0Eݓ=8Z++V.lU[ϐtNFR0b $;zHZ][d^fU+UEշ~L2$L2$L2$L2.FKm[ J?e2B9@EЊ\Rq{My21᫫JVS&KRKJʕbP)SJ1:RrJL/ڵ me,UFaR RD .-3Dj@9p5pEwpRv(CI*~L|d͖KfH0O|yhՋrr ;ĥjܟ+aXYf2Y?iH86̓at6bOj1 qifi[i\44S8q^JğNZD3Md{JJ]RA$!Hn4Pm(4fJJ EҁBCCi4P:PZe(`(o(c(m(Jt6-R=Y9m!#skb<9Xx '1Ofb|'3W+)犛oY ܿ_NIÐx_0ڂFj\nRh@cp-_cyJWy&F:A]ӝ:Jßy;UpV^El71_|'눔N8 sD3IY~WB"v\x1bz}$B.4C-)X2B-v!Kd1pxvTֱp+⩤[ +A^=s'|Tװa ,odZcS5Lq}p9G,+󿱼XrXڐhL'S0y=2%SX4ta27sƵ_v -INΌ$q| a^#XR\GZ8Jg,d>scq3|칐.b~10K%2嗳%ϵ@%Գy\\~!q]s%,R˘uYu%2s`d~uZag-|< 'r].d.b~10K%2嗳%źDcϗ~npŌ EDb.Iċ^0SVYO2E`4'C-ϡy 4!T `\N Yӻҫ-nrerXWr8J]Lʺ-9b .*.#.,wnZV*.7v2Ȣhgkfl6Mo"&9oNMoRNou&7|7:} eo2 |7A|E7a>:ž骳7oF4=|c@wH݂Nºo^sUInhA΂t "|,e`AT z˂dDX;t{yN9/8E޾3MBMN_o$)M޾7M|M_&6o&.oݯo||s)M>)4Ml0obtMt ;گnOO_dhEZc  X0], ,Ղ>O J?Bz/ ;ucRIĈz{ q^{8syʶ/,)7t<; о\W}Κ0]MdgMQg^}rmu/ Q[/[XKgl˪ӗqt=@wbVN5N {|^â=Cw D=Cw*ItW-t{N=@@ Anuښ^Zǡt$;Ԧ C,X]<4iemf엵TH=؉d9l!)X4a7J4;E Uu-ƬÒ[Cgf4xJ۴cR^ǘ#°D Ø")o(BSŌRcCTKKx("WߢshH(Ɯ@veu\"O;;-Z h*te`KMr@7q1!hZkGK溏a!pgGX&lţjL1m[5OOSS̶< !Z3x]S;}%gb̭\w2 4] X&,q{kȀi1} ħ;h\o/yAO3\4ۯ-iҳ-baZia Zw'-ivт ѲJmA{b@,n]}|Z'>VC~ꅧeS @>Yp@:9c///˽z ;>OXDO/ t_=y:zk9CaDτZ#rڠD*G֞TI+} !b-ʒ*Pz:xAuo*sXA5jˑjd)4DOg2椵{E&P5)pASGR-B)p̶<ZiC 'yt}#pf%+L Ru} y{d6yjEXc8ju1>.WW)v ]b{uhA>ϖ:|F;RQ̢E >t%z=Zh4'rZ,4`ċ%de.}oǤIx- omǾ8ukX[72G+9_1ں9pb?`W#Ŗ[ss}/a5M}Zpw8Fۄ_a}zQ=۷=} wؾ}[n6pϡE|9-s=OD%8'0OAlJM۲A#zȔ',JL JI#8 Q .<@.梊22|Zu`H4vX)ݡsJ}%<8Ok ' ڄMRPo7]㈙Am0JK' jœL~c4o_i~cky z,55߻?[PPLok""V!G&_?oo9Jqۤn]_X#u@E[}w+fF$2uOEvk?}L}EK_ kKT>k,f{-}[MHWt_`_1i4R・j9mhjz^Et,iiY%n N[^ݚ9S*mfѾ!SJgڗs}HmIj]CĤzVFHy~[ FڣGtL8hgtDZ:$?55$~_n{❫دS2j7 ΄~e>D)V+Õ#J/̗/=@ /# V`bND!8^Hqr`Q~mwz3L( ~ ;K݆WD"(GT"M*låSlb&!qMLG܄XXN׈; 6V~q Z` ؐXCI54:"+p')|My2)54jZ)ʈO JO\!-G[4 5OIה2qMjYbq4c/főqYt8W 1lpKwL},"޷7/3n ㎎kɾd fHm;#$d)}b󺢎`3sb7aӦP!jXtKj&UwMFJ5Iӎ?]"~ۤ(8@\mҝoٸ0q&!z"z# rQ81Q(E!ш*".GLFLA\&_E@!n@܈GG,Vߘq}Uk a'>yr j*{Կgf MЕkW W> ;@w<뎟v8F[]q߮# {VzG*m{LLu4]8qz+4ObWLd^;I'[!T;?jkMYIOߊh/W:6\dm^3{źVl ysr "rs2={c =CG64▤Gmh>Ǟǎ94~4j-Ѷм~- FF1ך4m|V藛+>6Y^*)ͤھyiU-6$L2$L2$L2ɤSWZ~xfoqN5 tZ~n2r E/yZIH/w.Wʮ7EmmIxM}!"B) W[~ˣK7$L2$L2$L2ɤU;p0~]) εwOVrĖٳW/*eVkuY5y-T 3`jG~=Kk$!QC}Fj}R q?)ш}xA*,Ck4WH_sp;<3!}mOGζ}NNm-!hSGk֯oKH:d~p4x] |UŹsIr! !!YBYBXD@T S*ZhRk}qD sk{7;sM";f̙~.%pzEӀ֏4!6yz^bxsBo(7`1yM3 HRTYD:dY@6tr< =B@O(z>@_88  4 TÀӁ3n 1j(31xx`> :`2PLLLe1F,s,+hrPct7:wK籪߲٧UhрT:jH0Mѣ5FT,R)H@j;M?3Q5ԼfqhAjK:~FOf" 替?i\ŕ*x>h$S2Ɂ"UZք iZzP/3"F7HZ!jqc81qc8&K ag' rc18t!W rŨZh>h-H2\N*R46kY 7ƖoM&rKm9[n-Ȗ˖͖ז;̖[ej˭Vrr6v骮hel[n?[T[ [[n-;ז{-w-w-ɖؖȖ–{-Ŗl]frs\Ts"=}Y7fh {iZS7ٞ4)SӒ0Me}rZ:`{&,>m w72'L3i/bi1ӞLKصfz>ڗ[#Y}&6MTxRTY_/yW;+}U8hb}m/3Y9,F.d <xf5g@yyG5}!kZ; %鑔qHҀnf ,z@/?pY#Z98 F Df[t2BEpVqs7ǭnqN_oV} l9>y4T+hi&xh/rE 7 "EY"Kx7p-ζMrBh:EЙ4q5q3ߊILr弋Ϧ0wOfe4W\ˑf(OeciV oI8wb;MVX#>(Zc,^Ŕ"I}'i++l5kxuk-ױJ|dW1j^Z1z70MLfp[~+ۘ6 ޥ`·9O{X'Yν>ű9O3}~lyx9>ǡ^H^-Jٚ*tES1z<8fϮ lOdĜd0MթP؞tNVfkt[kmBczױb=7_!,.]CfLAd^>Lf z*pF8}YzUN9P0|^}^GtO/1ajrtט:z(]W#y c]WAcE5vsdzo`䞟$* t Uλog\w2gLbϙ7sa]kly_o1m Ry{NLY\>494ygNwW1j\Ü8[^ؾ˅`M5/PC-cqSy3L3=y9yy9>ǡyGX%p^^c^g'y_o1m^΋r _E+_$_67"mZ/2:W]cMZ6YdXTdmfQӋ!hT+ӅGoN4 %>u+#F=H:tM]auMieDSC?,ݦ G)#ɿo`<I$ "AćD)I W6eaD 1lr\V1󃭊0BH#d cɑE[^= rİ6Rr$r9eɶ8g< :õ˵LXl`Aq]>G\lz=W(= Bzs*fF7 tSE7EJzctq֍'H`&>n覻ބćqM"0ݔW,|%~q]jvlK; ؐQ/3HL;1B H%U$( 1D6$Go$Q$( 9DlA~QMICE.rd Mn""nGY!xu$kn&3nEMfXdfqMF MF iY7Ɋ6Mz2nҔG!iI;-BC6ʦOP':ӧ 5Da6D`X$HR$ A K@FZ! W7Cg%,D$QIYsU'O"}Z(O1Ô>V>^ySmQ^6=$i6igGH{Z¦+i̕4|i 00<_I[`ȕDxryDRҳVhӦF۱^ kÌz*r qAȺFNNmHr|*nK #ǧKY6Zɍ ,_Gc |@ dQ Mn4mɋ5C ՐF(Ҝ MK&}94?4tOּduKϖmJ RԭtNu[L:3{׃[fn[BUgBNJu#7Hm\n&#EFp< CFP^Jw]J+4h4Ma{-:P9QE/"G(GIa:\+?jZjSzF(aPnv+B]fS[Gh˺~CCtl~t(Avb$hb o'B7P>!wwM:)B t I~ڌoF|9OvSw]فQ4Gی؊#Q5%dcEbK9.smj'嘑!5TW)r\ 'd`4(Ҽ )NY4 ) FmCO<+8e4U:@Qc4v>ޟ-=[@rTЁBSi‹j@2\4+o9ķVfQi2{:9 y^ܞ,p>rYh̍.Yq ٫˫.˅З"SrN_ddq/,\HG~b9LJb6dR>Ho1VA~ pٞhZo6tBRgJ vuAPx~69R],0:{J,2]gxrOnHx` j>_n3σ"~c~.՚&߽D_x.iX5s[S|[#{SQƘc /כKZ:/fWK#ơ,G7kC g4+AhzO>=-o^Ѽpy;iYG7.7[y*Cc5en*r0.NqB5xMu$.M4~>& /Q2exo:^n{^q4}ba9sV}#p5ѐӤńsTv!?bp5ٞKK\,OK^8e! r>?I#}a^S+kurԡ'TbP5q)\@n'+Zl g0m2y r2oD薤 `&0-8sF`[~jZ얽2X\ \\-&&w_~wq,\v-TAu9+{1:,5QDx DR~/omߢ[6?~ =cnh[op*g k حhM<supn΍$ tE_UVy.U*J9 lvm#~[ 8}5oBF-Jq \~\DpO5G0.A /2h>U/JRm|҅+9 * 훀xm d]m÷&NM߯m!}1RJ 8ꁩt`0 xd h...~kuz`# \ lnn~^ÿC-\<jr;% ,c7OMv5c>U]4YefWpYQfRV9Xe`Eہ&.86Ѧ3\Jb~u;Ͷs rl;a}\J"%rҧogmfYQ9 ڀ?=S~ p8 ^^oVuzMѭHu\-( @@P **t`l t<0id9+ozqXKJ8d…QV:^=Ľ:uѫEe~ReRVZegYR>VXa+1|6/Z#fcpyOyU>9jkXRj5ùtוD?uWı#:}=ŕyFkXۚMf3И}qB7B7E dNvsc3~,끍MV ܗ+(:l h( s{'tku#lzU|!D)`R.)uaܠԍۀJ iSW|SqkeOC}oBoYUлmmw]q gۆ>%[)(ֳWl۫I[cn )uGӯ'/Nn^WhX o V!%sڠM{" U!GІkHGiHGi +Wj *m7=*9GGjkzm>RR~Ba=]b'yg4[ټS?3nE Җs?I޺6, * GJyVc䭛l8/}2epg.pc81qc8&_ٗ v-4orN4jBΗi}]#CN!N@; 7wqjWw]ݴ1Pֳ|$$׼4/&Ʉ(Zx}1qc81qc3yz+#TVrz"NP|M(T @x] xE>&אI a<$("* ,ᡨ@|~^D.Pp~{u7(߮=IL$UpTWթS+v=p#ES #=J)6cb D4r鈢o< eHwaf1dd)lF#gtc0 EŌFFѓQ8ыћӎ,;1Q8QĨ` fT2̸'qDF5c($fp>0F0F2F1jD o1hZF<)HH1VZMS*xK(|~ַ-m^Ϲ'kt$4 A4sIhN {Ss=BZ\tٝ(\󸉤fk-=EF; /dZ ˨FH 45$EAie{5/G+s2*gLYcc1c 2ƕ$s=D+- 72nb̸q+6;w2b c dHlUEJ:Jp^(Qz4ߔH1o^)LcCՎeT=1g픢1 GՎҳs-Hj4oJ]:0ݔʛFAS1Ry[#w#1Ry[#{43F*oTb%ЎZQ(]nJmNWr#ZR=ʗ Ax.B B\SQwx'x){?)[^TImHPШf3dDcMEc7}>ywGfe|+j5k#t?%`&x:e% 5k |%Y5i@~-:k׃o~-& ~7ߌoශ~ƅٮ)Hv@ç3YwB".ZwzhR/A2^zCˇLWMMMw&H.{!Jx*B8OO$YTj]2hr\߬/ĞJZ85gq>̟;w<ڭΡ=zg^kuC}|WtYw;=òWܝ} )ܕ]_xPzR(&oA6!=G=`?Fb(5#Zj4eHVB q(+}{Iie ~q/j>H~~?@SHoddWW {CZ l]NssQ?y|H@^y$G_~ Yk6@r-J Nxίv75ʝ1J$ZGˠ>:Sǁ;4C2|bMbS?+ȋYCHa$瀟 yC2|7GMe9Ҍ-DYV!jHր_~ ʲeFkkίoFQ[mC;~7@~/$oGYB.;PQgpDYC!yE]Q=(K AW_z{.$!EMth)R=EIЀ܋u)2.Si)R)K$YyW<<<[PrBwHJ{@'$S,5e2ek!Aܱԁ>T4tHƃO@8?|4 >LPAi?ӑ H? d&2.K&|%eIԄHX|FTo}\Ge&$g?@2J6 ֯<\sSR5賕$ͬAkZ=2"Bm=' Ft¶CgVzPZ)5\uL ɋR3 YG|=ь\?V+fG"iPqC&z-k{h."5ѷXY=V`p"d1-ܦ'Ҧ-VeӦ9BLwJVގU=v"ǫMSr]OL䝆w6ټR$Kޙ_fE<%)r,֣7A ydF̺]W-njsOY.,c/-}J& YeyAR3r!BZYZfKEF.&MMeYlRBe, 0BDrЍaY*e9,e^}ʢ`Y* eiH- RK;wmmmmج itAi >ZM6~3c=Y}r! hjjǯٖ|[[/WS3j}p:ŌH}*J`Υ0c7i{HS<^ë{WKt$h ]Hi?t<ivZfttz5]뒢{oM9L9 R ](n#GpV@8q=557o}ʪ'o1CU(ȃ5bV=b <:BS-ŏc|Ȑn&jw'u3| V ?[CY\3 |s,R TYX7i"7AwK#]|^p&i=\#kW_lE&ھO~ٟC:Qa?}`UەH4[N;l8m5PVX"j*GP/kK"S>k\?pZ?Oql4wQ|P<}_QTM:֢H=áfr=~gDc1]]ȣ+մ;<(tdjJ= *+~d>_ƞkMΒUi~uƖᑱo+Ee齴RMh<Ukеwt:uOi>FE}$?ۣ:Z?Ѣ݃ٯISR\rI/4*gP* 8ǁFs _9pf1TCd*^яǎ9C9.XĠ2 믧3̹S|#>m~ K|Z[h/Lfɬ}0"2Lܬ!f=ט\gDώyf}G׵UV+3M$N_ʏ^"9ďsRܐ$iw|b)·{T;?NJC9\0[\F^Z}/p:oq7u%BwThտ|m3s@d}OTۛi _i{moqbɒR^[~oyD?7'ɟd4t93秪711YWʡ]߶o ډxFuSrNWРMscOuQuuߣ7m)w[m}V/`oz;Vݥ%=DbTʻ?jϯрc}Kf'jj!˲));I͘|C=ϛޏ|Dj1!ReI(!ABɜE557OSk*YPBJE1 g-nh N, xy0,|Eϣ!:T'3JʩF^J6+T<oZ{L<6䑵%\r%\r%\r%:OQvT`έoe( `֒wj9WO&k ?¾3i~`Kj:uhXh~,es~)4 ñ*3"e[ /F8 mkHvj_ƶAp߆Ծ?4{U)t$o.ŧ#};yKI xVM/CA=o^4Ƃ X a&ZVj'4 6~XHbV^K#if̼z޹sۻ[i#0цVۚ͂<&ި Uk`AiKΛ@kxnX$4US氅4!4?Nҟ CXf7]1}ro'y,YwDu5oU*-iٞ+yrFY=\x\ |TŹfl6ݼ#j4b£bA8DJ  >P >X앪E>mk-Эbmmko+-꭭fٓdh$;w}3͜3s E_ր ! BR@'bv,LHyUx^]Pٶͩo [^>;*}Rtg3.4C¬}+\M|_*PB SUx6gp] 3B+yL 0~U'juA?VpصKcS~s;_='=jKzU:}fBφcE_+N0 BN?}e kA 7 rxȹ䓪sB@pBH偒u~K}كo`Fٱќ'[_ok=tS>,F yE׮_ 9žv'iJ}5躥9j]r.ݢ^^vhpՊ5UhZwiwc]#^bݚkV6WO߰/QYS3w \ 3dEuonSV\9MlٺqΙٚ0^I;w&x}tW <. +򨧎đ%OpZʕ-ҢXZi`InY 920b##lِT,UCY=@6cd GٶK@QhdrV HieB&:z-$McJDJ;![)luzGV$T;Pݶz܇NN!+w)[YZ3Ϭy&KNC9L % oH!ϱ5"KtVXRKt߲툌kK{=SkI[a=k,[Z\ʔ`[V،ck[גݷ=8`JdJop))ݷYDfcҵNSkI[0bJdJo`!Ĕ`[V EXtrƔZRVx L LeJDJ-+,B2,_Vx Jp-)}+q0%X2fPɔ`[VH3/]+TfaJp-)}+Ԉ R f7923k#OƼ0%S^/̜?xG#C(su]Q=u},o)J5dJ,ncq`cllͳ66Ɯ^ݕηgnl5{*ud[O @`뛛8xǖ\C ŝ|\W:=!?yD=ס-I>1*E? U>b@F2 W8بbTl&c[?wK'32}A!~MB(F*d|B!mdBƬ:Q{ͼ-5|~נwx߮.7?zeV/]aBƙ).!^\ΞbCV~oa-}3rN0˰%h =W>~s?dzg6DR0k*n`>Q׌4~-aKb2Ul SyCʵU<VS| #x`##^<B0ẽ&\/N<'u%U8U=U ܂.{hK00رtE0{\Hz[,Kt%_OVVw5R zJV= Rjޙc+WGk[_Wߪv^m]wW.4?K` iOrOޕ|59`yym_e&Cx7 [P2)8 W v׿2iT'AFa3k_ղJgmRs['J,"P[ra#E6sC0kh7n Z: Ym[' A"!#CHr =/am2咘% +ϵ)?nSw.]W5;7VޑTpvɰ,¸HRp`lz<KC{|kT='oZ[]r"9scv>*lOK+sd}Y.f=IJ2|Rl9~[O=0M{7snV>~v>;N>ǻE>n=|:|_6ZYI0Z>?mbul\K\v?b/R%OwNYRxC:+8+xfƨDDミЏ0o`q;{!>~/ʘ0cjWggL_MȘėAS0s-~I']Ћ#(;e{Q%W%bAXM{ UC@8Iz ÷cdYJ=;W^ AzDvng1zM6EVpI^Y ޜ B:9܁8#d^r p~XK",<_^×a^XN+T酘^` X*VE/xSo!ځӑ306̅[6) qlm,9ljקz%GF$ROYӮx"*& `J d{ۏٮsKqP0&V``(x9Ir,;A"…g-eLp!#"\_e)3B"\ ?y2tB䦻_~xW"\H(ϯ"\H.y+B"FBԏmϸ"/ѪBz^!…H۟g .Шvs=BJvB [(V0&GGr\8sZ09:/F aG^BxkZZ09:шp!rt-kOl)a"rt>fs-gtzʳa"rt \~.D֧ fϾʞ`ʏK;8/} oV#q@LPe, z`XX<|+X+=+= v F!EB>-{P)TJ4̺Ye!;3SGO76}wg-ɭQ{EA֦.  mA'~zDg6M&lC[6k[?܎CM?\!BOnDڳDam!C[k[?|ìM?c]a¬On3Wemi%\C[.k[?#M?]"Onڳicmz#L`Ը5A3m<dUurr>\eXLg_Cs =,~xhc!:|Ȋa}~w ;qjL9iiK*A8\ߚ>ߚ>ߚ>ߚ>ߚ>;ۏn zw;A&H3iE6|83+늮o+G &0h6Q7 &RdMe>d619b IǷ6DdϿyuvMDX,ӷȞx'o68MD_9{MDo,Moo=.m"}tE &1zHDdoM3l6oBDd?ygSa5!÷HO0# &"{ե;g|m"okø &"{I |Ddp}]MDM?mK`6g[#Ґn"G7i>Zn}v'7i *M5[]A'7iV,/~&f_n?ISHic9>sś'ܤ)G iMOnVuh93O_~r&[L?MOnQuf9>śܤ)Ol񿭟.&MG\śܤ@i3o ~rBeF-.>&M綰Zm=q'7i;r|m97&MEG4l뙘랙϶ܤX&M%N ,ǿxS4*;-znM[On$}k[_m=Cu'7i*W=𩭂O~r`a>=x/㺾|\c Œz}K㕾"i |\7Oי}5]>k*gm,~(. V@62ՖȄ3?<,ux] u}3;3ݝ] VXˮ>FXB!>6`"$XaP 8#m1`&$VcI1'8>d1/>1WU=5=3Y]]u{yU]g2צ bpx$ HN8vxddH!J(aʌ/)3P t8ւ^ރXtbӑK\+y9RiJUHA"H C@:i=yHGBx\ޏt1%0~(KͿhp iGaII2Ǟ &^{*!;`+?TAVQ觺W+>kzEX:==!!U_?iu6a=༩%a?U)OiAA o/̃rxȽwl=!ˁ/{M؟N6XO:sDL$ys5X߃~A 2-l KM5J"db٢4:!+jۖTz1 %En vuwS9QNKkutY$G FqeCI[bƁm7~6,AqW+|A;y $7JGV{%jT{`W)j΍lq~Klqs| G$ պ.ԶLzt 7[-Cԉ0d+Lf8g)~,=TVRZ)98״wYDLGW1X"(|GT_pTVRGaޅ)](>KAXZG,S[I#` e*dJ> {a9I'Tl1V%GŖWTl%-*: }Nj+0'?Mm TH\.L! \D,|:{j/v{Q!W0OI_˻9@T%NsKh=BA{=D밻V{I- kdC*$Pyb|>/V~y_'uͰ밉o$!86xq\V> >9?nymoe>Nc39#}=<|wORVf_ +a'zr iiI0N¿^,q \N .r)•pYkYxRNkin]W50 &u.FJ96ux#n#و+4T?O/ RW q^[{3^+ .O#t];(H"\hpk8L@\<9Gދ*3}n'oй%_g]sk>|ϙ|br| o[L+-2b^`gz>o/v 6Vg?u4Z> {.gx-= :\M o$YPўI?Ѵ{(; pՇz$7+&q6W0r܃tAhIŭ6>>D_w6Cy ֊;i\Dդ1{C[n 7$Ueo0} H ;}C-?糰=XKqu 9 ܚv6R"y^T紩 NU K$T$u#m!V;X - ]R:=}UIL!VϜ)'QmRUȮ+xYEy%+QAg$o.=nEO$?O3|w(Dw>_|;H8~? }/ii&杵oMٛ/3Ÿ{zIln{E amnwBP-C^bЏ0oЇß~{ ]qf||e|/#_~/:-Oԡo~}}4uOԡGC?Qފ~}[NH*䍣Z6}%eRvQ>뎢l(GIjQ*u;cqhz e]u2Nv著tؘNdɏzzLcKQbTZ  KtqʼYq (bOf/In¿$7$`CRN']鋒8 `G|Ijg3˃fyxyvҶ8) 0EaKRazNr+NZ4W('dbzpdi$xۏusk;̹CG@k408.?I#Ƀ@z/Z8?khk vp%co~Hԏ'My *>i҃'l:xM.eMvQlr7& $?W?41}[n>'aOc ÔïԂ?P~^]3ջ]E&KErCs.i" &w=3qp auT1v'}<'x>SIx>'Ix>zOi4x|fO8>Oix2>ǥ MjK%O&G#C2=T*D"=T?F#lF}So"6?A~aY]9 IUrp0L0BlHv, m':5+ !5FRQ0lESG`[^5a dVkpsDvx{c~o  iwB4S} &mu#^(o7o |rz}pD vf nnPh(~[\ C*OFA^1Oh+'04O hp   $ 1 Anna A. Labutina386Microsoft PowerPoint@`9@ ]@p- GNt  &$    """)))UUUMMMBBB999|PP3f333f3333f3ffffff3f̙3ff333f333333333f33333333f33f3ff3f3f3f3333f33̙33333f333333f3333f3ffffff3f33ff3f3f3f3fff3ffffffffff3ffff̙fff3fffff3fff333f3f3ff3ff33f̙̙3̙ff̙̙̙3f̙3f333f3333f3ffffff3f̙3f3f3f333f3333f3ffffff3f̙3f3ffffffffff!___www4$A o(o`Eʦ """)))UUUMMMBBB999|PP3f3333f333ff3fffff3f3f̙f3333f3333333333f3333333f3f33ff3f3f3f3333f3333333f3̙33333f333ff3ffffff3f33f3ff3f3f3ffff3fffffffff3fffffff3f̙ffff3ff333f3ff33fff33f3ff̙3f3f3333f333ff3fffff̙̙3̙f̙̙̙3f̙3f3f3333f333ff3fffff3f3f̙3ffffffffff!___wwwԬԬԬԬմͳխԳݻ⼻ݼݑⴻ۴ⴻܻԬ⼼ⳋ⵴݊ݻݻ⴬⻻ݳݬ⻳ܴܺͬͬͬԬԬάԬԬάԬԬԬeeeeeeeeeeeݼeeeeeݐeeeeke݋eݻee⻵ݻ݋eeeeeek՜.+,D՜.+,|    Лист A4 (210x297 мм) ННГУ8 EArial WingdingsTimes New RomanHarlow Solid ItalicSymbolBernard MT Condensed Courier New-Оформление по умолчанию,Специальное оформлениеAdobe Photoshop ImageРисунок Microsoft WordMicrosoft Equation 3.0#Диаграмма Microsoft ExceleРаздел 4_1. Параллельное программирование на основе MPIСодержаниеВведение…Введение…Введение…Введение…Введение…ВведениеBMPI: основные понятия и определения…BMPI: основные понятия и определения…BMPI: основные понятия и определения…BMPI: основные понятия и определения…BMPI: основные понятия и определения…BMPI: основные понятия и определения…?MPI: основные понятия и определенияzВведение в разработку параллельных программ с использованием MPI…zВведение в разработку параллельных программ с использованием MPI…zВведение в разработку параллельных программ с использованием MPI…zВведение в разработку параллельных программ с использованием MPI…zВведение в разработку параллельных программ с использованием MPI…zВведение в разработку параллельных программ с использованием MPI…zВведение в разработку параллельных программ с использованием MPI…zВведение в разработку параллельных программ с использованием MPI…zВведение в разработку параллельных программ с использованием MPI…zВведение в разработку параллельных программ с использованием MPI…zВведение в разработку параллельных программ с использованием MPI…zВведение в разработку параллельных программ с использованием MPI…zВведение в разработку параллельных программ с использованием MPI…zВведение в разработку параллельных программ с использованием MPI…zВведение в разработку параллельных программ с использованием MPI…zВведение в разработку параллельных программ с использованием MPI…zВведение в разработку параллельных программ с использованием MPI…zВведение в разработку параллельных программ с использованием MPI…zВведение в разработку параллельных программ с использованием MPI…zВведение в разработку параллельных программ с использованием MPI…zВведение в разработку параллельных программ с использованием MPI…zВведение в разработку параллельных программ с использованием MPI…zВведение в разработку параллельных программ с использованием MPI…zВведение в разработку параллельных программ с использованием MPI…zВведение в разработку параллельных программ с использованием MPI…zВведение в разработку параллельных программ с использованием MPI…zВведение в разработку параллельных программ с использованием MPI…zВведение в разработку параллельных программ с использованием MPI…wВведение в разработку параллельных программ с использованием MPI5Пример: Вычисление числа …5Пример: Вычисление числа …5Пример: Вычисление числа …2Пример: Вычисление числа Заключение…+Вопросы для обсужденияKТемы заданий для самостоятельной работы СсылкиЛитература…ЛитератураСлайд 55Слайд 56 *Использованные шрифты"Шаблон оформления(Внедренные серверы OLE"Заголовки слайдов80 8@ _PID_HLINKSA0http://www.software.unn.ac.ru/http://www.mpiforum.org/&http://www-unix.mcs.anl.gov/mpi/mpich'http://www-unix.mcs.anl.gov/mpi/mpich2http://www.parallel.ru/8http://www.netlib.org/utk/papers/mpi-book/mpi-book.html6http://mitpress.mit.edu/book-home.tcl?isbn=0262692155http://www.bhv.ru/Root EntrydO)PicturesCurrent UserPSummaryInformation(dO(_D`Alexey A. SidnevAlexey A. SidnevysoyevRoot EntrydO)}$C@PicturesCurrent User;SummaryInformation(dO!_D` baldina.obaldina.o A. Sidnevysoyev  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Root EntrydO)PicturesCurrent UserSummaryInformation(dOPowerPoint Document(^h`DocumentSummaryInformation8