MPI
07–1–037–0142
! "#!$ !%
&"'
23( 1) 28 *,+.-
24365
IT7984:<;>=4?A@CB<D,E 5GF
7IH ITJ"K>;L7>MONLPLQ
FORTSOUWVXFZY\[^]<_4`4aIbLc
;
`ed
E<f9E
a
gihGjWk
;Il
a
jWkm
@>n6o<p
g>qLrts
;67
59u6vX`iwtx
n6o<y,zX{
m|kXg~}<
;
`d,_
h
w6x
n6oI6
KCE
5
1L qWr6s >e@,OG>
g4
5L4
6LIA@|WO
qWrLs
@C6 K|E94
qWr
yt¡
g>h
KC¢K
5
1L qOrLs nOo
x6£
4O6;L7W¤i¥~yt¡
[^5
~<@T4G
g
;L7
uOv<`O¦t§
HW¨4©yL¢
¢ d EªKi«
h<j<¬
F
1 96 ¡ g L q4r y,®t¯A k E
a
g9h<°
y
w6x
nLoeyT±e
` g
L
q
rLs
7 E
Fw6²G`<F
¡ g>htj
_ { 5GU
³|´iµt¶
O
qWr6s
@C·¸
g¬ ; } [¹5
qOrLsOº
¢ m
169»
²
n4o4¼
w<aI½L¾e¿O`
O
qWrLs
@CÀ [|Á
p ¬
y,ÂÄÃ,
k E a gh
1 È6É 1
1.1 Ê6Ë4ÌÍ4Î . . . . 1
1.2 44n4o . . . . 1
1.3 4 qOrLs . . . . 1
1.4 ½L¾ 4 qWr6s . . . . 1
1.5 Ï6ÐOÑLÒ4Ó<Ô9Õ . . . . 3
1.6 Ê6Ë4Ì<Ã ¿ . . . . 3
1.7 ÊLÖ4×LØ>Ù Y . . . . 3
2 ÚeÛ,Ü4Ý 3 2.1 MPI(Messe Passing Interface) . . . . 3
2.2 6 qOrLs . . . . 4
2.3 MPICH2Þ6ß . . . . 4
2.4 Visual C++2008Express Edition >ÞLß . . . . 4
3 àWáLâLã4ä~åiæçCè6é<êTëGìeíïîWð 6 3.1 ®<ñIòLJe~ó4ô4õ . . . . 6
3.2 Ï6ÐOÑLÒ4Ó<Ô9Õ . . . . 6
3.3 SollinLöI÷Xøùú4û . . . . 6
3.4 Ï6ÐOÑLÒ4Ó<Ô9Õ@ïü\ý MPI LLó4ôiû . . . . 7
4 þ,ÿ 9 4.1 Ln4o ¦6§ . . . . 9
4.2 Ñ<9nOo ¦t§ . . . . 9
4.3 o . . . . 9
5 11
6 ÉTæ 12
13
A àWáLâLã4ä~åiæIè! MPI"#$%Tð 15
1
1.1 )+*-,/./021
1.2 3547658
¡
g:9
>n4o@
5W4
6LIA@ï
a
E<;=ÄK|E?>
A@BC
6LIA
>n4o
}
[9Fw4x
; q
r
n4o@D>
T¬
@ï44n4oFEParallel ProcessingG
a h
44n4o@ï
a
g¬ ; } [¹5
nOo
¦t§
vH
`JIK
yML mk
5 « _I5
nOoGO¼
F
OOp
g ONP
k E a g9h
44nOoX7RQSTURVWXY>ü[Z]\_^`
;9
a
mk<g
QSbac<dbeCµgf
`7h 5?i
{OE v f `
qOr
n4o@Djk p g
Ô9Õ9ül<;I
a
mkeg>h
1.3 354+monqp
4
L6IAX@
a
g~¬
44nOoA@>
,¬
yT±~
`
q,rLs
@CO
q,rLs
(Parallel Computer)
a
Zh
6
qLr~s
;t7
5
ÑeEe~~,ª|Gyrts7uvù (Shared Memory) ;<wKïEx<ñTØÄfL@y>
a,5
~
Z
§
yz{7u<vÄù@Dz"K|E?>
rsbuMv ù}|6O
qWr6s
(Shared Memory Parallel Computer)
5 j
k~Tk
L6IAe79M5|;y2u<vÄù (Local Memory)@Cb
5
z{;47
U
X³C´Iµ~¶
§
ue|~µ S
g
{ª@>~Gp gJ
uv"ùA|~6
qLrts
(Distributed Memory Parallel Computer)
v
fý 2e; D
g~¬ y f g9h
rs2u<v ù}|64
qWr
nOoX7 qWr6s
§
N
OÔ9ÕtHµgfT
{ aedi_
Ô>Õ;yw"K E
7uMv ù@Drs"K|E a g _
{w4n"KZHtp a y 5
6IAey
`2h
JXyt¡
dT_y
;47
5
uMv ù|;>ÑE
L6IZX@DLB>
g¬
yX;
`Gd
EKi«
hLj
_ {6;
5?
7ybuMv ù y,L
f gR
u
v ù}|6OLnOoGy<
`ed
E a
g>h?CW
5
u<vÄù|644n4o;47~¶Oô
V
fa V
ûL
Y\ýCö4ù6µ
a7I76«
°J
`4a
a I
~y~¡
g9h
1.4 o]354+mqnop u4ve`
µgfL@
w4x
nOoGp
g
;L7944nOoGyMs
° y 5 C?
¿ ; 5
O
qWrLs+
7R¡¢;
w6²G`<F
¡
[^5£
¥¤
V ³ F
¡¢;
w ý `
g9htj
_ { 5
4
qOrLs
@C47§¦<ý
C
v¨
HOË4Ì
j
KCE<©ª"K ¢
` ý 5
ÂÃi7e
k E a~_
y«~"Ki;Äý aTb6c
¡ dW_
hOj¬>
5W6
q4r~s
@ U
³´,µG¶
·-¬
¬ ;
} [ 5 q4rts
Ñg@ 16
½6¾<¿L`
L
qOrts
p g
½6¾
L
qOrts
(Parallel Virtual Computing)y,ÂÃ
k E a gih
½t¾
6
qLr~s
@>Ù Y p
g
õ³¯®°Lö4;t7IJg±
²g³
k E a g F F ¡ g _ { 5 » ²
q4rts
@Ù´
f
gIhµ¶
¿4`T½6¾
L
q4rts
@Ù´ep g
õ"³¯®°Oö
KïEG7
5
PVM(Parallel Virtual Machine)[3]H MPI(Message Passing Interface)[2]
5
OpenMP[5]
`2h
y~¡
g9h
1.4.1 PVM(Parallel Virtual Machine)
PVM(Parallel Virtual Machine)[3] 7iL q4r @R>
_
{t
õ"³¯®°4ö
¡ g9h
öuù·t?¸Gµ¶XùW
S?¹T]
ËLÌ [13] tu§ºµ,y[»y¼
`ed
E½?¾ª
k _
õ³
5
Linux,Windows,BSD
`7hÀ¿
C OS
Y4À"K
5
ßO
L
yÁÂ
¡ g9h
PVM @MÃ[
V ³ µi÷6p
g 5<U
³|´Iµ~¶,;yLB
k
_IO
6
qOrLs
@
BC
9O
qWr6s
KCEM«6tp
g¬ y ÁRÄ
gt}G
; ` g>h
PVM;yÅ"K
_
nOoX7<ÆgÇtRz [ ¡
g>h
• È qWr òÉ;<Ê z{ËÌy ý nOo
• ¡¢;yËÌ
w<a
Ô9Õ@Í sÎ
r
nOoGp
g
• Q4o
¿
;yÏ k _
qWr6s
@C
d
E,nOop
g
• nOoA@D>
1.4.2 MPI(Message Passing Interface)
MPI(Message Passing Interface)[2] 7IOÐ\ 6I
V6§
guGC~µ S s
<@
²³
p
g¯ÑÒ
TÓ
¡ g9h
1995
3 ; MPI õgÔiµtôiû~;
} d E ÑÒ
k
EÆ Ä45yÕ
ý yÖ×y?Ø
K|EÙ [^5
¤,µ+Ú yÛÜL<;JÝ k E
a
g9hq JÞ
;>6
f g
Ö×
KCE~7 MPICH
`7h
y~¡
[^5
ô?ÃgßLôùeOàO÷
94
¡ g _ { 5Èáâ
@
ÔMãäM«L
f 5
L6óOô<å4yMæ¢
aç
dWµèé,óIyM>ê
g
,yM«ë
¡ g>h
MPI;RÅK
_
nOo7MÆÇ~Rz [ ¡
g>h
• È qWr ËÌ;<Ê
5
z{ËÌy w<a
n4o@9p
g
• ì C
`
6IZe;
},g wLx
n4o@D>
• ùCöI÷éfMÃOûin4o@¯>
1.4.3 OpenMP
OpenMP[4] 7;rts7uvùA|L
qLr~se
a m|k
5
6VW
¡6VgW
ígî
C µ V
¤Oµ
ÚZ@t
f g a
«ëGy¡
gIh
OpenMP 7 MPI ;MÊtE[uMv"ùïö~¶i
V
t4µ·ªù
[ï
yð ý ` gyñ
Wy¡
g
5òó`
u?v"ùïö~¶I
V
y~¡
g
ttó4ô,û
7 5
MPI y
w6x<`<g
y
Õea
h ¹
Öô;
d E a gyõ
7J¡g¢;
`6a
y Linux 6tT
V @ U
³C´Tµ~¶Rö Þi§í
¢G¶4ô
V
f÷Oµ/Ú ;yÖg>ª>
g
OpenMosix[11]HöøùªúGyû
] K _ü
LLnLotËLÌýL=þgÿ
¡ g
Ö6nLo½?¾
s
ÙX;WE½¾A
k
_
Linux¶Oô
V
f,µ qWrLs
ü
O6Ló4ôiûÖ>VW Score[12]
`2h
yt¡
g>h
1.4.4 6þ
O
qOr
ë@
¶
1;Gp h
1 "!#
PVM MPI OpenMP
Í
sÎ
§ ;
},g
½L¾
4
qWr
± $W±G $O±
%'&)(
Å
wea
ð a ð a
ue|~µ
S
z{~O¼ ð x w4x
ð x
Í
sÎ
§ ;
}Wg
½4¾
O
qWrLs
7
jTk~ik
<Ã
¿ ¢ m
~Ly
d
E"ý g>h
PVM7yÍ ÎLqOrLs
U
X³C´Iµ~¶
@GÃ
¿
KïE,À
Y k E a g
4;wÄK
5
MPIH OpenMP 7gu<CGµ
S
X*2a V
û KCE,À
Y k E a
g9h
+ ; 5 %'&,(
X7
5
PVM 7
½6¾
4
qOrts
;6tiª @¯É[ê _Ä[.-
K
_Ä[
p
gG¬ y f g y 5
MPIH OpenMP 70/4Ê
¿
;L7
ÁyÄ<`6a6_
{ 5
PVM y
wa
L¼@ï
d E a
gIh
%1&2(
7 (03
¾LP
¦
4
3
@|Ï6ÐG¤
£
;5[ê
g
4¼
¬ ¡ g9h
uGC~µ
S
Rz{~O¼G7 PVM7RÍ sÎ
§
z{
`7h
)6tµ³^p g _ {
<¸GµJº7ªbÚ^yt¡
g y MPI 7yz{ <;>®ë~y'8W¢
k E g
{6; PVM;JwÄK|E MPI y
x
`Gd
E a g9h
9X;0:¸
_T½t¾
L
qLr
VgWª@>Ù´<p g§
õ³R®°4ö6»
7 5g
MPI yt
`d
E a
gIh<j¬
ÊË~Ì
7 5
MPI @I
a g
ÊË~Ì
7 MPI <Öt× K>E
H<;
ý a mCk
E a g
MPICH2[6] @I
a
gTh
MPICH276öguùD·t6öLµøt
¹i]
ËLÌGy?U<=Ö×
K|E½?¾"K
5
J±
2
µ V
¤Wµ/Ú @">'?"K
_
ôÃgß
ôXù
¡ g9h
ÛÜ"KZHtp<O@C®L¯"K
_ À [ ;
`Gd
E a g _ { 5@)A
;yÛÜyM>tã
k
5B
¥b»O
í A7h
<à2
C
IOåa9
«6tp
g~¬ y f g>h
1.5 DFEHGJIHKMLON
P'QR2S2TU
MPIV0W2XZY[\)]Z^_`'V0abZc0dfeg"hji'k<lmnoc0dpYq,r)^0si'klmnoc0dJe
T
tZujvwZx2y<z{
G= (V, E)|}Z~2_Oej
U
GVi'k<lmnY"Z`2^cd S)
^s |V|=n
U
|E|=mViklm<nZcdoaFgh
U
PrimT O(m+nlogn)U KruskalT O(mlogn) U SollinT O(n2)
V'0Oo,Y"fg_ [1]so_ U SollinV'0O<F
TU
CREW PRAM SU p'
O(np2 + log2n)¡'¢
Sj£M¤.¥<¦
Z<|§H,^ [1]s
1.6 ¨H©«ªf¬®°¯
PQ<R1S)TU±² t³´
Yµ¶ghr1^·<¸
¥¦¹º»
VW1XZY[\']2^s·<¸
¥¦¹º»
Y¼<½)]2^)¾ {¶¿
ÀÁ
T
MPICH2 YÂq)]Z^s
PQR
Ã2Ä'^[\ÅÆHegh T0U
MPICH2 Yq2r<h·¸
¥<¦ÇÈ
Y¼
½Hg
U
MPI
S
c0dY
£
r_Oe 1É
SÊË
g_0ÌÍfeÏÎ<É SÊË
g_Ì'Í SÐÑ
gh UÒ
V0Ó
´ UÊ
Ë
¡'¢|ÔÕOÖ1_ZY
¹<×
]2^s[\Y"ØHÙ"_`V<cdfegh
T
ikl<mnZcdOY"q2r1^s
1.7 ¨MÚfÛHÜݬÞMß Pà<á<â
V¼ã Tä'å
VæMç S1
^s 2è
S)TU"¹º»U
MPICH2é
ÒêPQ<R
Y"ØHÙ
_2ëhÂq°g_
Ç
Èìí
Yî2ï
U
3è S2T0UPQR)Sð
ëj_cd)ñZòV
£
ÆOZÏ'órhjî)ïZ^s 4è S2TU¹×ô<õ Yî)ï
U
5è S1TU¹<×<ô<õ
ö)÷rhø0ùpYî)ï,^s 6è S1TUPQ<R
V
ô<úU
Ãûüý<þZV0ÿdpYî1ïZ^s
2
2.1 MPI(Messe Passing Interface)
MPI (Message Passing Interface)[2]
T
1991
²
¹º'»
¢'V," æoVfeghpÖ
¥
¦¹<º
Y'q1]Z^_<`1VpÖ)_
S)
ç! #"OY$,]&%)e('
^s MPI
T
Î<V CPU|()
à Y
*,+
¿ ¦
Fé2^," e<g"h.-/)]Z^%)e
S.0123
Y"ØZ~)^)û,Ù],^0s MPI V& 4<Â'q S
^Je<g"h
T
MPICH |(56 S1 ^0s78':91q;=<(>é
Ò
,û^@?! V,|(AB2],^0s_
z
+C
z
EDF;
S V
¥<¦
S1
^_`
UGEH
YjcIJq S
U1
^
Ç<È2S.3
ã¶g_'
y<z
<|.7ZV Ç<È2S
'
23
]2^%'e|KEL
S
^s
wM S
NOÖhr)^ MPIVPO,éEfegh
U
MPICH2[6]ñ LAM[9]
U
OpenMPI[10]Q)|
^s
MPICH
T
MPI YP,]o^<_`)VZ¾ {f¿
À<Á
egh Argonne National Laboratory[6]
S
°Ö02_s
2005
² T
MPICH VþRHeg"h MPICH2|(Ö2_js LAM
TS ¿
&>.TUVVEUXW<EYZ [
2 ]@^_a`:b@cdfehgjiPklnm
oEp
¿
PC C PC1 C PC2 C PC3 C PC4
OS Windows Vista Windows Vista Windows Vista Windows XP Windows Vista CPU Core2 1.4GHz Core2 1.4GHz Core2 1.4GHz Pentium 1.6GHz Core2 1.4GHz
RAM 1GB 1GB 1GB 512MB 1GB
Q1Rq
| 3 ãJg_
{
@ 1V MPI
z
+8C z
S,
^js MPICH ehrr
Us
t=<YuJghæ°YØMÙ0V S<U
MPICH
Ð
ïhæ)|vw<é)^0s OpenMPI
T
Open MPI Team |Hgh1r2^v'W)XxZ y°
z <
yz
+C
z
êsxW{aZa|E}8~ a
Q<R»
y8
¿
@ Z2ûëhE.apÖh'r1^, ,<<¾
p
MPI-2 YjE¶ghr)^s
2.2 X
PQ<R1S)TU¹º»
5É)Y 100Base-TX2ûZç LANFg MPI
ÇÈ
Y"¼½)],^s
PQ<R)S
ÂqFg_
¹º
»
VW1X,Yj 2@¶g
U
1
PQ<R1S
ÂqFg_·¸
¥<¦¹º»
V¼<ã
Y:)]s<_
U0PQ<R1S
Âq1]2^
¹
º»oTU
OS egh Windows OS Y"q2r1^s WindowsoV OS],^V
T
7EoV OS ûZç2|avZr
S'
^s
2.3 MPICH2¬=
P2S2T0U
MPICH2V + < p
¿
¶e
ÇÈE
ó'r<hjî2ïo^s MPICH2 YÂq)]Z^_`'
T0U
MPI Y
¼<½,]Z^"l,h)V
¹<º»
MPICH2 Y + < p
¿
j (Install)],^@¡
³ |
^0s MPICH2
T +
<[( ¢
¿
V MPICH2V ÀÁ C.£ [6] Ã1rh
wM S¤¥
Ö'h1r)^<V
S
Â'q1]Z^ OS 0ÍfÙ('V)Y>
À
<E §¦
g U U òV
{x¨
+
YØ2]Z^%)e,ûç
U + < p ¿ z
|©
2
g 2ª
+ < p ¿
jÖZ^s
PQR2S)T
2010
²
12«¬BV Windowsq MPICH2ViV®
S1
^ mpich2-1.0.6p1-win32-ia32.msiYP¯
¹º'»
> À
<j( !¦"g
U
C:° Program Files° backslash MPICH2 V
å + < p ¿
0oY"ØOëj_s
+ < p ¿
|(±
²
]Z^e U ¯
¹<º1»
V MPICH2 V *x+
"V ^
{³
&>aHgh Ç'È´
OV PATH(”C:° Program File
° MPICH2° bin”) V$
YZg"h'Ã
¤ ¡ ³ |
^0s PATH|æFëh)r,^j
Ò
ÙYµ,1`2^<
T
S
Wa¶
<=¦Ï'<
¿ S
”mpiexec·)eW¶&<¸¦¹'ØpÖº2_ej
U»
V¼½Y¾2] Usage Z, |°Ö
h1r2^
Ò
Ù
S.¿8ÀS
^0s<_
U
Windows
S
MPI YÂ'q1]Z^"Ì'Í
U
MPI Y¼<½,],^l,h)V
¹º'»
@Á
ËÂEÃ8Ä
Yj)óÅ(6)V(Æ À < ¿
YnÇ,`
g U ¯
¹º»
VÆ
À < ¿ T
ÅÈ2Vy pÉ
ʦÏY
]2^
¡ ³ |
^s,_
U ¯
¹º»
PË5 {³
>Y
3
ãFghÃ
¤
%'e SU
Ø {8¨
+
,VP/oÄÌFgjYÍÎoØfÙ
%'e|
S
^s
2.4 Visual C++2008Express Edition ¬=
P2Q2RoS3
ão]O^
¥1¦1Ê1Ë
YØ Ù MPI 2
y1z
TU
C++
GH
Yqro^s C++
GH
VW8<@y
+
T
Microsoft ÏpV Visual C++2008Express Edition [8] YÂ)q,]^js,)
y'z
{<
y
Y]^
_oëjh
Visual C++ MPICH2 YÂq
S
^'û)Ù
E
g"é'Ä,ÐéOé<rsJ
U
Visual C++
SaÑ
V
1 ÓÔPÕPÖ@gjik×FØPÙ
ÁÚ
¿ Y 3
ã¶g U,Û
02
z=Ü
<
+ < Ú
, ʦ
{8¨
+
°e
z
+C z
{8¨
+
oY MPICH2
{³
Ý>
^ lib e include
{³
>Yn$
gßÞàOY"Ø2éOÙÏso
ÁÚ
¿ V
)S
a<Ƽ½)VáEA {x¨
+
YnÞà)]2^
U
Þà)],^áEA {8¨
+ S1
^ mpi.lib YjÞEà2]2^s=%F"V
E
Y"Ø2éOÙ%'e
S
MPICH2 2û
^
¥<¦
yz
{(<
y
|aâ2Xpeé)^s
3 ãåäæèçêéìëîí ïñðóòõô÷öøúùüûþý
3.1 ÿ
^ yz{
G= (V, E)Ã1r<h
U
GVl2h2V
(u, v)∈E (u, v∈V) 0a¶g"h
(u, v)|(AB2]Z^é
Ð
(v, u) ':AEB1],^,ej
U
G Y
w,x)yz<{
erpÙ s]é(I
U w,x)yz{
e
TU
¯ZV¶e<1|
Ò
S1
^jZYogér y<z{
'
^s %jV2û,Ù"éOe
U
'VU
ª
¬
S2T
¯pYj¬,],^2F
'Y"!pëh
U
ò<V y<z<{
YnE¬2]2^s,_
U
yz{
GjÃrh
U
ñ
@<EQ2|$# ç&%0h°ÏZ^ÌÍ
U
tZujv
yz{
(weighted graph) _
T z
;
v y<z{
(labeled graph) e(')s
tou
T0U
VÌÍ'
ç U
_*+1ñ,*+
¦1S1
^%1e'
^s<$-ZV
wZx1yz{
e
t,u0vOyz{
V.ÅZVW/Yjpëj_8'0V|
t
u0vw,x1y<z<{ S'
^s y<z<{
G|
t,u0vw,x)yz<{
Voej
U
GVl2h1V
(u, v)∈E (u, v∈V)aFgh w(u, v) =w(v, u) eé)^s1_0og
U
w(u, v)
T
(u, v) V
t,u S'
^s
3.2 132546HKMLON
i1kl'mnÝe
T
tujv'wx2yz{
G= (V, E) |}~°,_Oe
U
GV0lZh,V1Y798 GV;:=<nOVOÙ
U<
V
tou
V;>?2|ikZé yz{
S)
^0s1_
U
i'k<lmnoc0dfe
T
tZujvwox2y<z{
G|j}o~p2_e
U
GVikl<mnOY,`1^cd S'
^s
ikl<mnZcdOY
£M¤
OZé'ZOe<gh
U
PrimV0Z<
U
KruskalVZÏ
U
SollinV
ZÏ [1]Q)|
^s< |V|=n
U
|E|=mV
t,u0vw,x)yz<{
a¶g
U
RAM
S
PrimV
ZÏ
T
O(m+nlogn)
U
KruskalVZÏ
T
O(mlogn)
U
Solin VoÏ
T
O(n2)
S i
klm<nZcdOY
£Ý¤
%1e|
S
^s_
U
SollinV0Z<
T@A
V
´B
YnàZ~1^%'e
S
PRAMV
¥
¦
0Z<1j]2^%'e|
S U
CREW PRAM
S
p 0p
Y"q)rh O(np2 +log2n)
S
iklm<n
cdpY
£Ý¤
%'e|
S
^s
3.3 Sollin ¬DCFEHGJI9K3L PQ<R1S)TU
iklm<nZcdOY
£Ý¤.¥<¦
0Z<pegh
U
SollinV0oÏ< [1]Yq)r
U
MPI
S
yz
.Fg_s
ä'å
Sollin VZ<Oeò<V
¹ºM
jó'rhî)ï,^s
SollinVoÏ
NPO
:
t,u0vw,x)yz<{
GV$QØ
¦
Ws W V¯
³R
Wx,y (0≤x, y < n)
T
O
Px |,S2]2^s
T O
: GVikl<mn T VUQ.Ø
¦
Cs C V@¯
³R
Cx,y(0≤x, y < n)
T
O
Px |,S)],^s
step 1: ¼½
¤¦
W Y
3
q
¤¦
W0 WY. Zg ,k= 0 e],^s&%V
¹ºMoT
VoVW¼ZV_<`
2¡¢
S'
^s
step 2: Q.Ø
¦YX
³PR
|
^¢0Ä
U
step2-1Z 2-3Y&[Mç]\)]s
step 2-1:
¤¦´
k 1Ynà,~)^s&%V
¹ºMoT
VZVPà
º
é'V S.
2¡'¢
S'
^s
step 2-2: ¯') v ∈Vk <Ã2rh
U
v QEo]^
(v, u) (u∈ Vk) V^i!'"kFÖr
{(v, m)|w(v, m)≤ w(v, u) (u∈ Vk)} Y_Ýg
U
) m Y v V$` p[v] e'gha
v 5 xUb
Y¼1ãZ]^js2_
U
%Vpe
(v, m)Ãû0ü (m, v) Y 'qJ p Lk @ào~2^s T'k YØZér ],^ Y(cP<
j],^,e"rOÙ
3
Y lognd$[Ýçe\)])V
S n2
log2n 0p
S
O(logn) eé1^s step 2-3: ¯ v∈Vk Ãrh
U
r[v]Va¶e"é1^ r[v] Y"_2]s=%0V
Ê<ËoTgf
+
<([(Ph<Y<
y
Y&[
ç]\2]Ý%1e S<S
U
1d1V
f +
<[h<j2ûZçea
S
Vij2|$c<Zé)^s¶g_|ZëhÝ%0V ÊË
Y
logndU[Ýç]\2]1V
S
%0V
¹ºMoT
n2
log2n 0p
S
O(logn) eé)^s step 2-4: ¯ v∈Vk jÃrh
U
v Va r[v] v P1]2^"l)h)V
(v, u) (u∈Vk) V
tZu
Ãûü u Va r[u]
s
[Y"kZ`1^sÝ%Voejn¯E5 xb
VaZk,`pÏ1_
s
[Yl)¯E5 xb
Y 1ó1V¶e]2^
y
z<{
Gk+1 Y"¼<ã1],^s
¹ºMT.s
[<Y&k,`)^_`'
T
2ó)V
s
[<Y ÐÑ
]2^V SjU
¡¢
T n2 log2n
O
S
O(logn) eé1^s step 3:
3
qf
p ¿
Li (0≤i < k)°
£ Ø ¦
B Y
3
ã)]2^s
¹ºMoT
¯
Ãrh
md'Va6n2V â
o
~2YØfÙ"V SU
n2 0p
Yq)rh O(1)¡'¢eé)^s step 2 V[Ýçe\¶g(d0
T
O(logn)d
S1
^V SjU
Sollin V0Z<
TU
p0p
CREW PRAM
S
O(np2 + log2n)¡¢
S
ik<l<m<nocdpY
£Ý¤
%'e|
S
^s
3.4 1325465pMLONrq sut MPI vwx yL
PQ<R1S)TU
MPIVW1X,Yz{)]2^_<`
U
SollinV0oÏ<,Yl, MPI
S
ikl<mnZcdOY
£M¤.¥
¦
yz
2Y C++
GH
Y"q2rh
3
ãFg
U
1ÉV
¹º
2û^
Ê<Ë
e U
ÎoÉ2û^
¥<¦¹º
)û^
Ê<Ë
e
SU<ÊË
¡)¢1
Ò
9|
Ò
V;},|,~0^j,V['\pY"ØÝÙs vP
A
P1Q'R,S3
ãfg0_ MPI 1
yz
ZY
)]s
PQ<R1S3
ã¶g_ MPI
y<z
TU¹º»
VÙ 1É)Y oEp
¿
PC eghq2r1^s oEp
¿
PC
T
¼½°e
é1^
t,u0vw,x)yz<{
G Y
3
ãFg
U
GV:<
y<z<{
Yj¯
C
PCE¢o
¿ É Ú
Yæ¶gh.-)]2^s C
PC
T
-Ö2_
s
[0a¶g"h Sollin V'0O10ö2÷o
Ê<Ë
YØ,r
U
òV
Ê<Ë'ô<õ
Y
op
¿
PC \-
]2^s oEp
¿
PC
T
\E-Ö)_
ÊËX&
y<z<{
Y"¼ã1],^s
ä'å
PQ<R)S.3
ã¶g_ MPI
yz
'jó'rhjî1ï,^s
[iklm<nocdOY
£Ý¤
MPI
yz
(
¹º»
kÉ )]
NPO
:
w
gs(¼½e"é1^
t,u0vw,x)yz<{
G
TU
yz
ØU~ãpÖ,^s
T O
: GVikl<mn T VUQ.Ø
¦
ansewrs answer
T
op
¿
PCSEpÖZ^s step 0-1: oEp
¿
PC
S
¼½e"é1^
tZu0vw,x1y<z<{
G Y&~ãFg
U
Q.Ø
¦
top eghUSE)]2^s
step 0-2: top Y
oEp
¿
PC C PC @-1],^s=%0Voej
U C
PCl:o top e Z
],^
s
[
Yn-1],^s,Yn-1],^s
step 1-1: op
¿
PC Jh- "o_
s
x[f <o|3%]^2°Y$`o^js%0
T
for& 2)V for(int tantou = (size*myrank)/numprocs ; tantou ¡ (size*(myrank+1))/numprocs ;tantou++) F O
^0smtantou = )|,F%j]Z^"' ,size ='< , myrank = oV''
, numprocs =
O
, ò,%"° i'
V t,u
|jkOÖrx'V'Y"Zü;SA1]2^s
step 1-2: SEA¶g_ikZV tZu s
[<Y oEp
¿
PC
s
[<Y&\E-2]2^s
step 1-3: \E-Ö1_ s [Q.Ø ¦ ansewrV
úË
?Y,e^s
step 2-1: ò)VoO
Y"# ç] ç f +
<[h<j],^s1_
Uf
+
<[|Ã$9P-3
ÍOëÌÍ,
,F
+
´¡
¢