ࡱ> 8bjbj΀A4a&0"0"""""""8"l\#4"\Rb$%"4%4%4%&J]&y&QQQQQQQ$T`WxQ9" '&& ' 'Q0"0"4%4%R111 'J0"R4%"4%Q1 'Q11J""N4%8E"T,ZL&Q,R0\RLFX-&XLNN"X"3Qp&&1& &S&&&QQ/&&&\R ' ' ' 'X&&&&&&&&&( :#'/ '/    ?> >1I5<C :C@AC ";3>@8B<8G5A:85 O7K:8 ?0@0;;5;L=>3> ?@>3@0<<8@>20=8O" 4;O ABC45=B>2, >1CG0NI8EAO ?> ?@>3@0<<5 ?>43>B>2:8 10:0;02@>2 D878:>-<0B5<0B8G5A:8E =0C: ?> =0?@02;5=8N "@8:;04=0O <0B5<0B8:0 8 8=D>@<0B8:0" C@A B@5B89 !5<5AB@ H5AB>9 @0:B8G5A:85 8 ;01>@0B>@=K5 70=OB8O 36 G0A>2 0G5B 6 A5<5AB@ @>3@0<<0 @07@01>B0=0 ?@>D5AA>@>< :0D54@K <0B5<0B8G5A:>3> >15A?5G5=8O - D0:C;LB5B0 2KG8A;8B5;L=>9 <0B5<0B8:8 8 :815@=5B8:8 8653>@>4A:>3> 3>AC=825@A8B5B0 4>:B>@>< B5E=8G5A:8E =0C: .. 5@35;5<. 1. &  ' # ! 1. &5;L ?@5?>4020=8O :C@A0 A?>;L7>20=85 ?0@0;;5;L=KE 2KG8A;8B5;L=KE A8AB5< 4;O @5H5=8O 2KG8A;8B5;L=>-B@C4>5<:8E 7040G ?@54?>;0305B =0@O4C A> 7=0=85< <0B5<0B8G5A:8E ?@>1;5< ?0@0;;5;L=KE 2KG8A;5=89 ?@0:B8G5A:>5 >A2>5=85 A@54AB2 @07@01>B:8 ?0@0;;5;L=KE ?@>3@0<<. -B8 A@54AB20 >15A?5G8205B F5;K9 A?5:B@ 2>7<>6=KE ?>4E>4>2 : >1;0AB8 ?0@0;;5;L=KE 2KG8A;5=89 >B 8A?>;L7>20=8O =>2KE A?5F80;878@>20==KE O7K:>2 ?0@0;;5;L=>3> ?@>3@0<<8@>20=8O (=0?@8<5@, O7K:0 ) 4> ?@8<5=5=8O ">1KG=KE" ?>A;54>20B5;L=KE O7K:>2 ! 8 $>@B@0=, 2 :>B>@KE 2>7<>6=>ABL @07@01>B:8 ?0@0;;5;L=KE ?@>3@0<< >15A?5G8205BAO 70 AG5B 8A?>;L7>20=8O B5E=>;>38G5A:8E (8=AB@C<5=B0;L=KE) 181;8>B5: B8?0 MPI 8 PVM. 0;8G85 B0:>3> H8@>:>3> =01>@0 A@54AB2 ?0@0;;5;L=>3> ?@>3@0<<8@>20=8O >1CA;02;8205BAO ?@5645 2A53> E0@0:B5@=K<8 >A>15==>ABO<8 2KG8A;8B5;L=>-B@C4>5<:8E 7040G, A CG5B>< :>B>@KE @07@01>B:0 ?@>3@0<< <>65B 1KBL ?@>2545=0 1>;55 MDD5:B82=>, 8 @07=>>1@0785< ACI5AB2CNI8E ?0@0;;5;L=KE 2KG8A;8B5;L=KE A8AB5< (?@5645 2A53> <=>3>?@>F5AA>@=KE A8AB5< A >1I59 8 @0A?@545;5==>9 ?0<OBLN). 0: @57C;LB0B, 87CG5=85 @07=KE A@54AB2 ?0@0;;5;L=>3> ?@>3@0<<8@>20=8O 2 @0<:0E 548=>3> :C@A0 ?>72>;8B ?>;CG8BL 7=0=8O ?> :064>9 :>=:@5B=>9 B5E=>;>388 ?@>3@0<<8@>20=8O 2 >B45;L=>AB8, A>?>AB028BL 548=AB2> 8 @07;8G85 2A5E @0AA<0B@8205<KE ?>4E>4>2 8 ?>;CG8BL, B5< A0<K<, ?>=8<0=85 >1I8E ?@8=F8?>2 @07@01>B:8 ?0@0;;5;L=KE ?@>3@0<<. 2. 040G8 :C@A0 A?>;L7>20=85 <=>3>?@>F5AA>@=KE 2KG8A;8B5;L=KE A8AB5< ?@54?>;0305B ?@0:B8G5A:>5 >A2>5=85 A;54CNI8E @0745;>2 ?0@0;;5;L=>3> ?@>3@0<<8@>20=8O: 1I0O E0@0:B5@8AB8:0 ?0@0;;5;L=KE 2KG8A;8B5;L=KE A8AB5<, @8=F8?K @07@01>B:8 ?0@0;;5;L=KE 0;3>@8B<>2 8 ?@>3@0<<, ;3>@8B<8G5A:89 O7K: ?0@0;;5;L=>3> ?@>3@0<<8@>20=8O , ;3>@8B<8G5A:89 O7K: $>@B@0= HPF 4;O ?0@0;;5;L=>3> ?@>3@0<<8@>20=8O, "5E=>;>38O OpenMP 4;O @07@01>B:8 ?0@0;;5;L=KE ?@>3@0<< 4;O A8AB5< A >1I59 ?0<OBLN, 07@01>B:0 ?0@0;;5;L=KE ?@>3@0<< 4;O A8AB5< A @0A?@545;5==>9 ?0<OBLN A 8A?>;L7>20=85< 181;8>B5:8 MPI, 0@0;;5;L=K5 G8A;5==K5 0;3>@8B<K 4;O @5H5=8O 2KG8A;8B5;L=>-B@C4>5<:8E 7040G. K?>;=5=85 ?@0:B8G5A:8E 7040=89 ?> @07@01>B:5 ?0@0;;5;L=KE 0;3>@8B<>2 8 ?@>3@0<< >ACI5AB2;O5BAO =0 2KA>:>?@>872>48B5;L=>< 2KG8A;8B5;L=>< :;0AB5@5 8653>@>4A:>3> C=825@A8B5B0. 3. 8AF8?;8=K, 87CG5=85 :>B>@KE =5>1E>48<> ?@8 >A2>5=88 40==>3> :C@A0 7;>65=85 :C@A0 >?8@05BAO =0 >A=>2=K5 :C@AK "- 8 ?@>3@0<<8@>20=85" 8 "=>3>?@>F5AA>@=K5 2KG8A;8B5;L=K5 A8AB5<K 8 ?0@0;;5;L=>5 ?@>3@0<<8@>20=85". @54?>;0305BAO =0;8G85 C >1CG05<KE >1I8E A2545=89 ?> :C@A0< "@E8B5:BC@0 -", "5B>4K 2KG8A;5=89", "?5@0F8>==K5 A8AB5<K". @8 2K?>;=5=88 ?@0:B8G5A:8E 8 ;01>@0B>@=KE 7040=89 >1CG05<K5 4>;6=K 2;045BL <5B>40<8 ?@>3@0<<8@>20=8O =0 0;3>@8B<8G5A:>< O7K:5 !. 2. !  !&+ 1. 1I0O E0@0:B5@8AB8:0 ?0@0;;5;L=KE 2KG8A;8B5;L=KE A8AB5< 1.1. @E8B5:BC@0 2KA>:>?@>872>48B5;L=KE - $C=:F8>=0;L=K5 2KG8A;8B5;L=K5 CAB@>9AB20. =>3>C@>2=520O 8 <>4C;L=0O ?0<OBL. >=2595@=K5 8 25:B>@=K5 2KG8A;5=8O. @>F5AA>@=K5 <0B@8FK. =>3>?@>F5AA>@=K5 2KG8A;8B5;L=K5 A8AB5<K A >1I59 8 @0A?@545;5==>9 ?0<OBLN (<C;LB8?@>F5AA>@K 8 <C;LB8:><?LNB5@K). 8:@>?@>F5AA>@=K5 A8AB5<K. !E5<K :><<CB0F88 (?>;=0O :><<CB0F8O - >1I0O ?0<OBL, ?5@5:@5AB=K5 :><<CB0B>@K, ;>:0;L=K5 AE5<K :><<CB0F88 - >1I0O H8=0, @5H5B:8, :;0AB5@K). =0;87 ?0@0;;5;L=KE 0;3>@8B<>2 8 B8?>2K5 B>?>;>388 AE5< :><<CB0F88  :>;LF>, ;8=59:0, @5H5B:8, ?>;=K9 3@0D, 38?5@:C1, B>@, 45@52>. ??0@0B=0O @50;870F8O 8 ?@>3@0<<=0O M<C;OF8O B>?>;>389. 1.2. ;0AA8D8:0F8O <=>3>?@>F5AA>@=KE 2KG8A;8B5;L=KE A8AB5< !C?5@-. =>3>?@>F5AA>@=K5 2KG8A;8B5;L=K5 :><?;5:AK (!). =>3><0H8==K5 2KG8A;8B5;L=K5 :><?;5:AK. !5B8 -. KA>:>?@>872>48B5;L=K5 2KG8A;8B5;L=K5 :;0AB5@K. @8<5@K A>2@5<5==KE 2KA>:>?@>872>48B5;L=KE 2KG8A;8B5;L=KE A8AB5<. !C?5@:><?LNB5@=K5 2KG8A;8B5;L=K5 A8AB5<K 2 >AA88. !8AB5<0B8:0 $;8==0. >B>:8 40==KE (:><0=4). >=:@5B870F8O 284>2 <=>3>?@>F5AA>@=KE A8AB5<: 25:B>@=K5 :><?LNB5@K, A8<<5B@8G=K5 <C;LB8?@>F5AA>@K (SMP), <0AA82=>-?0@0;;5;L=K5 :><?LNB5@=K5 A8AB5<K (MPP), :;0AB5@K. 2. @8=F8?K @07@01>B:8 ?0@0;;5;L=KE 0;3>@8B<>2 8 ?@>3@0<< 2.1. F5=:0 MDD5:B82=>AB8 ?0@0;;5;L=KE 2KG8A;5=89 >:070B5;L MDD5:B0 @0A?0@0;;5;820=8O (CA:>@5=85). -DD5:B82=>ABL 8A?>;L7>20=8O 2KG8A;8B5;L=>9 A8AB5<K. !?>A>1K >F5=:8 ?>:070B5;59. A=>2=K5 E0@0:B5@8AB8:8 2KG8A;8B5;L=>9 A8AB5<K, 2;8ONI85 =0 25;8G8=K CA:>@5=8O 8 MDD5:B82=>AB8 (0@E8B5:BC@0, :>;8G5AB2> ?@>F5AA>@>2, B>?>;>38O :0=0;>2 ?5@540G8 40==KE). 2.2. F5=:0 :><<C=8:0F8>==>9 B@C4>5<:>AB8 ?0@0;;5;L=KE 0;3>@8B<>2 %0@0:B5@8AB8:8 B>?>;>389 A5B8 ?5@540G8 40==KE. ;3>@8B<K <0@H@CB870F88. 5B>4K ?5@540G8 40==KE. =0;87 B@C4>5<:>AB8 >A=>2=KE >?5@0F89 ?5@540G8 40==KE. 5@540G0 40==KE <564C 42C<O ?@>F5AA>@0<8 A5B8. 48=>G=0O 8 <=>65AB25==0O @0AAK;:0 A>>1I5=89. ?5@0F8O F8:;8G5A:>3> A42830. 5B>4K ;>38G5A:>3> ?@54AB02;5=8O B>?>;>388 :><<C=8:0F8>==>9 A@54K. B>1@065=85 :>;LF52>9 B>?>;>388 8 B>?>;>388 @5H5B:8 =0 38?5@:C1. 2.3. 1I85 ?@8=F8?K ?>AB@>5=8O ?0@0;;5;L=KE 0;3>@8B<>2 8 ?@>3@0<< 0A?0@0;;5;820=85 2KG8A;5=89 =0 C@>2=5 :><0=4, 2K@065=89, ?@>3@0<<=KE <>4C;59, >B45;L=> 2K?>;=O5<KE 7040=89. K1>@ ?0@0;;5;L=>3> 0;3>@8B<0. 50;870F8O 0;3>@8B<0 2 2845 ?0@0;;5;L=>9 ?@>3@0<<K. >AB@>5=85 8A?>;=O5<>9 ?@>3@0<<K 4;O ?0@0;;5;L=>9 2KG8A;8B5;L=>9 A8AB5<K. 0@0;;5;L=>5 8A?>;=5=85 <0H8==>9 ?@>3@0<<K. '0AB=K5 ?>AB0=>2:8: 2K1>@ >?B8<0;L=>3> 0;3>@8B<0 4;O :>=:@5B=>9 2KG8A;8B5;L=>9 A8AB5<K, =0E>645=85 =08;CGH59 B>?>;>388 2KG8A;8B5;L=>9 A8AB5<K 4;O @5H5=8O >?@545;5==>9 7040G8, @0A?0@0;;5;820=85 ACI5AB2CNI53> 0;3>@8B<0. 5:><?>78F8O 0;3>@8B<0 =0 ?0@0;;5;L=> 8A?>;=O5<K5 1;>:8 2KG8A;5=89. 0A?@545;5=85 7040=89 ?> ?@>F5AA>@0< 8 10;0=A8@>2:0. @30=870F8O 2708<>459AB28O. !8=E@>=870F8O 8 2708<>8A:;NG5=85. 5@540G0 40==KE <564C ?@>F5AA>@0<8. 2.6. !@54AB20 @07@01>B:8 ?0@0;;5;L=KE ?@>3@0<< A?>;L7>20=85 A?5F80;878@>20==KE O7K:>2 ?0@0;;5;L=>3> ?@>3@0<<8@>20=8O (). @8<5=5=85 ?0@0;;5;L=KE @0AH8@5=89 ACI5AB2CNI8E 0;3>@8B<8G5A:8E O7K:>2 (HPF). >AB@>5=85 ?0@0;;5;L=>3> ?@>3@0<<=>3> >15A?5G5=8O =0 >A=>25 ACI5AB2CNI8E ?>A;54>20B5;L=KE ?@>3@0<< A 8A?>;L7>20=85< A@54AB2 ?@54:><?8;OF88 (B5E=>;>38O OpenMP). A?>;L7>20=85 B5E=>;>38G5A:8E (8=AB@C<5=B0;L=KE) 181;8>B5: ?0@0;;5;L=>3> ?@>3@0<<8@>20=8O (181;8>B5:8 MPI 8 PVM). /7K:8 ?0@0;;5;L=>3> ?@>3@0<<8@>20=8O =0 >A=>25 @0745;5==>3> 3;>10;L=>-04@5AC5<>3> ?@>AB@0=AB20 (UPC, CAF, Chapel, X10). "5E=>;>38O DVM 8 O7K: ?@>3@0<<8@>20=8O T++. "5E=>;>388 @07@01>B:8 ?0@0;;5;L=KE ?@>3@0<< 4;O 3@0D8G5A:8E ?@>F5AA>@>2 (CUDA, OpenCL). @30=870F8O ?0@0;;5;L=KE 2KG8A;5=89 2 <0B5<0B8G5A:8E ?0:5B0E (=0 ?@8<5@5 MatLab). 1I0O E0@0:B5@8AB8:0 ?@>1;5<K B5AB8@>20=8O 8 >B;04:8 ?0@0;;5;L=KE ?@>3@0<<. 3. ;3>@8B<8G5A:89 O7K: ?0@0;;5;L=>3> ?@>3@0<<8@>20=8O  3.1. 1I0O E0@0:B5@8AB8:0 B5>@88 ?@>F5AA>2 %>0@0 >=OB85 ?@>F5AA0 8 53> >?8A0=85 ?@8 ?><>I8 ?@>B>:>;>2. ?5@0F88 =04 ?@>B>:>;0<8. >A;54>20B5;L=K5 8 ?0@0;;5;L=K5 ?@>F5AAK. >45;8@>20=85 =545B5@<8=87<0. ?8A0=85 2708<>459AB28O ?@>F5AA>2. >=OB85 @0745;O5<KE @5AC@A>2. 3.2. 1I0O E0@0:B5@8AB8:0 B@0=A?LNB5@=KE A8AB5< A>15==>AB8 0@E8B5:BC@K B@0=A?LNB5@0. 0=0;K A2O78. ??0@0B=0O ?>445@6:0 @0745;5=8O 2@5<5=8 <564C ?@>F5AA0<8. 1I0O AB@C:BC@0 <C;LB8B@0=A?LNB5@=KE A8AB5<. 3.2. /7K: ?0@0;;5;L=>3> ?@>3@0<<8@>20=8O  >=F5?F8O ?@>F5AA0 2 . -;5<5=B0@=K5 8 A>AB02=K5 ?@>F5AAK. 5B>4K :>=AB@C8@>20=8O 03@538@>20==KE ?@>F5AA>2 (?>A;54>20B5;L=>5 8 ?0@0;;5;L=>5 8A?>;=5=85, CA;>285, 2K1>@ 8 A5;5:F8O ?@>F5AA>2, F8:; 8 @5?;8:0F8O). @8=F8?K ?5@540G8 40==KE <564C ?@>F5AA0<8 ?@8 ?><>I8 :0=0;>2. "8?K 40==KE. ?8A0=85 :0=0;>2. @>F54C@K 8 DC=:F88. 01>B0 A 2=5H=8<8 CAB@>9AB20<8. @8<5@K ?@>3@0<< =0 0;3>@8B<8G5A:>< O7K:5 : C<=>65=85 <0B@8FK =0 25:B>@, 1KAB@0O A>@B8@>2:0 40==KE. 4. ;3>@8B<8G5A:89 O7K: $>@B@0= HPF 4;O ?0@0;;5;L=>3> ?@>3@0<<8@>20=8O 07>2K5 B8?K 40==KE. ?5@0B>@K >?8A0=8O. K@065=8O. #:070B5;8. >=AB@C8@>20=85 ?@>872>4=KE B8?>2 40==KE. !B@C:BC@0 ?@>3@0<<K. >=OB85 ?>4?@>3@0<<K. >4C;8 8 8=B5@D59AK. 0AA82K. !5G5=8O. 8=0<8G5A:85 <0AA82K. >=AB@C:B>@K. ?5@0B>@ WHERE. 8@5:B82K @0A?@545;5=8O 40==KE DISTRIBUTE 8 ALIGN. 0A?@545;5=85 <=>3><5@=KE 8 48=0<8G5A:8E <0AA82>2. #?@02;5=85 ?0@0;;5;L=K<8 2KG8A;5=8O<8. ?5@0B>@ FORALL. 8@5:B820 INDEPENDENT. #G51=K9 ?@8<5@: <0B@8G=>5 C<=>65=85 5. "5E=>;>38O OpenMP 4;O @07@01>B:8 ?0@0;;5;L=KE ?@>3@0<< 4;O A8AB5< A >1I59 ?0<OBLN 5.1. 1I0O E0@0:B5@8AB8:0 B5E=>;>388 "5E=>;>38O OpenMP :0: AB0=40@B ?0@0;;5;L=>3> ?@>3@0<<8@>20=8O 4;O <=>3>?@>F5AA>@=KE A8AB5< A >1I59 ?0<OBLN (SMP, NUMA 8 4@.). AB>@8O @0728B8O AB0=40@B0. 564C=0@>4=K5 >@30=870F88 AB0=40@B870F88 B5E=>;>388. 1I0O E0@0:B5@8AB8:0 ?>4E>40. 07@01>B:0 ?0@0;;5;L=KE ?@>3@0<<0 =0 >A=>25 8E ?>A;54>20B5;L=KE ?@>B>B8?>2. =5A5=85 C:070=89 > @0A?0@0;;5;820=88 2 2845 48@5:B82 ?@5?@>F5AA>@0. >;>68B5;L=K5 AB>@>=K B5E=>;>388: ?>MB0?=>ABL @07@01>B:8, 548=AB2> ?>A;54>20B5;L=>3> 8 ?0@0;;5;L=>3> :>40, AB0=40@B87>20==>ABL, 2>7<>6=>ABL ?@8<5=5=8O 4;O =081>;55 @0A?@>AB@0=5==KE O7K:>2 ?@>3@0<<8@>20=8O ! 8 $>@B@0=. $>@<0B 70?8A8 48@5:B82. 1;0AB8 2848<>AB8 48@5:B82. !B0B8G5A:89 8 48=0<8G5A:89 :>=B5:AB. B45;5==K5 48@5:B82K. 5.2. #?@02;5=85 ?0@0;;5;L=K<8 >1;0ABO<8 C;LA8@CNI89 (fork-join) ?@8=F8? >@30=870F88 ?0@0;;5;87<0. !>740=85 ?0@0;;5;L=KE >1;0AB59. 8@5:B820 PARALLEL. 0745;5=85 2KG8A;8B5;L=>9 =03@C7:8 <564C ?>B>:0<8. 8@5:B82K DO/FOR 8 SECTIONS. 0;0=A8@>2:0 2KG8A;5=89. 5.3. #?@02;5=85 @0745;O5<K<8 40==K<8 1I85 (@0745;O5<K5) 8 ;>:0;L=K5 40==K5 ?>B>:>2. 5>1E>48<>ABL A8=E@>=870F88. 8@5:B82K CRITICAL, ATOMIC 8 BARRIER. 0@0<5B@K SHARED 8 PRIVATE 48@5:B82K PARALLEL. !8=E@>=878@>20==K5 25@A88 2K?>;=5=8O >?5@0F89 (@54C:F8O 40==KE). 0@0<5B@K REDUCTION 48@5:B82K PARALLEL. 708<>8A:;NG5=85 4>ABC?0 : >1I8< ?5@5<5==K<. !5<0D>@K (70<:8). $C=:F88 INIT_LOCK, SET_LOCK 8 UNSET_LOCK. 5.4. 1I0O E0@0:B5@8AB8:0 A@54K 2K?>;=5=8O $C=:F88 8 ?5@5<5==K5 >:@C65=8O. !@02=8B5;L=0O E0@0:B5@8AB8:0 :><?8;OB>@>2, >15A?5G820NI8E ?>445@6:C B5E=>;>388 OpenMP. 5.5. #G51=>-?@0:B8G5A:0O 7040G0 G8A;5==>3> @5H5=8O 48DD5@5=F80;L=KE C@02=5=89 2 G0AB=KE ?@>872>4=KE >AB0=>2:0 7040G8. 040G0 8@8E;5 4;O C@02=5=8O C0AA>=0. >=5G=>-@07=>AB=0O 0??@>:A8<0F8O 7040G8 8 0;3>@8B< 0CAA0-5945;O. A?>;L7>20=85 OpenMP 4;O >@30=870F88 ?0@0;;5;87<0. @>1;5<0 A8=E@>=870F88 ?0@0;;5;L=KE 2KG8A;5=89. >7<>6=>ABL =5>4=>7=0G=>AB8 2KG8A;5=89 2 ?0@0;;5;L=KE ?@>3@0<<0E. @>1;5<0 2708<>1;>:8@>2:8. A:;NG5=85 =5>4=>7=0G=>AB8 2KG8A;5=89. >;=>2K5 AE5<K ?0@0;;5;L=KE 2KG8A;5=89. 0;0=A8@>2:0 2KG8A;8B5;L=>9 =03@C7:8 ?@>F5AA>@>2. 57C;LB0BK 2KG8A;8B5;L=KE M:A?5@8<5=B>2. 6. 07@01>B:0 ?0@0;;5;L=KE ?@>3@0<< 4;O A8AB5< A @0A?@545;5==>9 ?0<OBLN A 8A?>;L7>20=85< 181;8>B5:8 MPI 6.1. 1I0O E0@0:B5@8AB8:0 ?>4E>40 >45;L >@30=870F88 ?0@0;;5;L=KE 2KG8A;5=89 2 2845 >4=>2@5<5==>3> 2K?>;=5=8O >4=>9 8 B>9 65 ?@>3@0<<K =0 =5A:>;L:8E ?@>F5AA>@0E (single program multiple data - SPMD). @30=870F8O 2708<>459AB28O ?0@0;;5;L=> 2K?>;=O5<KE ?@>3@0<< ?@8 ?><>I8 ?5@540G8 A>>1I5=89 (message passing interface - MPI). !B0=40@B A?5F8D8:0F89 ?@>F54C@ ?5@540G8 40==KE :0: >A=>20 @07@01>B:8 <>18;L=KE (?5@5=>A8<KE) ?0@0;;5;L=KE ?@>3@0<< 4;O @07=>@>4=KE <=>3>?@>F5AA>@=KE 2KG8A;8B5;L=KE A8AB5<. AB>@8O @0728B8O AB0=40@B0 MPI. 564C=0@>4=K5 >@30=870F88 AB0=40@B870F88 B5E=>;>388. 1I0O E0@0:B5@8AB8:0 ?>4E>40: ?@>F5AAK, A>>1I5=8O, B8?K 40==KE, :><<C=8:0B>@K, B>?>;>388. $>@<0B 70?8A8 :><0=4 2K7>20 DC=:F89 181;8>B5:8 MPI. !B@C:BC@0 ?@>3@0<<K 8 <8=8<0;L=> =5>1E>48<K9 =01>@ DC=:F89. 1I0O E0@0:B5@8AB8:0 A@54K 2K?>;=5=8O. ?@545;5=85 A>AB020 8A?>;L7C5<KE ?@>F5AA>@>2. ><0=40 70?CA:0 =0 2K?>;=5=85 mpirun. #G51=K9 ?@8<5@. >;>68B5;L=K5 AB>@>=K B5E=>;>388: 8=:0?AC;OF8O =87:>C@>2=52KE ?@>1;5< ?5@540G8 40==KE, 2>7<>6=>ABL ?@5420@8B5;L=>9 ?>43>B>2:8 ?0@0;;5;L=KE ?@>3@0<< =0 >4=>?@>F5AA>@=KE :><?LNB5@0E, AB0=40@B87>20==>ABL, ?@8<5=8<>ABL 4;O =081>;55 @0A?@>AB@0=5==KE O7K:>2 ?@>3@0<<8@>20=8O ! 8 $>@B@0=. 6.2. #?@02;5=85 >1<5=>< A>>1I5=89 <564C ?@>F5AA0<8 $C=:F88 ?5@540G8 A>>1I5=89 MPI_Send 8 MPI_Recv. ?8A0=85 ?5@5AK;05<KE 40==KE. 45=B8D8:0F8O ?@>F5AA>2 8 A>>1I5=89. >;;5:B82=K5 >?5@0F88 ?5@540G8 40==KE. 5@540G0 40==KE 2A5< ?@>F5AA0< (DC=:F8O MPI_Bcast). ?5@0F88 @54C:F88 40==KE (DC=:F8O MPI_Reduce2V " P x~$6!h!!6"&`'*++,X.. 22d88;< <"<<<<<<<<====(=0=`=f===>>>>>>>>>V??䲻h<ht$CJh<CJmH sH h<h<CJ h<CJ ht$5CJht$CJmH sH ht$OJQJht$CJOJQJ ht$CJht$CJOJQJht$5CJOJQJ>T*  t " P v$< $<`a$$`a$x $ / `a$ / `$a$$<a$<*6!h!!6"\$&`'()*++ $<<`a$< $<`a$$`a$ x^` $<`a$$ & F h^`a$+,X../1 22h36d88j=>>V??2@AFB$xx]`gd;D$`a$ xx]` x^`<gd< $<<`a$< $<`a$?2@AFB|CCzGGG HKKKDLLQRlRRRRR6SFSSSSSTfTU6U8ULU^UnUpUUUU>VTVfVzVW2W4WNWWXXX\Y,]]]]@^@_L_N_\_^_n_p_x_~__B`P`R```b`t`z``bbcceejgght$CJmH sH ht$OJQJmH sH ht$OJQJ ht$CJ ht$5CJTFB|CCFFzG HH\IIJRKKDLL,N>QRlRJSTfTU|V $xx`a$ x^`< xx]`$`a$|VNWWX\YXZ,]]@^bd6ejgghhzz|@||F~~  $<`a$$$xx`a$gd;D x^` $xx`a$<gh hhhh"h$h,hVi\i^ihiiiiizJzPzRz`zfzhz|@|l|r|~ r"\^(,28bd"&PT|~¸h;DCJmH sH  h;DCJh;Dh;DCJh;Dh;D5CJh;D5CJmH sH  h;D5CJh;Dh;DOJQJh;DOJQJ ht$5CJUht$CJmH sH  ht$CJ>). !8=E@>=870F8O 2KG8A;5=89 (DC=:F8O MPI_Barrier). #G51=K9 ?@8<5@: G8A;5==>5 8=B53@8@>20=85. 568<K ?5@540G8 A>>1I5=89 (1;>:8@CNI89, A8=E@>==K9, 1CD5@87C5<K9, ?> 3>B>2=>AB8). >?0@=K9 >1<5= A>>1I5=89. 1I0O E0@0:B5@8AB8:0 4>?>;=8B5;L=KE >?5@0F89 ?5@540G8 40==KE. 6.3. #?@02;5=85 40==K<8 07>2K5 B8?K 40==KE 2 MPI. >=OB85 ?@>872>4=>3> B8?0 40==KE. 0@B0 8 A83=0BC@0 B8?0. 5B>4K :>=AB@C8@>20=8O ?@>872>4=KE B8?>2 40==KE: =5?@5@K2=K9, 25:B>@=K9, -25:B>@=K9, 8=45:A=K9, -25:B>@=K9, C?0:>20==K9. 1I89 A?>A>1 >?@545;5=8O ?@>872>4=>3> B8?0 40==KE. #G51=K9 ?@8<5@: ;5=B>G=0O AE5<0 @0745;5=8O 40==KE ?@8 C<=>65=88 <0B@8F. 6.4. #?@02;5=85 ?@>F5AA0<8 >=OB85 3@C??K ?@>F5AA>2 8 :><<C=8:0B>@0. $C=:F88 4;O C?@02;5=8O 3@C??0<8 8 :><<C=8:0B>@0<8. #G51=K9 ?@8<5@: <>45;8@>20=85 B>?>;>388 2708<>459AB28O ?@>F5AA>2 2 2845 ?@O<>C3>;L=>9 @5H5B:8. $C=:F88 MPI 4;O @01>BK A 28@BC0;L=K<8 B>?>;>38O<8 2708<>459AB28O ?@>F5AA>2. 6.5. 1I0O E0@0:B5@8AB8:0 A@54K 2K?>;=5=8O $C=:F88 8 ?5@5<5==K5 >:@C65=8O. !@02=8B5;L=0O E0@0:B5@8AB8:0 @50;870F89 181;8>B5:8 MPI. 6.6. #G51=>-?@0:B8G5A:0O 7040G0 G8A;5==>3> @5H5=8O 48DD5@5=F80;L=KE C@02=5=89 2 G0AB=KE ?@>872>4=KE !?>A>1K @0745;5=8O 40==KE. 1<5= 8=D>@<0F859 <564C ?@>F5AA>@0<8. >;;5:B82=K5 >?5@0F88 >1<5=0 8=D>@<0F859. @30=870F8O 2>;=K 2KG8A;5=89. ;>G=0O AE5<0 @0745;5=8O 40==KE. F5=:0 B@C4>5<:>AB8 >?5@0F89 ?5@540G8 40==KE. 7. /7K:8 ?0@0;;5;L=>3> ?@>3@0<<8@>20=8O =0 >A=>25 @0745;5==>3> 3;>10;L=>-04@5AC5<>3> ?@>AB@0=AB20 7.1. /7K: ?0@0;;5;L=>3> ?@>3@0<<8@>20=8O UPC >45;L ?0@0;;5;L=>3> ?@>3@0<<8@>20=8O Unified Parallel C (UPC). >=OB85 UPC-?@>3@0<<K. >45;L ?@54AB02;5=8O ?0<OB8. #?@02;5=85 @0A?@545;5=85< 40==K<8. !8=E@>=870F8O 2KG8A;5=89 2 UPC. >;;5:B82=K5 >?5@0F88. F5=:0 MDD5:B82=>AB8. @8<5@K. 7.2. /7K: ?0@0;;5;L=>3> ?@>3@0<<8@>20=8O CAF >45;L ?0@0;;5;L=>3> ?@>3@0<<8@>20=8O Co-Array Fortran (CAF). >=OB85 8A?>;=8B5;59 (images). >=OB85 @0A?@545;5==KE <0AA82>2 (co-arrays). !8=E@>=870F8O ?0@0;;5;L=KE 2KG8A;5=89. F5=:0 MDD5:B82=>AB8 CAF-?@>3@0<<. 0728B85: >B CAF 1.0 : CAF 2.0. @8<5@K. 7.3. /7K: ?0@0;;5;L=>3> ?@>3@0<<8@>20=8O Chapel >45;L @0745;5==>3> 3;>10;L=>-04@5AC5<>3> ?@>AB@0=AB20  O7K: Chapel. -;5<5=BK O7K:0. 0@0;;5;87< 7040G. 0AH8@5==K5 2>7<>6=>AB8 @01>BK A 40==K<8. >=OB85 8A?>;=8B5;O (locale). #?@02;5=85 @0A?@545;5=85< 40==KE. @8<5@K. 7.4. /7K: ?0@0;;5;L=>3> ?@>3@0<<8@>20=8O X10 A=>2=K5 ?>=OB8O X10. >=OB85 8A?>;=8B5;59 (places). >=OB85 0:B82=>AB8 (activities). >445@6:0 ?0@0;;5;87<0 2 X10. #?@02;5=85 @0A?@545;5=85< 40==KE. @8<5@K. 8. "5E=>;>38O @07@01>B:8 ?0@0;;5;L=KE ?@>3@0<< DVM 1AB@0:B=0O <>45;L @0A?0@0;;5;820=8O. 0A?@545;5=85 40==KE. 8@5:B82K DISTRIBUTE 8 REDISTRIBUTE. >:0;870F8O 40==KE. 8@5:B82K ALIGN 8 REALIGN. 0A?@545;5=85 28B:>2 ?0@0;;5;L=>3> F8:;0. 8@5:B820 PARALLEL. #40;5==K5 40==K5. E B8?K 8 A?5F8D8:0F8O. >:0;870F8O 40==KE. 8@5:B82K SHADOW, ACROSS, REMOTE, REDUCTION. >?8@>20=85 A5:F89 <0AA82>2. =>3><5@=K5 <0AA82K. @>F54C@K. 2>4/2K2>4. 3@0=8G5=8O =0 8A?>;L7>20=85 O7K:0 !. 5B>48:0 >B;04:8 DVM-?@>3@0<<. @8<5@K. 9. /7K: ?0@0;;5;L=>3> DC=:F8>=0;L=>3> ?@>3@0<<8@>20=8O T++ /7K: T++  @0AH8@5=85 C++. "-?5@5<5==K5, "-DC=:F88, "-C:070B5;8. !B@C:BC@0 ?@>3@0<<K =0 O7K:5 "++. >B>2K5 8 =53>B>2K5 25;8G8=K. 6840=85 3>B>2=>AB8. $C=:F88 tdrop 8 twait. @0=C;K ?0@0;;5;87<0. A?>;L7>20=85 3;>10;L=KE ?5@5<5==KE. A?>;L7>20=85 C-C:070B5;59 2 "-?5@5<5==KE. 1I0O ?0<OBL (AC?5@?0<OBL). 5@540G0 7=0G5=89 A C7;0 =0 C75;. >445@6:0 >B:07>CAB>9G82>AB8 8A?>;=5=8O "-?@8;>65=89. A>15==>AB8 @07@01>B:8 "-?@>3@0<< 2 >?5@0F8>==>9 A8AB5<5 Windows. @8<5@K. 10. "5E=>;>388 @07@01>B:8 ?0@0;;5;L=KE ?@>3@0<< 4;O ?@>F5AA>@>2 =>2KE 0@E8B5:BC@ 10.1. "5E=>;>38O CUDA >7<>6=K5 ?@58<CI5AB20 2KG8A;5=89 =0 3@0D8G5A:>< ?@>F5AA>@5. !@54AB20 @07@01>B:8 4;O 3@0D8G5A:>3> ?@>F5AA>@0. A?>;L7>20=85 B5E=>;>388 CUDA 4;O 2KG8A;5=89 =0 3@0D8G5A:8E ?@>F5AA>@0E. >45;L ?@>3@0<<8@>20=8O. >45;L 8A?>;=5=8O 8 85@0@E8O ?>B>:>2. 5@0@E8O ?0<OB8. =B5@D59A ?@>3@0<<8@>20=8O CUDA. !?5F8D8:0B>@K B8?>2 ?5@5<5==KE 8 DC=:F89. AB@>5==K5 ?5@5<5==K5. >=D83C@8@>20=85 8A?>;=5=8O O45@. !8=E@>=870F8O. #?@02;5=85 CAB@>9AB20<8. #?@02;5=85 ?0<OBLN. 1I85 ?@8=F8?K 2KG8A;5=89 =0 1075 B5E=>;>388 CUDA. AA;54>20=85 ?@>872>48B5;L=>AB8 B5E=>;>388 CUDA =0 ?@8<5@5 7040G8 N B5;. 10.2. /7K: ?0@0;;5;L=>3> ?@>3@0<<8@>20=8O 3@0D8G5A:8E ?@>F5AA>@>2 =0 >A=>25 AB0=40@B0 OpenCL A?>;L7>20=85 OpenCL 4;O 2KG8A;5=89 =0 3@0D8G5A:8E ?@>F5AA>@0E. @E8B5:BC@0 OpenCL. >45;L ?;0BD>@<K. >45;L 8A?>;=5=8O. >45;L ?0<OB8. >45;L ?@>3@0<<8@>20=8O. 1I85 ?@8=F8?K 2KG8A;5=89 =0 1075 OpenCL. 5@5=>A ?@8;>65=8O CUDA =0 OpenCL. AA;54>20=85 ?@>872>48B5;L=>AB8 B5E=>;>388 =0 ?@8<5@5 7040G8 N B5;. 10.3. "5E=>;>388 @07@01>B:8 ?0@0;;5;L=KE ?@>3@0<< 4;O ?@>F5AA>@0 Cell 17>@ 0@E8B5:BC@K Cell BE. @>F5AA>@=K5 M;5<5=BK. (8=0 EIB. >=B@>;;5@ ?0<OB8 MIC. =B5@D59A Cell BE. PowerPC Processor Element. Synergistic Processor Elements. >45;8 ?@>3@0<<8@>20=8O 4;O Cell BE (2K3@C65==K5 DC=:F88, >1A;C6820=85 CAB@>9AB2, CA:>@5=85 2KG8A;5=89, ?>B>:>20O 8 :>=2595@=0O >1@01>B:0, <=>3>?@>F5AA>@=0O >1@01>B:0 A >1I59 ?0<OBLN, 0A8<<5B@8G=>5 2K?>;=5=85 ?>B>:>2). 07@01>B:0 8 040?B0F8O ?@8;>65=89 4;O 0@E8B5:BC@K Cell BE (?>A;54>20B5;L=0O @50;870F8O 4;O PPE, ?5@5=>A 2K?>;=5=8O 2KG8A;5=89 =0 SPE, 25:B>@870F8O 2KG8A;5=89 =0 SPE, ?0@0;;5;L=0O @50;870F8O 4;O =5A:>;L:8E SPE, >?B8<870F8O SPE-:>40). AA;54>20=85 ?@>872>48B5;L=>AB8 B5E=>;>388 =0 ?@8<5@5 7040G8 N B5;. 10.4. "5E=>;>388 @07@01>B:8 ?0@0;;5;L=KE ?@>3@0<< 4;O ?@>F5AA>@0  CA:>@8B5;O 2KG8A;5=89 ClearSpeed "5E=8G5A:85 E0@0:B5@8AB8:8 ?@>F5AA>@0 ClearSpeed Advance. 1I0O E0@0:B5@8AB8:0 A@54K @07@01>B:8 (Cn SDK, ClearSpeed Visual Profiler, CSX600 Simulators, FLEXlm Server, CSXL 8 CSDFT Libraries). >45;L 8A?>;=5=8O. 5@0@E8O ?0<OB8. 07@01>B:0 ?@8;>65=89. A>15==>AB8 O7K:0 Cn . "8?K 40==KE. !?5F8D8:0B>@K mono 8 poly. "8?K C:070B5;59. 5@5<5I5=85 40==KE <564C poly- 8 mono-?0<OBLN . MH8@>20=85 40==KE 8 A5<0D>@K. $C=:F88 @54C:F88. AA;54>20=85 ?@>872>48B5;L=>AB8 B5E=>;>388 =0 ?@8<5@5 7040G8 N B5;. 11. @30=870F8O ?0@0;;5;L=KE 2KG8A;5=89 2 <0B5<0B8G5A:8E ?0:5B0E (=0 ?@8<5@5 MatLab) 568< 2KG8A;5=8O pmode. >=OB85 ?0@0;;5;L=>9 7040G8 8 ?0@0;;5;L=>3> 7040=8O. @8<5@K: <0B@8G=>5 C<=>65=85, @5H5=85 A8AB5< ;8=59=KE C@02=5=89. 12. 0@0;;5;L=K5 G8A;5==K5 0;3>@8B<K 4;O @5H5=8O 2KG8A;8B5;L=>-B@C4>5<:8E 7040G 12.1. 0@0;;5;L=K5 G8A;5==K5 0;3>@8B<K ;8=59=>9 0;351@K !?>A>1K @07185=8O <0B@8F (3>@87>=B0;L=0O, 25@B8:0;L=0O, 1;>G=K5 AE5<K). 5B>4K 2KG8A;5=8O ?@>872545=8O <0B@8F A 8A?>;L7>20=85< @07=KE AE5< @07185=8O <0B@8F. ;>G=K5 0;3>@8B<K $>:A0 8 M==>=0. 15A?5G5=85 ?@545;L=> 4>?CAB8<>3> ?0@0;;5;87<0. 1@0I5=85 <0B@8F. 0@0;;5;L=K5 <5B>4K @5H5=8O A8AB5< ;8=59=KE C@02=5=89. 12.2. 0@0;;5;L=0O A>@B8@>2:0 40==KE 0@0;;5;L=>5 >1>1I5=85 107>2>9 >?5@0F88 A>@B8@>2:8. C7K@L:>20O A>@B8@>2:0. !>@B8@>2:0 (5;;0. KAB@0O A>@B8@>2:0. 12.2. 0@0;;5;L=0O >1@01>B:0 3@0D>2 0E>645=85 <8=8<0;L=> >E20BK20NI53> 45@520 (?0@0;;5;L=K9 20@80=B 0;3>@8B<0 @8<0). >8A: :@0BG09H8E ?CB59 (?0@0;;5;L=K9 20@80=B 0;3>@8B<0 59:AB@K). 01>@0B>@=K9 ?@0:B8:C< (?>4;568B @0AH8@5=8N) '0ABL 1. 5B>4K ?0@0;;5;L=>3> ?@>3@0<<8@>20=8O 4;O 2KG8A;8B5;L=KE A8AB5< A @0A?@545;5==>9 ?0<OBLN 1. 07@01>B:0 ?0@0;;5;L=KE ?@>3@0<< A 8A?>;L7>20=85< 8=B5@D59A0 ?5@540G8 A>>1I5=89 MPI - 2 G0A0 8=8-MPI (AB0@B, D8=8H, ?5@540G0 8 ?@85< A>>1I5=89). @8<5@ 1: 0G0;L=0O ?0@0;;5;L=0O ?@>3@0<<0 (?5G0BL 845=B8D8:0B>@>2 ?@>F5AA>2) - 70?CA: (;>:0;L=K9, @0A?@545;5==K9). F5=:0 2@5<5=8 2K?>;=5=8O ?@>3@0<<K, A8=E@>=870F8O, :>;;5:B82=K5 >?5@0F88. @8<5@ 2: '8A;5==>5 8=B53@8@>20=85- A>740=85 ?@>5:B0 =0 >A=>25 3>B>2>3> 8AE>4=>3> B5:AB0 ?@>3@0<<K, =0AB@>9:0 >?F89, :><?8;OF8O, 70?CA:. @8<5@ 3: !:0;O@=>5 ?@>872545=85 25:B>@>2 (A0<>AB>OB5;L=>5 7040=85 1). 2. @0:B8:C< ?> @07@01>B:5 ?0@0;;5;L=KE 0;3>@8B<>2 8 ?@>3@0<< 4;O @5H5=8O 7040G 2KG8A;8B5;L=>9 <0B5<0B8:8 - 6 G0A>2 17>@ 181;8>B5:8 MPI: CAB0=>2:0, =0AB@>9:0, AE5<0 DC=:F8>=8@>20=8O. @8<5@ 4: 5H5=85 7040G @0A?>7=020=8O >1@07>2 (2K?>;=5=85 7040=8O ?>4 @C:>2>4AB2>< ?@5?>4020B5;O). @8<5@ 5. #<=>65=85 <0B@8F, ;5=B>G=K9 0;3>@8B< (A0<>AB>OB5;L=>5 7040=85 2). @8<5@ 6. #<=>65=85 <0B@8F, 1;>G=K5 AE5<K @0A?@545;5=8O 40==KE (0;3>@8B<K $>:A0 8 5==>=0). '0ABL 2. 5B>4K ?0@0;;5;L=>3> ?@>3@0<<8@>20=8O 4;O 2KG8A;8B5;L=KE A8AB5< A >1I59 ?0<OBLN 3. 07@01>B:0 ?0@0;;5;L=KE ?@>3@0<< A 8A?>;L7>20=85< B5E=>;>388 @5?  - 2 G0A0 1I0O E0@0:B5@8AB8:0 B5E=>;>388 @5? : ?>B>:8, ?0@0;;5;L=K5 >1;0AB8, @0A?@545;5=85 2KG8A;5=89 <564C ?>B>:0<8. @8<5@ 7: !:0;O@=>5 ?@>872545=85 25:B>@>2. ;>10;L=K5 8 ;>:0;L=K5 40==K5 ?>B>:>2. @8B8G5A:85 A5:F88 4>ABC?0 : @0745;O5<K< 40==K<. !8=E@>=870F8O. @8<5@ 8. #<=>65=85 <0B@8F (20@80=BK @0A?0@0;;5;820=8O 2;>65==KE F8:;>2, A0<>AB>OB5;L=>5 7040=85 3). 4. @0:B8:C< ?> @07@01>B:5 ?0@0;;5;L=KE 0;3>@8B<>2 8 ?@>3@0<< 4;O @5H5=8O 2KG8A;8B5;L=>-B@C4>5<:8E 7040G - 6 G0A>2 @8<5@ 9. 0@0;;5;L=0O A>@B8@>2:0: 0;3>@8B<K ?C7K@L:>2>9 A>@B8@>2:8, A>@B8@>2:8 (5;;0 8 1KAB@>9 A>@B8@>2:8 (2K?>;=5=85 7040=8O ?>4 @C:>2>4AB2>< ?@5?>4020B5;O). @8<5@ 10. 040G8 >1@01>B:8 3@0D>2: ?>AB@>5=85 <8=8<0;L=>3> >E20BK20NI53> 45@520, ?>8A: :@0BG09H8E ?CB59 (A0<>AB>OB5;L=>5 7040=85 4) #'-"'! " +  !& A=>2=0O ;8B5@0BC@0 5@35;L .. "5>@8O 8 ?@0:B8:0 ?0@0;;5;L=KE 2KG8A;5=89.  .: 8=><. 01>@0B>@8O 7=0=89, =B5@=5B-C=825@A8B5B 8=D>@<0F8>==KE B5E=>;>389, 2007. >30G52 ... A=>2K ?0@0;;5;L=>3> ?@>3@0<<8@>20=8O. - .: . 01>@0B>@8O 7=0=89, 2003. >52>48= .., >52>48= ;.. 0@0;;5;L=K5 2KG8A;5=8O. - !1.: %-5B5@1C@3, 2002. 5<=N38= !., !B5A8: . 0@0;;5;L=>5 ?@>3@0<<8@>20=85 4;O <=>3>?@>F5AA>@=KE 2KG8A;8B5;L=KE A8AB5<  !1.: %-5B5@1C@3, 2002. >@=552 .. 0@0;;5;L=>5 ?@>3@0<<8@>20=85 2 MPI. >A:20-652A:: =AB8BCB :><?LNB5@=KE 8AA;54>20=89, 2003. ;5=52 .., 5G5=:8= .., '5@=5F>2 .. 0@0;;5;L=>5 ?@>3@0<<8@>20=85 2 Matlab 8 53> ?@8;>65=8O.  .: & , 2007. @N:>2 .. 0@0;;5;L=>5 ?@>3@0<<8@>20=85 =0 O7K:5 C-DVM.  .: #, 2002. 1@0<>2 !.. OpenTS. !>AB>O=85 @01>B 8 ?5@A?5:B82K.  5@5A;02;L-0;5AA:89: ! , 2006. El-Ghazawi, T., Yelick K., Carlson W., Sterling T. UPC: Distributed Shared-Memory Programming, Wiley, 2005.  HYPERLINK "http://www.co-array.org/" \t "_parent" http://www.co-array.org  HYPERLINK "http://chapel.cray.com/" \t "_parent" http://chapel.cray.com/  HYPERLINK "http://x10-lang.org/" \t "_parent" http://x10-lang.org/ Introductory Programming Manual for 3.1 (ClearSpeed Support Site). HYPERLINK "http://support.clearspeed.com/resources/documentation/Release3.1Docs/%20SDK_Introductory_Programming_Manual_3.1_Rev2.J.pdf"http://support.clearspeed.com/resources/documentation/Release3.1Docs/ SDK_Introductory_Programming_Manual_3.1_Rev2.J.pdf  HYPERLINK "http://www.nvidia.ru/object/cuda_home_new_ru.html" http://www.nvidia.ru/object/cuda_home_new_ru.html  HYPERLINK "http://opencl.ru/" http://opencl.ru/ >?>;=8B5;L=0O ;8B5@0BC@0 6>C=7 . @>3@0<<8@>20=85 =0 O7K:5 . - .: 8@, 1989. !K@:>2 ..., 0B2552 !.. @>3@0<<=>5 >15A?5G5=85 <C;LB8B@0=A?LNB5@=KE A8AB5<. - .: 80;>3-$, 1992. %>0@ '. 708<>459AB2CNI85 ?>A;54>20B5;L=K5 ?@>F5AAK. - .: 8@, 1989. Chandra, R., Menon, R., Dagum, L., Kohr, D., Maydan, D., McDonald, J. Parallel Programming in OpenMP. - Morgan Kaufinann Publishers, 2000 Geist G.A., Beguelin A., Dongarra J., Jiang W., Manchek ., Sunderam V. PVM: Parallel Virtual Machine - A User's Guide and Tutorial for Network Parallel Computing. MIT Press, 1994. Group W, Lusk E, Skjellum A. Using MPI. Portable Parallel Programming with the Message-Passing Interface. - MIT Press, 1994.(htp://www.mcs.anl.gov/mpi/index.html) Kumar V., Grama A., Gupta A., Karypis G. Introduction to Parallel Computing. - The Benjamin/Cummings Publishing Company, Inc., 1994 Pacheco, S. P. Parallel programming with MPI. Morgan Kaufmann Publishers, San Francisco. 1997. =D>@<0F8>==K5 @5AC@AK A5B8 =B5@=5B 24.=D>@<0F8>==>-0=0;8B8G5A:85 <0B5@80;K ?> ?0@0;;5;L=K< 2KG8A;5=8O< (http://www.parallel.ru) 25.=D>@<0F8>==K5 <0B5@80;K &5=B@0 :><?LNB5@=>3> <>45;8@>20=8O 8653>@>4A:>3> C=825@A8B5B0 (http://www.software.unn.ac.ru/ccam) 26. =D>@<0F8>==K5 <0B5@80;K ?> MPI (http://www.mpi-forum.org) 27.=D>@<0F8>==K5 <0B5@80;K ?> OpenMP ( HYPERLINK "http://www.openmp.org" http://www.openmp.org) F5=:0 A>AB>O=8O @07@01>B:8 :C@A0 =0 27.08.2010 !/7K:, B5E=>;>38O 07@01>B0==K5 <0B5@80;K5:F88@575=B0F8801. @01>BK1OCCAM2HPF3MPI+++4OpenMP+++5UPC+6CAF+7Chapel+8X10+9DVM+++10"++++11MatLab+12CUDA+13OpenCL+14Cell+15ClearSpeed+     PAGE  PAGE 11 r"^FZ<gd~e$$xx`a$gd~e$$xx`a$gd;D<gd;D$xx`a$gd;Dx^`gd;D< $xx`a$ $<`a$:<>HJX\^dfJNЉԉ8DFЊԊjnRTZh~e5CJmH sH h~eh~e5CJ h~e5CJhSH(h;DCJ hSH(CJhSH(5CJmH sH  hSH(5CJ h;DCJh;DCJmH sH h;Dh;D5CJh;D5CJmH sH  h;D5CJh;Dh;DCJ6Z|Č>BNPrxȕ@`b|tiaiZ hi,5CJhOJQJhi,hi,OJQJhi,OJQJh[+h~eOJQJh[+h[+OJQJh[+OJQJmH sH h[+OJQJh[+h[+CJh[+CJmH sH  h[+CJh~eCJmH sH h~eh~eOJQJh~eOJQJmH sH h~eOJQJh;Dh~eCJ h~eCJh~eh~eCJ"JpԐPޒt@*bx^`gdi,<gd[+<gd~ex^`gd~e›ΛЛ46>žΣȤܤޤv¨ƨhż~tit~aYNH hCJhwphi,OJQJhwpOJQJhOJQJh5CJmH sH hh5CJhwphCJhhCJh#5CJmH sH  h#5CJ h5CJhkhCJmH sH hwphkhCJhkhhkhCJhwphwp5CJhwp5CJmH sH  hwp5CJhwphwpCJhwphi,5CJhi,5CJmH sH bjbЛPh6ž<gd$$xx`a$gd#<gdkh$$xx`a$gdwp<gdwp$$xx`a$gdi,ޤ^Ԧ6h$P4|$$<<`a$ $<<`a$$`a$$$<<`a$gdx^`gd<gd;Dx^`gdwp<gd$$xx`a$gd$( P48|Ұ԰ıl|~Ե |BRԸڸZD»һ׻ÁÁÁÁÁÁÁÁÁÊÁÁÁht$6CJ]ht$56CJ]hv?zht$56OJQJhv?zhv?z56OJQJhv?z56OJQJhv?zOJQJ ht$CJ ht$5CJ h5CJht$OJQJhOJQJhh;DCJ hCJhCJmH sH 2ıl~ |BڸD»ֿ$$xx`a$ Sxx^S` $xx`a$$`a$ $x`a$ xx^` x^`ֿ8`64:>4*,Z\^`ɾylclXlRl ht-CJht-ht-0J3CJht-ht-CJjht-ht-CJUht-ht-CJmH sH hhCJaJmH sH hhWCJaJmH sH hhv?zCJaJhht$CJaJmH sH hht$CJaJhht-CJaJmH sH ht$OJQJht$CJOJQJht$6CJ] ht$5CJ ht$CJֿ8`64^$ & F a$gdFf$ & F a$gd$ & F a$gdW $ & F a$$ & F a$gdt-x ^`$`a$`Z\"$2ν{mcVcmGmVhd Gh}0J3CJmH sH h}h}CJmH sH h}CJmH sH jh}CJUmH sH ,hFfhFf0J3CJOJPJQJaJmH sH hFfhFfCJaJmH sH jhFfhFfCJUaJhFfhFfCJmH sH  ht-CJht-ht-0J3CJht-ht-CJht-ht-0J3CJmH sH jht-ht-CJUht-ht-CJmH sH lt:BJ $ ]^`a$gd$ ^`a$gdx $ & F a$$ & F a$gd$x$ & F a$gdFf$ ^a$gdFf>BDfhjl:BJN JPjpr|幬tttetetettetetht$0J25CJ\mH sH ht$0J25CJ\h}0J25CJ\hht$CJaJmH sH hht$CJaJht$OJQJhFfh}CJmH sH  h}CJhd Gh}0J3CJmH sH h}h}CJmH sH h}CJmH sH jh}CJUmH sH h}hFfCJmH sH ! "*068DFLNRTR쵪ē~~~rdhchm0J25CJ\h hm0J2CJ\h 0J2CJ\h h 0J2CJ\hmhm0J2CJ\ht$0J25CJ\hd Ghm0J3CJhd Ghm0J3CJmH sH hm0J25CJ\hm0J25CJ\mH sH hmhm0J25CJ\%jhm0J25CJU\mH sH "RT $ $Ifa$gdcl $ ;^`;a$gdm$ ^`a$gd  8PqWWWWW$ $Ifa$gdcl kd$$Ifl4FY#9j t0    44 laytcPRVbK11$ $Ifa$gdcl kd$$Ifl4rY#9jT t044 laytcRbhjv|~ "$&(*,.06>@BDFHJ^`bfhxz~ĴĴĴĴĴĴĴĴĴĴĴĴĴĴĴĴĴhchm0J2CJ\mH sH hch 0J2CJ\mH sH hchm0J25CJ\hchm0J2CJ\"hchm0J25CJ\mH sH Gbdfhj2kd$$IflrY#9jT t044 laytc$ $Ifa$gdcl jnvxz|$ $Ifa$gdcl $ $Ifa$gdcl |~L22$ $Ifa$gdcl kd$$IflrY#9jT t044 laytc2kdb$$IflrY#9jT t044 laytc$ $Ifa$gdcl $ $Ifa$gdcl $ $Ifa$gdcl L22$ $Ifa$gdcl kd?$$IflrY#9jT t044 laytc2kd$$IflrY#9jT t044 laytc$ $Ifa$gdcl $ $Ifa$gdcl $ $Ifa$gdcl L22$ $Ifa$gdcl kd$$IflrY#9jT t044 laytc2kd$$IflrY#9jT t044 laytc$ $Ifa$gdcl  $ $Ifa$gdcl $ $Ifa$gdcl "L22$ $Ifa$gdcl kd$$IflrY#9jT t044 laytc"&*.02kd$$IflrY#9jT t044 laytc$ $Ifa$gdcl 06>BFH$ $Ifa$gdcl $ $Ifa$gdcl HJP^L22$ $Ifa$gdcl kdm $$IflrY#9jT t044 laytc^bdfh2kdJ $$IflrY#9jT t044 laytc$ $Ifa$gdcl hnx|~$ $Ifa$gdcl $ $Ifa$gdcl L22$ $Ifa$gdcl kd' $$IflrY#9jT t044 laytc  "&(*.068򩠘uh 0JmHnHuht$ ht$0Jjht$0JUhcjhcUhht$CJhm0J25CJ\hchm0J2CJ\hchm0J2CJ\mH sH hch 0J2CJ\mH sH "hchm0J25CJ\mH sH hchm0J25CJ\)2kd $$IflrY#9jT t044 laytc$ $Ifa$gdcl $ $Ifa$gdcl $ $Ifa$gdcl L22$ $Ifa$gdcl kd $$IflrY#9jT t044 laytc2kd $$IflrY#9jT t044 laytc$ $Ifa$gdcl *,.02468  {8@h]hh]h&`#$$ a$$ ^`a$gd? 000P&P . A!"#n$n% Dp$$If!vh595j5#v9#vj#v:V l4 t0++,595j5aytc$$If!vh595j55T5#v9#vj#v#vT#v:V l4 t0++,595j55T5aytc$$If!vh595j55T5#v9#vj#v#vT#v:V l t0,595j55T5aytc$$If!vh595j55T5#v9#vj#v#vT#v:V l t0,595j55T5aytc$$If!vh595j55T5#v9#vj#v#vT#v:V l t0,595j55T5aytc$$If!vh595j55T5#v9#vj#v#vT#v:V l t0,595j55T5aytc$$If!vh595j55T5#v9#vj#v#vT#v:V l t0,595j55T5aytc$$If!vh595j55T5#v9#vj#v#vT#v:V l t0,595j55T5aytc$$If!vh595j55T5#v9#vj#v#vT#v:V l t0,595j55T5aytc$$If!vh595j55T5#v9#vj#v#vT#v:V l t0,595j55T5aytc$$If!vh595j55T5#v9#vj#v#vT#v:V l t0,595j55T5aytc$$If!vh595j55T5#v9#vj#v#vT#v:V l t0,595j55T5aytc$$If!vh595j55T5#v9#vj#v#vT#v:V l t0,595j55T5aytc$$If!vh595j55T5#v9#vj#v#vT#v:V l t0,595j55T5aytc$$If!vh595j55T5#v9#vj#v#vT#v:V l t0,595j55T5aytc$$If!vh595j55T5#v9#vj#v#vT#v:V l t0,595j55T5aytc$$If!vh595j55T5#v9#vj#v#vT#v:V l t0,595j55T5aytc^8 02 0@P`p2( 0@P`p 0@P`p 0@P`p 0@P`p 0@P`p 0@P`p8XV~_HmHnHsHtH:`: 1KG=K9_HmHsHtHV@V  03>;>2>: 1 $<5CJKHOJQJkHT@T  03>;>2>: 2 $<56CJOJQJkHNN  03>;>2>: 3 $<CJOJQJkHRR  03>;>2>: 4 $<5CJOJQJkHJJ  03>;>2>: 5 <CJOJQJkHBB  03>;>2>: 6 <6CJFF  03>;>2>: 7 < OJQJkHJJ  03>;>2>: 8 <6OJQJkHP P  03>;>2>: 9 <56CJOJQJkHBA`B A=>2=>9 H@8DB 0170F0\i@\ 1KG=0O B01;8F0 :V 44 la .k . 5B A?8A:0 H"H 0720=85 >1J5:B0 xx5,, 7040=855>*.. 7040=85 16@O"@ 040=85 2$x`a$L2L 5@E=89 :>;>=B8BC;  9r J @BJ 86=89 :>;>=B8BC;  9r 4)@Q4 ><5@ AB@0=8FK>b> G0ABL@2CJ KH OJQJkH<<  3;02;5=85 1   DD  3;02;5=85 2  ^DD  3;02;5=85 3  ^DD  3;02;5=85 4  ^DD  3;02;5=85 5  Y^YDD  3;02;5=85 6  ^DD  3;02;5=85 7  ^DD  3;02;5=85 8  x^xDD  3;02;5=85 9  @^@FF C?@06=5=8O $x`a$6@@ 1KG=K9 >BABC? !^V#V 5@5G5=L @8AC=:>2"  p^`pN N  #:070B5;L 1# 8^`8CJN N  #:070B5;L 2$ 8^`8CJN @N  #:070B5;L 3% X8^X`8CJN N  #:070B5;L 4&  8^ `8CJNN  #:070B5;L 5' 8^`8CJNN  #:070B5;L 6( 8^`8CJNN  #:070B5;L 7) x8^x`8CJNN  #:070B5;L 8* @8^@`8CJNN  #:070B5;L 9+ 8^`8CJD!2D  #:070B5;L,$xa$5CJ ?8A0=85 :><~-$ & F >T^`a$CJjCj A=>2=>9 B5:AB A >BABC?><.$dh`a$5CJjR@j A=>2=>9 B5:AB A >BABC?>< 2/$dh`a$CJ`S` A=>2=>9 B5:AB A >BABC?>< 30$`a$bPb A=>2=>9 B5:AB 21PP5$7$8$H$5OJQJ\tH ,W@!, !B@>3895\:U@1: 0 8?5@AAK;:0 >*B*phVVAV @>A<>B@5==0O 38?5@AAK;:0 >*B* ph@Q@ zzz15CJ$OJQJ\aJ$o(phBbh bh Ff  170F A?8A:0!6$dxx^a$m$CJPJ^JaJtH p`sp m !5B:0 B01;8FK7:V707PK![Content_Types].xmlj0Eжr(΢Iw},-j4 wP-t#bΙ{UTU^hd}㨫)*1P' ^W0)T9<l#$yi};~@(Hu* Dנz/0ǰ $ X3aZ,D0j~3߶b~i>3\`?/[G\!-Rk.sԻ..a濭?PK!֧6 _rels/.relsj0 }Q%v/C/}(h"O = C?hv=Ʌ%[xp{۵_Pѣ<1H0ORBdJE4b$q_6LR7`0̞O,En7Lib/SeеPK!kytheme/theme/themeManager.xml M @}w7c(EbˮCAǠҟ7՛K Y, e.|,H,lxɴIsQ}#Ր ֵ+!,^$j=GW)E+& 8PK!Ƶtheme/theme/theme1.xmlYnE#;8U i-qN3'JH DA\8 R>CW]{'ސ{g?x݈]"$q+_,y>8{7 K }xLވHe 2{Rܜaˋ??<ߟdžSr$L].<İT̟72S"ѵ_JwL&BJ05kZVyVy|xC OO|x>+<>@(:??/>5{yxFDdm 3^q5'=q6nib-$RB}}YGq=xK@;)^qbha79g . pUʹ;bbmc[$c'a}5KKfH5HL!ݦ&|mK{N6M6hq v|y 58+zH  *~ HHy\K*t@G>{sA}"))y sGfۡqǾ'w E1 [8>ܤ4Aбt׎~ls14_>,Ȭ7TT GqME=w-i>mo[oiBszbP:j5if F 9Pɉ* k\ A ;!N`.{I SցD p3˅5veU}AbvyA/g 氚 Z N+lR~aeԩj9&&CLgMʼn7a A0ƀHEA3~{q q1vƨl効9)>൜fN1N FIrdq8Y^:_73.|3 f%Jش?MOY s 3;} Rc0`d[鯠$ÿ - έhǴ"P 6T{TUٴ+9E28Y*MOt0O9Bݍqg7Ŕ9O)z?7#]u rBIHAאTpl>՟,SpT4@~BA%}'0+{eRF&rĪ#uu\{BHuM6`pG}N+!'_oN콶3a3dXZzCyCUɪ嶂ZZZ۱f,fAg-@`g v6V?Dhf6t=M&ʺ6ײ'݉#֚>d8s9xN=ڮjAv11;u2%M2oN1uo%տPK! ѐ'theme/theme/_rels/themeManager.xml.relsM 0wooӺ&݈Э5 6?$Q ,.aic21h:qm@RN;d`o7gK(M&$R(.1r'JЊT8V"AȻHu}|$b{P8g/]QAsم(#L[PK-![Content_Types].xmlPK-!֧6 +_rels/.relsPK-!kytheme/theme/themeManager.xmlPK-!Ƶtheme/theme/theme1.xmlPK-! ѐ' theme/theme/_rels/themeManager.xml.relsPK] aa4 %%%(?gZ`R859<pqsvxz|}<+FB|Vbֿ Pbj|"0H^h8678:;ortuwy{~DXxXXXXXXY%YmYYmZoZZZZ[[O`s``aXXXXXXX !(!!8@0(  B S  ?a OLE_LINK2 OLE_LINK1 _Ref258277480""K*Yb%KlYbTFv$1WbXb9*urn:schemas-microsoft-com:office:smarttagsplace ^   V\!!R"X"##0$C$A(G(:)@)..P/c/00001122226666-838W8`8E9K999<:B:Y:c:====>>>>AAAABBBBBBVCZCCCCCCCCCCCCCCCDDDDGFQFxFFFFFFFFFFFFFFFFGG_GaGGGGGGGHHHHdJkJ+L3L%M-MPPEQKQuQ{QdUoUUUUUUU;VHVW WWWWWWWSY]Y[[\$\*\/\5\:\@\D\J\P\\\\\\\\\\\\\n]v] ^^^%^^^G`M`````````1a7aaaaaaaaaaaaaaaaaaaaab- " .v}$$--//22L=N=CCCC*M-M:N>BCEEuI{IJ K}KK6LcLPPVR`R.S8SSST#UDXXX)YZ3[\\^^`aaaaaaaaaaaaaaaaaaaaab````````````````` a a aaaaaaa!a#a$a'a(a)a*a+a,a-a.a0a1a7a8a9a:a;aaVaWa]a_a`abadaeahajakamaaaaaaaaaaaaaaaabp RC_n @px.. Y(P $)1,ʔ^*Q45VrFT떰9RRCvXT^ YhW9#Rmzfs| je}PB*hh^h`B*OJQJo(hh^h`.^`.^`.pp^p`.@ @ ^@ `.^`.^`.^`.^`.PP^P`. ^`OJQJo(  ^`OJQJo(  pp^p`OJQJo(  @ @ ^@ `OJQJo(  ^`OJQJo(  ^`OJQJo(  ^`OJQJo(  ^`OJQJo(  PP^P`OJQJo( h^`.h^`.hpLp^p`L.h@ @ ^@ `.h^`.hL^`L.h^`.h^`.hPLP^P`L.hh^h`. ^`OJQJo(q ^`OJQJo(q pp^p`OJQJo(q @ @ ^@ `OJQJo(q ^`OJQJo(q ^`OJQJo(q ^`OJQJo(q ^`OJQJo(q PP^P`OJQJo(qe^e`6o(.^`OJQJ^Jo(o p^p`OJQJo( @ ^@ `OJQJo(^`OJQJ^Jo(o ^`OJQJo( ^`OJQJo(^`OJQJ^Jo(o P^P`OJQJo(^`o(.hh^h`B*OJQJo( ^`OJQJo(  ^`OJQJo(  pp^p`OJQJo(  @ @ ^@ `OJQJo(  ^`OJQJo(  ^`OJQJo(  ^`OJQJo(  ^`OJQJo(  PP^P`OJQJo(  ^`OJQJo(  ^`OJQJo(  pp^p`OJQJo(  @ @ ^@ `OJQJo(  ^`OJQJo(  ^`OJQJo(  ^`OJQJo(  ^`OJQJo(  PP^P`OJQJo(  ^`OJQJo(  ^`OJQJo(  pp^p`OJQJo("  @ @ ^@ `OJQJo(  ^`OJQJo(  ^`OJQJo(  ^`OJQJo(  ^`OJQJo(  PP^P`OJQJo(  hS^h`OJQJo( ^`OJQJo(L^`Lo(. ^ `o(. ^ `o(.xL^x`Lo(.H^H`o(.^`o(.L^`Lo(.^`.^`.pp^p`.@ @ ^@ `.^`.^`.^`.^`.PP^P`.inenp 9R_rFY( $) Y@px#RmvXT}n1,s|*Q45( @q ^`OJQJo(P ;@q ^`OJQJo(-tb T}6Xrx\@X[d+ Z*.Bm Sߦ\Fe~         RlZ34Jn)@^l C$B*{ΝզxU:~\|FDHy8&\dbd2D'jbTD+|@⸄;C*Oje~nRL0k6=jmhOȯTg̴4ڗf ~eҬ>{kۂ&:4n6}QF8![la%LfrxK$j & B#b} F$ TPQZ\B#OIKD &LC$vx"TPLC$jxK$RX-TPyBzUnknown G*Ax Times New Roman5Symbol3. *Cx ArialG5  jMS Mincho-3 fg5. .[`)Tahoma7. [ @Verdana7.@ Calibri;Wingdings?= *Cx Courier NewA BCambria Math"1S/G6T{&D;S 1;S 14daa 2QHX ?<2! xx @01>B5 @0AA<0B@820NBAO ?@>1;5<K 2K?>;=5=8O G8A;5==KE M:A?5@8<5=B>2 4;O >1CG5=8O 8 8AA;54>20=89 2 >1;0AB8 <=>3>M:AB@5<0;L=KE >?B8<870F8>==KE <5B>4>2 5@35;L ..gergelL           Oh+'0@Ldp|       ..Normalgergel68Microsoft Office Word@:@ܵ@z@ghttp://chapel.cray.com/]http://www.co-array.org/  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Root Entry F3EData 1Table$YWordDocument A4SummaryInformation(DocumentSummaryInformation8MsoDataStorevE8EQGAGJ1U3W5NTY==2vE8EItem  PropertiesUCompObj y   F' Microsoft Office Word 97-2003 MSWordDocWord.Document.89q