Blocking and Array Contraction Across Arbitrarily Nested Loops

Blocking and Array Contraction
Across Arbitrarily Nested Loops Using Affine Partitioning
Amy W. Lim
Shih-Wei Liao
Monica S. Lam
Computer Systems Laboratory
Stanford University
Stanford, CA 94305
!"#$ # %
ABSTRACT
&(')' *+),-."-+)/"0"12*34%)))#5)-674 ' 89 ' "-/- :;< ' "-:"=")!"-.0->?"@A"-BC-D0
% )/E.41 ' "-FG% 1 ' "- ' *#H4 ' ")!"-.-)
8 I
%)# ):H% )G# % ?0"J")!"-
KL% M
KEM
7"-# ON : ):6#P0-4$"-"#"-): & :"-/-D)8+*#Q,9R)
' "-/- :D*FSP+T5D 0@U-V+TQW$O-FL" ' "X*I
-2)#YV% )*0-)X*-87Z[D) ' ' " ' "-4-
:"-/-D A-D0[ ' "-0FS(#)0Q4/\1.%) :V09) ' 0"-- I
: ] 4BG):^#_0""*1_4"-;0"-\@A^ ' "4V ' -/I
X*0-)-D)D)0F2+T`D)*@Ua-^+T2%)OL%)UL"Y#)0bI
/\14 ] 4BG):c"--Y^O.Q) ".4 ' Yd-D0Y#)
+"-% :D4Q4-Y-D Je-"fFSQg-D)f"12D)""-D41H*
+T"-% *#8 & ""1^4"-c"-*#%)Jc""1b-<2"
F"-+),)#Y-D)O"-+41"-*# % [-D)% V+T"Ah"1 ' "I
-)(N% -#5)#-D)"1.L4 ' "-4*[i84 ' ")!"-
0"-,!-2)-"1-R.BS+)4OBG):R#5""154"-
' +)
] 1C+ "- :):c-D H!%):)O"/\1jV09) ' "-/-) :_-
+T"fd-D) ' "-+)2
M%",4*/\1b:"-/-D)k*dE)#d"-
4"+)^""1-D ' "-FG% /1 ' + lZ[D ' ' "
:)"Xm-D)7 ' n +)4B :6#QD)*@Un-D)m9 ' "-/- :_*@U-D)<+T)E -,+)4BG :c+T2"-*X#C
0"-+)/""-/1C -*#`4 ' poKN ' "-4U"-%)/-.jbG% RI
+TO"g+T)D)."-BG()#<R ' -,V%)/-:"-#< ')' *0-H
"-)%-J#*-,-D0f9 ' 0"--)):2,W$O-F
' "-
1.
INTRODUCTION
& 9) ' 0"-/-)):6h ' "-:">")!"-p?"@A"-BP-D0
( ' ' *+ ,-V"-+ "0"-15)-#4 ' 6#209)P""12I
*q/r0s4
Vr*t0uvxwA)"-%)O-% ODj.)# /-0-4-
#C Iy09)d<0"-^:)O"/1jD# *#C+41`"-*- :
wA% ""-4-/1.@U-D5z\4-${6*"-D2<|4wA"G
$w[/L"-)
Permission to make digital or hard copies of all or part of this work for
personal or classroom use is granted without fee provided that copies are
not made or distributed for profit or commercial advantage and that copies
bear this notice and the full citation on the first page. To copy otherwise, to
republish, to post on servers or to redistribute to lists, requires prior specific
permission and/or a fee.
PPOPP’01, June 18-20, 2001, Snowbird, Utah, USA.
Copyright 2001 ACM 1-58113-346-4/01/0006 ... } 5.00.
-D)x "-F0-FS/14hz\J-D)KG# e
S )gM-G
"-f# 4-/E#5+41-D f4 ' )# N5F% (K-D)/"6% ""-%)#):
4 ' [#_9 .N ' "- "-Y%)#~-H. ' -D)Y"-:)
4 ' )# NcF% V-^)@)# N~F% R`-D ")L"-*#
G# & ' +)bV+ )- f.41 ' "-FG% 1 ' "-I
' #^" L"-Q %# :2%) G#%)"")!"-
ML%)M
EM
)"-)# N):
)): T#-4€"-"# "- :)q un*
+T(N ' "-*#[09)U" L"-h‚bUD*FS(# F ' *#./I
:"-/-D)ƒ-D6E)# €-D)f+T9 ' "-/-<-D0.0N X
-D)6# :"-6 ' "Y ' "-:"„@UD 6)X):Q-D)
# :"-~R1)D "-)X*-nq/r0s*u…†‚bcD*FSbjD)*@U‡-D
9R) ' "-/- ):dV%)!%)A!")X):<V% )*0-
+Ty@[ ' "-4"-*q/r*ˆuv
‰ *@AFS"*
-:K*+) ' "L"-. [V6J%)/- ' "-4"*
"FS<D :D ' "!"-. fH%) ' "-4"*
8@AJJ%)( ' -/I
XJ!"Q-D V"12D)"0"-OD41Hd-D V.D) VŠ241H ' I
-X*- D)0Ff+THGFSG-#-. ' "-0FS,d ' ' *-M‹ "1^% +)1- ' "!"-.)<ZA@[ ' 0"-%)"-/1c ' "I
4€-D) 3G% U"-,0""154"-H#Y+)4OBG):
& ""1.4"-Mq ˆ
)t
8r )Œu8@€€GFS4-*#-fD)# Q0"I
"1. "-%)-€Y):%:U%)DYUŽ)""J# ‰P Žb?I
L-FS/147Z[D)U!"-GA#Rm, ' "A@A%)#R\1 ' /1R" I
-6*D.""1 ' "-Y4-JQ4 ' )#R%)U@["-B""1g-
D)# ' 0"-?8-O"-€2""15ON ' "- g‘"-(N% -2
%)D ' "-:" ' "L"- ' 4"-/1,V0"-OD --% "-M@U-Df*OD ’ K 1f0"-A-D)O"-["-g"1 ' "0-)
S-D g@A"-BG):O
A-D) ' "-:"†:O-Q+)::"*
n-DG%)6"-*# % ):-D VW$-FS)
A-D)R*OD ] 1H!%)):5-D 4 ' ,-:-D "f-D),FSO"1
4-D @["-B`""1_#E *#_)#`% *#_@U/-D `-D)
-(/-"-M
G-D)(-(*0"UF0"-?+).+T6% *#R-JD #
-D)F% Um-D Q# /W$"-G(0""14-€ % -FS14 & /I
4*- :f-D ("€F"-+)(-,P"-:-"A"-*#%)g-D)UG%)J+T"
7"15 ' "-)PN% -*#<#5-D)Q@A"-BG):.PXJ
-D) ' "-:"2
] 4B :j^a-D) 3G% c@[JB *@U>-jG%)"-*V0I
/1-*q 0uv†Ž)"H#)0a4*/\14
,/< ' "-L"+)b-;# ' b.0"-N_ ' %-`4-c%)+ ."-/N~*%)- 6. ' I
' #<-R"-*@“#2%)2 ' "-)Z[D),XP7-D Q%)+I
."-Q"-JOD dY-D)P#)LO-OD *#d4-L-",F
U"1HD)"0"-OD41b"-"-% *#b+T!"--D)1b"-Y# ' *#$
Z[D)[ ' -X*-Y.+T ')' *#"-%"-FS/1R-, ' "-0FS€-D)
' "!"-. Vg"-:-"-
M*D)
' DG1*h"-
$"P-D)
" -<4B#f+ % W$"-
Z[D) ' ' "7D)*@Ug-D)g""1J4"O-Y#J+)4OBG):*
+T-Dj+T)E 5:"-*-/1C?"-”9 ' "-/-) : –•% " ' 0"/I
X*-~-D) 3G% R+*#cc9 ' "-/- :<V#"--/1
')' *+)H-a0""1CG"-8–Z[D d:"--D ”E)# -D +T.9 ")L"- -D0R ' "0-R-D)Y ' % 0-_
' "-:"x4-(-D A"-:7% V+T"n))# ' # GM-D "-*# & 8"-0-*#Y ' "-)("-P ' -%"-*#Y-D -(-D "-*#8
G"-%)I
):-D A-D "-*# K*34%)G-/1f ' "-7-D [F["):7-D 4-mf-D g@["-B,""1
.BG :U ' +)A-U"-*# % g-D 0""1 K-Q*?0"[F"-+ Kzyg, ' "-0FSm- ' " 4*/\1
:("-0-*#J ' "- m-D0h:D4m+Tg*-"-#J0FS"n.41
4 ' (Y-D)P% "- ' "-:"2 & (09) ' "-/- 60"-Q*34%)F4I
4-.mV+ -)(7%) G#%)"U")L"-
TL% M
E)M
€"-)# N):
[* : (#a0-4R"-"# "- : U%"
:"-/-D Q"-fW$-FSf-D ' "-FG%)-OD )34%)(@UD)OD
% Q 15V% +)UK%)D" L"-
"-%)H- ' -<D*FS^+T>.# d-;:)"X`+ 4OB4I
:a+T1S#C/-"-:f# .j ' "LO24 ' )-„z\
-D 6"-:$!"-J%)-YM+)4BG : G% )G# % ?0"g")!"-
0"-VE)"-Q ')' #H- ' O"L-/1d)-*#d4 ' -Y.BSf/ q Œ uv & 4 ' ).RL% 1 ' "-J% +)5/Q(-D 4 ' h*f+Tg"-+ /""-/1 ' "-V%-*#6@U/-D)% mD): :€-D)7"-:I
) ' "-:" .G-l•)^~4 ' )25.# HL%)/1
TI
' O"-V% +)
f/bH"-FV-C+)4B>-D ~4 ' )* & #))4L% 1 ' O"-V% +)74 ' KPD)h0h*
Vr
#:"-6 ' ' )): ' "2g‚cQD*FSP# FS ' *#2</I
:"-/-D)“-D)hVON"h!"- V"-+)/"0"-/1f)-*# ' "-:"
-D ["-:A% -"-hL% /1 ' "-J% + [4 ' K%)):P9 ")!"-*q/r0s*u… & D)*#POhenD*FSgP#FS ' #f€D % "--
' "-4*#% "-Q-D0(E)#(% -"-UL%)/1 ' O"-V% +)P4 ' -
\@AQ- ' n-D)€E)"-7-% "- A0"-+)/""14 ' -74-fPD):D I
#)) ' "LO24 ' )0qr
Œ0uv
P#a-D j%) G# %)0"
-OD )34%)J"-Y%)*#c-<"--!%)/1 ' "-J% +).4 ' )-
Z[D R ')' "-DH \%)+)4OBG):.L% 1 ' O"-V% +),4 ' )-
D *@[FSO"*
h# *34%0-KŠ5 ' "-:"m) K+Tg.# gG-
)UL% /1 ' "-V%+)U4 ' )A+ % g*-+T E)7!"- -D ) ' (m+)4OBG):
] 1a:):b+B~-^E "- ' "-) ' [@[<:)"X2-D)2 I
-5m+)4OBG):f-J.BS/(#"--/1Y ')' +)P-V"-+)/"0"-/1
-*#54 ' UŽ)% # 4/14
G+)4BG :*5+TfFG@A*#26
4-"-**FG):H62G%)J+T"f ' 0"[" ' ' +)Y-D"-*#
-`*@ "-% ^fj#)0–Z[D)H-D "-*# Y.*1aD0"-
Y"-*#GI…)/15#)0
"U-D)1.1Y"-#?"-ƒ"(@€"-/-,-
-D -.*OD Y)  "!J4 ' )-,"- ' "-4f-D ' I
?h*f@UD)"-f*OD ' 0"K" ' ' + J-D "-#2G)
)"Q4 ' !h+ 4BG):5D "-V)6-D-D)V/-"0-)QA-D )".4 ' !"- # /W$"-4R-D"-*#."-24-"-**FS*#$;zy`-D ^@UD "-H-D "-*# Y4 V% /- ' d0-4-
(+)4B :
4-"-**FS-D 5N%-;Q*ODa-4R?"- #/W$"-4
-D"-*# ] 4B :*2-DG%)U+T,:)"X#d#"-+ % -
h ' "-n-D % -"€4 ' G)): ' "M" ' ' I
+)H-D "-*# 50FSO"5) "-4-."5))O"54 ' „‚C-D
-D 6:)"X-8
$(()( -0"15-F"U4 ' 6G-
' O"L[)-[+TOL"-6-D)(+T)E -An+ 4BG):f*Y+T("-X*#8
Z[D "-€,FS"1R4-"-- :J4-"-Y+T\@AY""1. I
"-d)#2+)4B : €‚jD "-*6+)4B :R"-6-.G-O"-0F
)# ' )# 4P-D"-*#P-5 D)R4*y14
hc""1dG"I
-^:"-/-D "-6-#
"\# I…4-"-**FS $.# ' #4(-D"-*#
_-D054-"-*#-d#)0_ +T^)% *#;*#?0-/14
‚CD)"-*A+ 4BG):Q.1,"-*34%)/"-UF0"-?+)g4 :QG-O"-I
#-Q# J+TN ' )# *#+41-D)6+)4BX
0""14"-
"--d"-*# % 5-D)2# );@["-B`0""*1-b X
-D J ' %-8‹ P#)0.!4 ' "-4*Q•% "Q:"-/-D V+) -D P# F4:[8-D)(\@Af-D) 3G% A+41RE "-[ ' "0- :J-D ' %-Q4-€-D "-*# $-U)D))K-D 7- ' "4*/\1,
4-"-*#-A"-% /-
44"-):-D A@["-BV0""*1h@UD)O"- ' I
+)
S!*@[*#R+41J%%)# % K4-"-**FG):PT-D)[)# ' )# 4
-D "-# K-Q)"-(#)0P4/\14
)#VN ' # :PF"-+ 7-
.M""1€@UD)"-Q -0"14
•% "M4*/\1P ' -X*0-Q"-%)8-D)K-K+)A:"-/-D -D0(D*FS ' "-FG%)/1+T2#FS ' *#L" ' "X*0-M ] 1
" L"- :f-D 6G# 6-,4Y-D 60"-:UG%)J+T"7M%I
"- ' 0"J# ' ' )+)d-D "-*# -D c:"-/-D ' %€-D)PG# Q2V))*ML"-l@UD)"-,8-D PG# Q-
' ' "-% )/-Y"-HN ' *#$ & (-D 2FSO" ' "-:" " I
L"-n0"- ' O"L"-#P+G1(-D)g:"-/-D mzyMM"0-D)"M":D4I
L"@€0"#Q-U ' G80""1PG"-f)#P: "X*#Q+ 4B4I
):~L" ' "-:"5C-D <* )*PL"-2 Z[D)dI
/\1,+Ty@[ ' 0"X*-Y#,4/\1J ' -X*0-V"-*#%)
-D) ' 4-W$"*
Z[D)5"-:S)X*0-jQ-D "-Y-D) ' ' ".YL*@U
‚c<0".@U-D ^D)"4"-G# %)O-;-~09) ' "-/-) : |-)
J)#YV# %)U0""1.4"O-2#.+)4OBG):
"-OI
' -FS14€|O-'
&R# % 6-D QG-O"- 6+TO\@[2-D)
\@A ' -X*0-)(# ' "-4(<:"-/-D -D)(G-:"-
""1fG"-f@U-DJ+)4B : 7|G-Vˆ ' "-4-hgNGI
' "-4$"-% -U-D)*@‡-D)QW$-FS)(g#)J4/\1
' -X- 6+)*#2<9 ' 0"--)):[‚cQf@U/-D<
' "-f@U/-DJ"-?0-*#Q@["-B,#,g %# :("-.0"-BG
2. AFFINE PARTITIONING
‘P% P- ' f)"G-
)@[Q@U ' "-4(D)O"-f)/1Y-D)
- 45!*-%"-2V09) ' 0"-/-)):~-D)5"-H"-F4-
-D) ' ' "*h{(*#"-A0"-€"-L""-#V- ' "-FG% ' %)+ *0-)7L"
"- L"-.-Mq/r0sG
r*tuvaz\`9R) ' "-/-) : €a/-"0I
-_))YR# 4-/E*#c+41d-D)YF%).(-D).4 ' # a) :b4 ' & `9 ' "-/-) :bD).)-
[9 R. ' ' ):
$ VL",*D^ ' "-b^-D ' "-:"2
!"- -D €"-:)T#NVF"-+)g-QF% g8)# NJF"-+ d-D J")L"-*#HG# V• ' "0-)6@U-D^<)I
):J4 ' UD0"-P-D)6-P4 ' # ONF"-+)7zy€ ' + -<%)Y09) ' 0"-/-),-<N ' "-J[V+ -)fU%) /I
G# % "(")!"-
T!%)8
TE8
T"-# ON : $* :5#
-4€"-"#"-): ‚c.D)0F#FS ' *#_`:"-/-D) -D)fE)# ,-D)Y ' -.
9R)2" L"- -D)..0N X ' "=C ' "-:"
@UD),)X):V1 OD"-)X*0-M[•% "6:"-/-D)E)# [y@[
BG# .V09) ' "-/-) b ' ' "-/- 5#;- ' 0"I
-/-)6Z[D J ' ' 0"-/-))::"-/-D) ' ' "- +T :):P-P# /W$"-4K# ' #4h-D "-*# K# /W$"-GK ' : _# ' I
' 0"-/-)VzyA-D R:"-/-D)†% # Q^E)# (
# G% -)Q-Y-D V ' ' "-/- ): ' "-+ 2
M/Q ' I
+)-<"-*0-)
a%-"- ' 0"[4 ' J@UD ./-"- "- ' "-4,-D) ' 0"-/-)QL%))#8Y‚jD)b ' "-:" #4f)
D*FSdG1C)# ' # G.-D"-*#
% "<:"-/-D # FG# Y-D)
' % 0-)€4-,- ' "-/- €%)D-D)€ ' -):f-D)
' 0"-/-)mf"#"n@UG--!1,-D)g#)06# ' )# Mzy-D)"-
"-*
a# ' )# 4P% - ,-Y-D)f- ' "-/- ): ' "-+I
2
n@A*^"-@€"-/-.-D RG#.fD*FG +
: `%-"-,4 ' -D0U"-(L% /1 ' "-J% +) & )
TIy# ' !%)/1 ' "-V%+ (4 '
)U*+T ' ' )#Y-VO"-*-,
-~rQ#:"-€ ' "2
& !%)/1 ' O"-V% +)P4 ' )((+)4B+)
Z[D) ' Q)#Y- ' "-/-) : ' "-+)€0"-QFS*#Y5
?0"A.) "*hZ[D ' "-/- :, "4-A0"-6#"-FS*#R#/I
"--/1P?"- -D)7""1,ML%) - nP-D) ' "-:"“)#-D)
4 ' +T% # & T9R)(N ' "- [M4 ' # €)#R1 RI
+Tf 4-P0"-f"- ' "-4-*#5L/-D !%)/1<H-D , "4-
@U/-D)% 741f7 ' "-8 ] 1f%)):6-D)€09)A!"-x-D)
Ž0"-BA. q s4
ŒGrOu…
G-D ' "-+) "-*#%)7-,FG :ffA
)",)*34%)/-Z[D) ' 0"--)):<:"-/-D Q*d+TR ' I
# G€-D"-*#
' #"-%"-F/1-R )"(4 ' (-VE)#Y)# ' 06nFS
3.
ARRAY CONTRACTION
& ""1;4"-jD).+TjD *@U;-~+THc%)!%)(-ODI
3G% L"R ' -X):d0""*1b "-%)-V)#_:1c4-E)
G# K-D0AD)0F[+TR-% )*#,L"gFSO-"7.D))KZn,#RFSI
-"-X*-8
' "-:""-Q?-bN ' #H*?0"VF"-+),G-
0""1 QY-D0Q %-FR/-"- Qd-D V) "-Q4 '
' "-Vd % -FSV"154- J‚jD "-*Q ' ')' *0-)€84 ' !%)Y:D4g+T# *34%0-€L"€""1 I
"-% -< :%):
M ' D -*0-*# ' "-:"ƒ" L"-6*
ON ' ^.41C"-H ')' "-% )/-!"H0""1j4"-‡
:15G# i84 ' L% _DV+T_D 0@U~-<+TY%)!%)A!"R""1~ I
"-Mq ˆG
€tG
6r [Œuv_Ž "N ' K% ' ' Y-D).%"-5
b0""1HN ' "-
5@UD "-V*OD^""1H,
Iy4K""14KZ[D A!"-G7)#f$6 ' "h@A%)#Jy1 ' */1
:)O"-U-D)€4 ' AD)*@UV-D (% "- ' "-:" +T0@QgŽ)% I
:f-D Uy@[,4 ' [.BSg/ ' +)6-,"-*# % €-D)U- ' "0"1
0""1 d-d<*?0".F0"-+)
)
K@UD D_*_ 0@–+TY"-:-"
4-*#$
"!3##$&%46'(57)9%8;#(:*(%&
3(,&#+?1146@#457<5298;A?: B4)CDEB4
(,&IE11@#4<52+?B4)C 3 B4
3+%&#F,.4<5G-5=/AH#0%(9B48>()C:12'DE#(1B4
,&IE11B#4656FC 3 B4
Z[D [[. ' "4 ' "!"-. ( ' -X*0-M7Z[D ' "-I
".N% -fL@A""1b ' "- A@UD D`"- ' I
?15-/1/m-D)1YU-D)QD)7Z[D P@["-BG):O(
+Tg."*
*@U):f-D)O"["1f"-OL"- A-,*1
J:"-*0-"D /€"-
3.1 Our Approach
•%"h ')' "-DJ-6""1,G"-JM-P- ' 8-6"-FSO"-
-D 50""1_N ' ' "-4`•% "R:"--D 0"-R+41~NGI
"-):P)# ' )# 4m-D"-*#m!"-“-D)[% "- ' "-:"x%) :
09) ' 0"-/-)): ] 1~N%- :2-D)Y# ' #4f-D"-*#
)Q0!-"U-D -D "*
-D)FS"):Un-D - ' ""1.F"-/I
+)U)J):"(0FS"- ' gzyY-D P*P@UD)"-PD-D "-#)/1
% [)(4[M-D 0""*14
4-D 0""1*Y+TU"-*# % *#R-f
"F0"-?+)
ZMb% "-5-D ' ' "-SOD8
[)# O"Y.`N ' Y-D ' "-:" +"-/N8
FS-"-X*#<+)4OB"-Iy#?:hFS"P2-D |  ogw[SŒ ’ & | & s^+T)D).0"-BT & CNO" ' ,-D)_r*ˆI… "-% -).VD *@U~_Žm:% "-<r v Odo7FSb-D)%):Dc-D )- :
# ' -Dh-D QG# QF"-€!"-ƒ4 ' -R4 ' $9 ' 0"-- I
:RD( ' "-+) ' OBG):R% (8-D)P)# ' )# 4[-D"-*#
5-D ' "-:"2[| ' /E)*/14
-D ,:"-/-D)ƒ""--/12#-"I
Q-DJg/-"- J@U/-Dc-D)- H# ONbF%)J0"-
"-?0-*#8JZ[D)Q
MP ' +)V-Y"-*-Vd%-"-Q4 '
4) :c€# ' )# 4R/-"0-)
g@UD)"-Y-D) ?-D_/-"I
-2)%#($-D)P ' %- €-D) ?-D/-"-57
-D Q"-:)n4 ' U@U-D5)# N )Z[D)PL(-D0€-D) ' "-:"RI
O"D ')' V-^% 5-D)-)# NcF0"-?+) c!"Y€-D "-?0-*#.-O"- €# /W$"-GA4 ' A.-D)gN ' (.BSA/
1V-QON ' V-D) ' "-/- :Q"-%)/-
4+ % 7/g7)A% *#V+41
-D :"-/-D)k~41H@€14.Z[D R" L"-#bG# n@U/-D~
% -"-f4 ' FG- :<*Dc€-D ' 0"-/-)f*34%)4-/14
(D)*@U5<Žm:% "-Rr e+ O
?J EK
7L
OL
?J QK
6M
NM
PL
Jv?KU|G% "- ' "-:" 3R 4YX?SZST?[\&T6]?5U[^TT!&!V)_8WT0R + R2`
3R3.`6R2a` :U5=5798Wb98Wb
3RGA?`2 a c 8:?5 8WTEc 8 !Vc d58 c GAH a 8:?8ZTV8 c <e6A?B98:H8WTe&98 c N[[[
` 3D RR:+.g S4Y:(fc 5 c !V8 c g Sj3D RR:c +.gb94Y:( fcc h55 7c !VV8 c [ 3 S2i6AHB98B98ZTV8 c
[[[k52A?B98 8WTV8 l 9
g bmD4YX?R :Z+.T?4Y[\&:(f]? [^T!&)_ gR + R2c `(n c c
3R3.`R2`6`a`6c5=598Wcb !E8 c ``(nq
` 3D RR:+.` !Vb4Y:(WfcTV 8^5o?8 cc !V8 a 8 cd5 !VWTE8o?8 c 8 a <e2!EWTe&98^o?8 c 8Bp[[[
3!E<WTV528o?!V8 c ZTV8B8o?h58 c 8B3 (l6c e9!V c WTV8^o?8 c 8 g p[[[
` bmD4YX?R :Z+.T?4Y[\&:(f]? [^T0.)_ R + R SS
3R23.nRGSGn :2S 5=c 598Wcb !E8 c D.<B95G8:?DE8ZTV@98 c 8:?)58W2TE8 Dc 6(l ceGA?9 cg 8:H8WTV8 c p[[[
H
A
nSSj
SD R D:+rR :4Y+.:(f4Y:( f
eJ +s[
K Z8")!"-*#G# 3R 3RSSSS2c 5T25c !VT8 c!V 8ZT0
3.4X?R23WT?`<RG[\a` ]?:57[T57!&9<_8Wbt8WbR + R`
fa 8:?8WTE8 c d5GAH a 8:?8ZTV8 c <e6A?B98:H8WTe&98 c N[[[
` Dc R:9+. A?c4Y:h5
[4X?[W[ T?[\]?[75GT!&A?V<_@[ 39S2R 8 g +i68WRTEAH8 c`(Bn9(l 8Bc98ZTV98 cc
3.R2!V`W`<TV8^ao?8 57c 8 a9d58Zb !VWTE8o?8 c 8 a <e2!EWTe&98^o?8 c 8Bp[[[
``(n` 3D R<:+.524Y:!VfZTV8o?8 c 8B(l c 9 c
!E4X?WTVWT?8o?[\8 c]?8B[T0.h5<_ R 3 +6R eS!VS WTV8^o?8 c 8 g p[[[
3.RGDn)S65:UDE57B998:H8Zb 8WTV8 c l c 9 c
nSSSD R :+rD4Y:(R A?:f+. B94Y:8^f:? 8WTV8 c u52DGe<A? g 8:?8WTV8 c N[[[
vxw^ysz|{9}~Q€)N‚ƒ}…„‡†E}ˆ{9‰‹Š<ŒQŽ‹Š.{tw^„ƒY{9Œ’‘‡“6”6•U–˜—š™šš‘›šœ
Z[D)g:"-/-D) ,% "-K-D)U+)y1V$%"A:"-/-D -,D# ()# /-)$-G- ] *%)6-D ' "-*# *0-[
-D) ' "-:"ƒ"-f09)QN ' "-)UK4 ' ##Y1 RI
+T( 4-
4-D)1J*Y+TU* ' -%"-*# ' "-1VY% "7" I
L"-.-_)"4-V@U/-D % R41cR ' "-M~•)
-D)JG# VD+TH")!"-*#^PD *@UbbŽm:% "-5r e+ O
8/
V*1b-H.-D0R0""*1
Y*~ *@l+T.4"-*#c)
/1c 4V(-D Y""1~R#E *#~)#c%)*#c~*OD
/-"-M7‚j/-D-D)U ')' "-DM
Œ &V0""1 €@A"-Q4"-*#5
-D)4-"-Q+"-/NY"-% -)
ƒLs?
3.2 The Array Contraction Algorithm
EJ sK
] 1d%) :<9 ' 0"--)):5-"-"-%)-%"-V-D)VG# m% "
""1V4"O-.:"-/-D)„ ')' "-A ' [1S ' 0@A"L% eKz\
E)# ):d[-D )# ' )# 4f-D "-*# J~-D ' "-:"2
g""1
' 0"-/-)): "yL% $C-:-D)O"^4 ' <@U/-Dx# /W$"-4< -):
FS
M ' ' /1):.%) G#%)"(" L"-
8E)M
T"-)# N):
* :5#50-4U"-"#"-):@UD)"-f)-"14 & ("-OI
3 #U3 #744<4<5U5U948 49a 8 8;4A4<CGA&e&
3(,#11TGB#495 8Bg)58;: ?@4
3 #U 4)B4t5=8WT&4)54928d/?44) CG BA4te&8WT e&2
3(,#G(1,&o11# 15U# t8;:&e&
3 #U 4)B4t5=8:&e04o.49<58dG44)*ECG A e&B498:&e(oCG
(,&(1,1&(1# ,&11# 1#
% /*
S/g# 0FS"-K.41Q"-[ ' ' "-% )/-hL"g0""*1JG"I
-5-D@[O"- ' "-FG%)/1 ' + ^yQŒ˜{VwŠ Z~
& ""*15wAG"-
rUŽm#;)# ' )# 4-D"-*#Yj ' "-:"
' 0"-/-)):
%) :_9 Œ4€z#4-/!1~-D)20""*1R@UD 5"-:)Q# b#
b*OD^/-"-bD*FSVf#) -Dd-D R"-:/I
h""16Z[D)<+TJ# ,*/1<+415ON))):R-D ' -O"-)Um-D Q""1
GUŽ)"*Da""1~#
4-/E#_;|G- ' Œ4
[#-"-)Y/6-D FSR" :.€D_""1b4,, E))*#^-25 I
:€/-"0-%)):J4-" ' "-4*#% "G-ONI… /-F
""1F)(:"-/-D)<q/r &0uv
BLOCKING
‚ ^E "-HN ' -D)b *#j-;:)"Xc-D)b) ' H
b
+ 4OBG):d-bD# ' "LO4 ' -R+41~@€1_QaNGI
' ’ ONA@[,# % (-D P) ' (h:)"X*#2+)4B :
!" ' "-:"A@U/-D5# ' #4 ' "-/-)gŽm14
G@APD)*@
D *@ ' "-:"€@U/-D)%()# ' # G ' "-/- 0"-QD# *#$
g 3 # 46@ 49578B6598 a ?B4
c!&
cg 3 # GT B495 8WTg)58>G: /? B498ZTe&G
! g 3(,#G1o1# 5=98>:&e&
(,11B#498:e0o.)5*E B4t8:&e0oC.G c! `` (,&11#
i84 ' L < ' % -Q-D YF% V5"-*@H?"- !R-
"-:DG*
K-D c4 ' L <BSf-D ."-%)/-J?"- L<#c% ' #)0-
-D 2-Y"-*@ ,#)0d?"- "-:D4-b?*jz\`-D "@["# 4 ' L .V% 6E))D<N%- :.d."-*@xg#).+T!"-V4 '
LR*2+TQON % -*#$
& %)):2-D)J-D)#)d"-Y"-: X*#a_% ~. \"
"# "*
((-D Q*,<Ž)""M
)FS"1/-"-<-D)Q) "
4 ' [LO-OD UJ#/W$"-4[*OD P)7Z[D G#N%-["-
O94-/1/M-D) ' %-.["-I…"#"-*#.J-D)[-D ) "
4 ' P ' "-JHm-D J# <-D),*D)f)6-D 1<0"-
+"-% :D4UMgZ[D)U*5+T,D)FS*#.@U/-D5-D)!*@U :.G# ! g c` ! ` 4.2 Handling Sets of Independent Threads
z\<-D -8
M@AJL4%)Q^"-+ /""-/1H)-*#H4 ' P-D
*^+TJ+ "-B^% ' 4-Y# ' #4-D "-# fz…PQ%)!%)m-
)# "U-D A%)+)OU ' 0"-/1FSY/n@[,0"-P)UG-O"--*#
' "+T*%)P% OD.4 ' €D*FS("-# :"-€8!"-I
# k~G# .-8d| ' /E*/14
K41c4-"-**F :fU-D)
# ' #4M-D"-*#h"-A:Sm):n-D g"-0-FA"#"-):
h-D P ' O"- 65D5-D "-*#5U.4)*#$
4.1 Motivation of Generalized Blocking
Z[D R R[+)4BG :5P-5O"-*-Y,A))O"Q4 ' ~B *@UCYH-
€@UD </-"0-j% 4-."-<*0"-L% /1
4"-*#5- % "-P-D06#)V"-%)*#55-D P-QE 64-V-D Fng"1.D)"0"-OD4174-"-* & 4 ' )(6+ 4OB4I
+)/M/[AL% 1 ' "-V%+) ] 4OBG):,-% "- [-TIy# ' 4 '
[4-,f
Œ TIy# ' !4-D)U% -" 54 ' [4"-)-D)("#"
2@UD D2-D)P-"-,FG/-*#$
T#5-D)Q )" b4 ' 4"-
-D P"#"U@UD D-D /-"0-)(+T :):V-Vf-,"-PFGI
/-*#$^Z[D).%-"R4 ' V*~+T50"-+)/""-/1 ' "-J% -*#^)#c
5-D P))O"6)
Z[D "-,D*FSQ+T2F0"-%)6- ' -[-R"-*#%)P-D ' "-+ m+ 4BG):,L"€"-+)/"0"1.4 ' -A-,-D) ' "-+)–n+ 4OB4I
:d!" ' "!.4 ' )-c‚jD)5/R- ' +)
--% "-d4 ' ,4-5 VL% 1 ' "-J% + V4 ' *
M%)Dc
')' "-SDRh-4P-#fL"K-D)[:)" gŠ2G1 ' "-:"
) g+T€"-*# % *#J-,P):(4 ' 7+)%g+T E)K!"-
-D Q ' UK+)4BG : AwA # "U-D)6L*@U):YN ' cg Z[D)UG#+T0FS€"- ' "-G-gQ ' UNG-)8+)4OBG):
+)%n 7G-D)KN- :U+)4OBG):€-D) 3G% 8* ' "-G# %)K-D G# ] 4BG):R@U/-D<%) G#%)"€")!"-(# 4()6 ')' /1
+T*%)(-D)(4 ' U0"-) ' "!-/1.)-#8 & :"-/-D)g-D
/1,+)4OBP!%)/1 ' "-V%+ 74 ' )m@A% ?#J6L m4 ' # R* )U+TJ+))*#.4-V L% 1 ' "-J% + 4 '
)0qr
AŒ0uvb‘P<DOBG):H* )VD):.-D)."# "VU-D)
N%-nq/r uvhzy-O"-, ' A):(*))m:n-D 7+ 4OBG):
W$O(-V ' "-0FS ' -M4/\18q/r*uv
 "-QG#P-RN%--D))# ' # GA-D -" *# UI
34%)4-/1)#54"6""1U@UD "-, ' ' "- ' "- -
4.
!&
"!  r# % $ &(' *)(&,+.-(/0- /0+'1& /0+32 54
6+ 26+ 87 2,-:9<;>=>?>?5?@=A9B CED 7 87 2F9GH/0- - (I 6+3)& &
/J&,+"-KU 9 GL; =9 GNM =>?> ?>?=A9 GNOK7 PRQ # TSS JLUEK 2 6+ & 87 /-D 7 6+
&
/J&,+ /0- AV A) A2 QXW ) A2 /0- J' /
YZ\[^] S J 9 G _ K [ S J 9 GN` K
4.2.1 Two Thread-Interleaving Primitives
] 4B :hU\1X*#,!"-“)-D"-*#Q4-"-**F : KZ[D"-*#
-*#R%))# "7-D)U-(%-"g4 ' €0"-64-"-**FS*#R-QN ' /
)
-D).eR-D)f-D)1~!-_D)"--D .-#)H"J-D)Y-
*OD J) %)Q6-D "-f"-f.41.@€16-+)4B<R ' % I
-<2 ' "LO4 ' *
)-D "-,"-,.G1Y#/W$"-4U@€1
-R+ 4BY)# ' # GA-D "-*# Zn2% ')' "Q-D)V!%)g:)O"/\1^€+ 4BG): M@[G#KF4I
"1H)"-% -d)-#d ~4 ' Q+41H/-P*@U TIy# /-"- ' !)"-% - [D0"- :V% -"A4 ' D"-(-D)
-2N‡Ž)".N ' [Žm:% "-dŒ v RD)*@U-D)5-O"-
' QL"f*DbA-D)J-D "-J "-%)-),cohN) ' Œ4
mI
%) :2L"J-D).-B6 ' /y1b-D0J-D .F0"-?+) c#
"-2tH# &G
7"- ' -FS14bo7Da#G1.))
)"-% -.g"- ' "-4-*#R+41Q)G#6R-D (E):% "- !4-G
PA"- ' "-4-*#.+41.J%).n)G#
G@UD)"-*€-G-
d#
b"-*D~"- ' "-4-*#~+G1cdŒ0Iy# € ' Z[D),"-:h3G% 4-nON % -<"# "66D *@U<+G1Y-D)f0"I
"-*@U6<Žm:% "-JŒ v OAz…U(*1-R,?"--D)G# Q-D06
-D)U/-"0-)g$-D)U%-"-g4 ' "-(# ' #4K8*OD
-D "*
€-D)O1. ' "0-P ' 0"-"-*@UUM-D)P.0"-N ] 1
Z[D)"-†r
h/,f:7-2N%-V-D) ' "-:"†cG1d"I
# O"6):8-D)Q ' "- 6+T): :R-V-D)Q-P"-*@
c-D)E:% "-R"-_-D /"J"-?0-FS."# O"- : ^Žm:%"-Œ e+ Iy#
"- ' "-4(N ' €h:Sn4-"-**FG :UL"(-D QG# a
ˆJ ?K
d
d
d
…J EK
cb
e
ˆJ QK
I
I
I
(a)
S1
I
S2
J
I
S3
K
I
(b)
S2
S1
I
J
I
S3
K
I
(c)
S1
I
S2
J
I
S3
K
I
(d)
S2
S1
I
J
I
S3
K
I
(e)
S1
S2
J
S3
K
Do I = 1, M
[S1]
Do J = 2, N
[ S2]
Enddo
Do K = 1, N-1
[S3]
Enddo
Enddo
Do I = 1, M
[S1]
Enddo
Do I = 1, M
Do J = 2, N
[S2]
Enddo
Enddo
Do I = 1, M
Do K = 1, N-1
[S3]
Enddo
Enddo
Do I = 1, M
[S1]
Enddo
Do J = 2, N
Do I = 1, M
[S2]
Enddo
Enddo
Do K = 1, N-1
Do I = 1, M
[S3]
Enddo
Enddo
Do II = 1, M, B
Do I = II, II+B-1
[S1]
Enddo
Do J = 2, N
Do I = II, II+B-1
[S2]
Enddo
Enddo
Do K = 1, N-1
Do I = II, II+B-1
[S3]
Enddo
Enddo
Enddo
Do II = 1, M, B
Do I = II, II+B-1
[S1]
Enddo
Do J = 2, N
Do I = II, II+B-1
[S2]
Enddo
Enddo
Do I = II, II+B-1
Do K = 1, N-1
[S3]
Enddo
Enddo
Enddo
vxw^yQz|{9}P—€}…y3‹wW‚Š.}ˆ{ ^}|wW‚‡yQ‚ƒŠ.{
Q‚.@ŒQ{Vƒ} †EŒ|}
@ŒQ{O” „Qƒ‰<^}š—=wŠ|™G”Q† {tŒ"ŒQ ŒQ‰ }ˆ{
Š.w^Œs‚ 2YŒQ{VQ‚wW‚‡}…‰ }…‚|}…‚ŠGŠ|{9} ˜{9{9Œ!"2†EŒs‚|‚|}…†EŠ#
w^‚|yŠ |}ŒQ‰ }ˆ{
˜ŠrwŒs‚$|Œ! Š|}…w^{ }ˆ„‡}…†?z‡Šrw^Œs‚ Œ˜{%‡}…{'&()
‘!} *›z|}…‚Šr+w 3O}ˆ„‡}…†?z‡Šrw^Œs:‚ ,&Y-Ž )‘›#Š ˜Š.} ƒ}…‚Š w^‚›Š.}ˆ{ ^}|w^‚|y &† )/.&Š.}ˆ
{ ˜ŠrwŒs‚wW‚›Š}…{ ^}‡wW‚|yŒQ0
 &-Ž )R&1(} )0.&‚›Š.}ˆ{ ^}|w^‚|y 7w^Š 2.Š.{tw^‰ ƒwW‚‹wW‚|@y &ƒ' "-:" @U/-DCHP# ' #4 ' "-/-)`+T
"- ' "-4-*#<+41Hd% -" ' 0"K4 ' @UD R4 ' +TG#G1<*
)<J‡"-+ "0"1j)- :_f4 ' 2#C3G% )5
4 ' H)#C-G- & P-D d:,4-"-**F :2* +T
#"-FS*#~+41_ ' ' /1):<\@A ' "-/-FSf"-%"-F/1 -4
4-"-**FG):<"f/-"0-c4-"-**F : 5Z[D) ' "-/-FS,0"-
' n(7Z[D "-r
3 .454%657  ŒG ‘›Š8 Š.} ƒ}…‚›Š0.‚Š.}ˆ{ ^}‡wW‚|y
# 9<;=9@M =5? ? ? =A9B /0+ 2 6+32 6+ 87 2,- D 7 & Q -)(&2 F)(&,+34
-(/0- -K & - 87 6+ --9 ; =:9 MQ-; 68+37 & /0+' 87 H)(& /J&,+& - 54
6+ 9 _
2K9 G -T9 G=< _ C AV () /J& + - (I 6+3)E9 ;>< ; =9 M?< ; =
?5??@=9B< ;>=9<;>< M,=9@M?< M,=>?>?5?@=9B< Me/8- - ' /0+ %@ /8+' Q
3 . 454%65 7  .&Š}…{
Šrw^Œs‚A.‚Š.}ˆ{ ^}|wW‚‡y
# 9<;=9@M =5? ? ? =A9B /0+ 2 6+32 6+ 87 2,- D 7Q & - )(&2 F)(&,+34
-(/0 - -c & - && D% / 87 / 8 7 /J&,+" C- B ; >= B M =5??>?@ 1= B O C%87 D 7 ED /8 - 87 + & / /J& +.-/0+ && Q ; 6+ & /0+' \)(& /L&,+
& / /J&,F
+ B _ 87 2 9 G -9 =G < _ C 87 AV A) /L&,+^- AI 6+ ) 9< ;>< ;=R9@ M?< ; =>?5%?>@ ?@=9B< ;=9<;>< M =?>?>?=9B< M,=>?>?>?=9<;>< O =5?>?>?=9B< O /0- 5 4
' /0+ /0+' Q
zyK7G-O"--):P-P -[-D0K-D)[y@[Q"-"-A?"-x-D)
-,-D)"- ""- ' #2-\@A@[/I…B *@Ud4 ' ")L"I
.-) h4 ' # "-+)%-5#4 'Y' "-V%-8KZ[D)6G# " L"-.-<D).J"-QD 0@U5+T0@ rA|4-4€4-"-**FG):
GIH8JKL?M%NPO>QSR%NPL?T#NPH#U
GIV%JWNXH?Y%Z=[IL#NPU\Q>]CO>L^]%Q
ŒG7z…-"-54-"-**FG):
GIV%JWNXH?Y%Z=[IL#NPU\Q>]CO>L^]%Q
3 #U
!4657 98;:
(,&1
1&! #g GIH8JKL?M%NPO>QSR%NPL?T#NPH#U
3 #
46!&57 98 :
3(,&#1
146! #g 57 98 :
(,&11#
3 #U3 #4657TG5U98;t: 8 a
3 #G3 T2#574<5=98 9a 8>:
(,&(1,1&1# 1A! #
(,&1,&1
!A1# 1#
Žm:%"-6Œ…eJ +sA
K D *@U62 ')' *0-<h0-4€4-"-**F4I
):.•)V4-"-**F :2, ')' #d--D V% -"-,4 ' M/
"-*0-Vc-D Y )"J ' Y<J(# ' #4 ' 0"--)
@UD)D^H+Tf!% "-D "Q4-"-**FS*#8 &6' ' /1 :.-O"-dG-O"I
**FG :P--D)g"-%)/gVŽm:% "-6Œ e+ n1?#7Žm:% "-(Œ e O7|G"- ' I
)):,€?-Y%)*#@U/-D4-"-**FG :JVA-J/g-D)X
-D)7-hŽm:% "-7Œ v# n#JŒ e 8D)*@_J+)0-)n"- ' I
)):f#R4-"-**F : 7Z[D)O1.V%)"0-6-D0[4-"-**F4I
):f# )[+T(.# €)# ' )# 4-/1fL"[*D-G
"(4 ' [Ž "U ' /\14
.%)*#.-V+T,#FG+)Q+41 ˆJ sK
…J 9K
ˆJ QK
ˆJ 9K
O
b
4.2.2 A Generalized Blocking Algorithm
‚cJ# OE) Q.J+)0-H["- ' I
)):,Q4 ' @U/-D# ' #47-O"- €)# ')' /1 :Q)
"g"-U4-"-**FG : ' "-/-FSK"-% "-FS1J-P-D)€4 ' +TG#G14
•% "g:)"X#.+ 4OBG):f:"-/-D) -, ' "-0FSU#)0P4/\1
E)"-"-*0-4 ' @U/-DH)# ' # G(/-"0-)
$-D)<?#4-/I
EP-D)V% "-VA"-%)
n)#^ ')' Q4-"-**FG : ' "-/-FS
-FS1Y-RN ' /(-D P# 4-/E#Y"-% ' 6+
^yQŒQ{tw^Š‹ba Z~ /I_ A2 &):` /0+'
)"X*#
z\)# ' # G  "-/-)
] 4OBG):<L"  "-:"J@U/-D
c )1d + / /J&,+"/0+'- A) 6 -(/ @ - &Ee%+ 2 8 7 c/0+.4
2 6+ 2 6+ / /J&,+"- @ -/0+ 87 &(' Q
r
Z[D)€- '5' % -A-D PG#P5V))*8!"-# I
Xn-D)[:"--D 2‹ K# ' )# AVD 0@~-D AG#[@€
@€"--M>Z[D)Y- ' "--Y%-"- ' 0"4 ' +)% K-D 1J@UT+TU"- ' )*#V#R0FS#J4@€"#A/T-D)O1
*""14*/\152|G- ' f 2 6+ / 2 ) &) / /0+ 87 +"- & A2 A&(' Q
g ‚b/Q#`in2‹ R:"--D -c/1XY-D)209)
ŒG
""1b)# NdN ' "-)f^-D) ' "-:" -<#"-FSR-D)
# ))€-D P/-"-5 ' -D0U*""1Y"-%)q Œuv
Z[D),:"-/-D) # -O"- [-D)Q/-"0-<%)+ ' Q-D
.*1.D)"--D P-#)0V"U*OD P)U+41E)# ):,-D)
% ) ' $-D)6AL% )- 7Ž)"g*OD.-4*
?#4-/!1f-D)U% -" ' 0"4 ' # )h-D)7D*FS
#)f"-%)
G 8 7 /0+"+ &,- / & /8+ ) 2 /I_ &&
3-FD / 8 7 - |G"- ' ' "84 ' [-D)U*0""1Y41Y""1."-% L"H41j0-4*„‘P"-+ % -H-D)d"- ' )*#C4 ' 4-Y/-6 ' )4-6"-% "-FS/15%)4-n-D)15)J-D -4-.-D)Y*0""1a"-% “zy;-D)<<@UD)"-<-D ) "4 ' Y""1_)H"-% €#b)"- ' ).-D) I
)O"- ' "4 ' +)%A ' /1V# "-+)%-U-D)g4-/"-
4 ' 4-V/-U ' )4-
Ž "KohN ' [ŒG
S|G- ' r€#-"-)M-D0m-D)g%-"-h4 '
' "X*+)2@U/-D)%.41c!% "-D "R ' -X*-8`|G- ' Œ
#-"-)J-D0€-D 4 ' # )V*""1c"-%)`Z[D % -"[4 ' J*0""-["-%)()6/-"- @€"-/-Y-d4-:%)%)R4*0-)
)#
7:FS
-D €% ' -fT6% J. "K*1S% *hZ[D)[) "K4 '
""-K"-%)[+T*% [/-"-
% h-D)A#) ' "-G#%)*#
H/-"-
f|G- ' "- ' 6-D f% -"4 ' #
#"-+ % -,/,"-%"-F/1b0FS"J7-D)R0-4-,)#b) "
4 ' aZ[D)Y)@lN% -a"# "-):^)#c")!"-*#~G#
0"-,D)*@U5<Žm:%"-fŒ v# O
& M-D)Q ' D -*0-*#<4 ' " L"-.- P"- ' "!"-*#
`|4- ' r.€-D V:"-/-D) !A|4- ' JŒ2)# 2"-Y":DG!"I
@["#$YZ[D)Q ' "-% ?0"-/1c0"-FSV?"-k5!y@€"-. :/I
"-): ' "- ' -FS6 €-D)U ' 4-*#R:"-/-D „*.+T
% *#!"(+T-D ' "X*0-d#Y4*/\15 ' -X*0-M
 V˜ V˜ L
…J ˜K
4.3 Blocking Fully Permutable Loop Nests
& V#%)*#c_|G-`Œ4
h@[.D*FS.#FS ' *#b\@AH9 ' "-/- :b:"-/-D cZ[D ' ' "-/- ):d:"-/-D)
E)#R# ' #4J-D"-*#)#_-D - ' "-/- :c:I
"-/-D E)# ' ' +) ' "2`Zn^D)FS.-D)Y-"*
-D .9 ' 0"--)):2")L"-V0"-+)/""1^4 ' -f#
3G% )P-O"-*-V-D V"-:f%-"-6L%)/1 ' "-V%+ 4 ' )*KŽ %)/1 ' O"-V% +)[4 ' -KD*FS ' ' )+ ' "I
)#5"-f+ 4OB+ ZMR ' -X6L"(# V4*y14
@AP@UD5-V"--,
GL%)/1 ' "-V%+ g4 ' h-D0h*""-7# 6"-% K•%"
09) ' 0"-/-)):2-OD )34%)
h~-D)-D "JD)#8
' "-G# %)
-D A"-: !%)/1 ' "-V%+ g4 ' *mzyf-D A*
@UD "-K-D)7% -O"-8L%)/1 ' "-J% +)h4 ' )M) ' T4 ' 4-D (% -"-A gA,-D)U))O"-*KŽ)"A% OD
G# g%"V- ' "-/- ):d:"-/-D) % *#VcE)# ):
-D Q+T€" L"-ƒ!"64*/\14
‚bg@UG%)"0-[@U/-DVJN ' AD 0@c% "n- ' 0"-- I
:.:"--D 2"--,L%)/1 ' "-V%+)Q4 ' -(% (
' "!-/1a)-*#a4 ' !P"-# O"-50"-2"-L""-#;-c%" ' "-I
FG% ' %)+ -c!",L%"-D)"f !"-.-nq/r0s*u…2Z[D)"-:
G# QL"D)BG15# ' - L"-*@pFSO"- [6D *@U2+TI
*@ /0+.+ 54
&,-
&
&,-
J
sK
3 #73 #G4)57TG5=t8;9: 8x40e
3 #6IEoU@49578WT&9)58 TIEe& B498ZT&<eGI?B498o.Gl6IEWTE8o.
(IE,&B1491&8ZT&# <5GI?B498WT&6iGIEWTE8WT&
3(,&# IE1c1B#495=8@49<58xG40I?e B498B46eGIEB4t8 c 6lGIEB498 c
(IE,&B14918B#4)5!]+?;IE@498B4G
(,11#
Z[D c+TFc ' "LO-1 -*# 4 ' )-<R;0-I
G-
[()-*#_C#W$O"-4.4 ' ‡•%"Y9 5- ' "I
-/- ):.:"-/-D) ' %-6M-D)Q0-4-
%# :V-D)
"-:)/1b -*#H`rV)#bŒ*I\# ' 4 ' M4-5(Iy# ' !%)/1
' "-J% + 54 ' .D)*@UC+T*@Q>Z[D)<:"-/-D E)#
L",*Dd-4*
8^09)J. ' ' ):!"- -D)f"-:)7/I
"0-a ' .-H-D).)@–/-"-` ' 5% ODc-D)R[-D)
# ' #).)"4-V"-.--E#8^Z[D)9 .. ')' ):
L%))#2"-f)%#*#55-D QG# ,+T*@Q(Z[D),G#f:)O"-
"-%-)[:%"#h-D)AON % -J-D [ ' O"- K@U/-Df-D)["-:I
74 ' +T% #6-Y)%"-J-D0P-D)J)@ ' "-:"PON % -
/15 ' "- (-D)(0"-Q-D)P"-:nG# 3 #73 #G4 g T 5=g 5798;9: 8x4 g
3 #6ioi g a 5U9Y8d,&*4 g 4 g 57498xT g 5UTV8;o g 5Go
/ WT g 4 g Po g T g i/i aIEBWT4 g 5Y8W,&5(T o*g )5 24 g IEP57B4 WTg498Z8xT gT4 g<e5U2IETVB8;4 og g 8^o 5g 6lT GIEWT g 8^o g
gg 8WT g g)52IEB4 g g 8ZT g g<i2IEWT g 8ZT g
E
I
B
4
i/i a B4 g 5Y,&5*T g 4 g P57o49g8x T4 gg 5=498;o g 5 c
i/i aIEBB44 gg 5Y8B,&54 *gT g)5 24 g IEP57B4 WTg49g 8@8x54 5(gT og<eg 5=2 IE49B8;4 og g 8^o 57g 6l4 GIEB4 g 8^o g
(,&(1,&11# 1&# IEo g 8o g )5!] +? IEo g 8o g G
(,11#
FSV(L% 1 ' "-J% +)A4 ' )KBSA-D A U+T0FS
/K
"-FG?)-f ' ' /1R+ 4BG):Q-, ' "-0FS[-D)UG#‹ €#)0P4/\14
z\)# NGI…Y ' /-):_2 ')' *# Y-D)H)#;-~)-H-D)
# /-)M:%0"#5*%)- (?"--D)4 ' 5. PUTTING IT ALL TOGETHER
Z[D)O"-VQd4-"--):4-"-d+T\@Ad+)4B :5#
""1<4"-M & ""124"-d(-D), ' -X*0-H
' % :Q)# ' # Gh-D"-*#A ' 0"A,g-Q)XA-D €FS
" :h)@A"-B,""1 ] 4BG):m-D 7-D) 3G% g4-"-**F4I
):Q# ' )# 4K-D "-*# K-PBS(# F4:($-D)U#)0"-%)
+Ty@[R-D 2Mz\VL*
4@UD R@[U4-"-**FS€V% - ' [-D"-*#
@[Y.1cD)0F.-<-%"-~*"RF0"-?+)R4-H""1~F"-+)
Ž)"-%)0-/14
7+)4OBG):d /1c"-*34%)/"-R".F"-+ R+TYNGI
' #*#;+41_-D)HXHQ-D)<+ 4OBTxz…Y?-j% 9G.-
:OV,€-D)+T)E ,U+)4BG :<+41^% ):H5.g+)4B
X7Z[DG%)
@[A*JJ+))7-D)A-OD )34%)h,-D)A!0@U :
- ' QE#d)#^"-X.-D)V)# ' # G6-D "-*# n4"O
-D)V""1
n4-"-**FSV-D J-D"-*#Q+G12+)4OBG):
m#dN ' )#
-D)*"F0"-+)€@UD "-Q)-"1+41Y-D P+)4BX
^yQŒQ{tw^Š‹ Z~
• ' -XJ#)0Y4*/y1^% ):9 ' 0"-/I
- : ""154"-M
)#: "X*#2+ 4BG): r 6
& ')' /1~-D)5!0@U :_-^-D)5@UD ' "-:"2
[-D a"-OI
' *U+41. ')' /1):f-J-D)6 ' % 0- ?#-D) ' 0"/I
X*+).)#2L%)/1 ' "-J% + J4 ' PL%)#<H-D)V
-O"- Jv?KY| '
"0-g0-4-T-DM ' O"-7,# /W$"-Gn#)0
G-5# /W$"-4Q3G% F)J &(')' 1<-D J!/I
0@U :- ' €-R*OD5(h0-4-
Je+sK g
_09) ' "-/-) :;-CNG"O<-D)~# ' I
# 4 ' "-/-)Y;-D)< ' %-8‡ZM" L"-
-D)6G# -JN%-(-D ' 0"-/-)U*34%)G-/1Y
/-"- m Q% -O"- ' "X*+)[4 ' *
z\P-D 7g@UD "-K-D)"-7"-7V% /- ' ' "44 ' ' 6-D)U)U@U-D"-*#I… /1.#)0Q"-%)(-D (I
)"- ' -bg-D)f)*,z…g-D V:"-/-D A&(' ; 6-6) 6/ /J&,+
„
 "-+)
|X
r* dr
 + 
Œ &  5
iM)
Œ &
r*ˆ
„
iM4 ' 
r
rt
„
& ""1
r
Œ
f Sc d
c 87
\& Ec + J' - A2 + ,' & 6/ c & # &&
3?-" "-/- :
4BS*#
wA4"O-*#
ohN )# *#
&
'

]


ƒJ EK
&
Œ &

t
J VK
&&
r
r
r
˜Ž<^} ~˜€• {˜†EŠ.}ˆ{tw .ŠrwW†5pŒQ Š |} Ž }…‚‹† F˜ {Q}ˆ{t‚|} 0Q‚ Š|}…w^{OŠ.{
Q‚ .YŒQ{Vƒ}†EŒ|} D)B41
+"-/N e)-s
D)BG1 e)-Ss
%)L% n2E)# ):V)# ' # G ' "-/- TBG '
- D))NGU- ' e Y‘PFG# m-D) ' "-:"p# ' )# h:" ' D,G-€"-):I
/1` )-#a ' )G-
2-D)29 2 ' )#5- ' "-/- :Y:"--D 6-E)#8
"- ' I
-FS/14
-D U)# ' # G7# ' ' )+) ' 0"--)
D5 ' )G*n‚cV+ )U-D)P ' 4-
:"-*# /1,/)-D)O1QD0"-A"-%)[#Q/)-D AV+ )-
# 4( U0-, ' "2
J rK
g
Œ4
G
&6' ' /12:)O"X*#H+)4OBG):.-. ' "-0FS,4*/\1d"-
' 0 "7" ' ' +)V-D"-*#J‚b ' G-.-D)J I
)O"-f-Y-D)Y"- ' )*# ' "-)J[-D)Y%-"
' 0"X*+ f4 ' #5M-D)4 ' (-D) )"-
L% 1 ' O"-V% +)Y)J-DR*""1~"-% ] 4B :c
%-"8L%)/1 ' "-J% +)h)Mn# FG-+ K-UN ' /MD):DI
"AFS[M"1RD)"0"-OD %)Dg-D (-D "#GI…FS
*OD €"K-D) ' D41 * "14m|*?0"7F0"-?+)7.1,+T
N ' #*#+41-D)Q+ 4OB.XQ-R ' 4A+)4OBG):
^yQŒ˜{VwŠ  —
• ' -X ' 0"ƒ#Y#)0f4*/y1!"
g
P9 ' 0"-/-)):J-fE)# ' "ƒ5f*34%)I
- ' "-:" #c"--2`|  Š5‘ ' "-:"k-DVNGI
' -[-D "-(:"G%)"-/y1. ' "<q/r*ˆ0u… ’ -
-D0 ' ' *# ' "-/- VL%)#~_-D) ' "X*0-
- ' @[%)#`/"-*#G1_+T+ 4OBS#_+41^-D) ' "X*0-
:"-/-D)-V"-*#%)4-" ' "-4"V% )*-)
J
Œ4 &6' ' /1.-D)P4*y12 ' -X*-2:"--D & :"--D &Gr €- V-D ,|  Š5‘ ' "- :" ' "-G# % *#Y<|G- ' r rK
EXPERIMENTAL RESULTS
Z JF%)-U-D)(W$-FS An% " ' "X*0-<#I
M
/\1C ' -X*-)
€@[H ')' *#a% ":"-/-D) -~bG% RI
+TO"J[@[/I…BG)*@UcBSO"-)f)#b &0I… ')' *0-c-D0
FS,-D "-Iy#))7o7% "f*34%-),%)):25V% -:"-?#
O-D)G#8h‚bD)0FP ' 4-*#R-D)P9 ' "-/- )::I
"-/-D d-D R| z\ŽKŒ ' "0q uv,‚cJ%)*#2-D V:"-/-D) -
#"-FS,-D)R#/"-*#H9 J")L"-L"P-D) ' "-:"Q%-I
.0-*/1Y)# ')' *#.""1.4"-8
+)4OBG):
#G#
:)O"-‡:"-/-D).G%/1`- ' "-G#%)2-D HE)6% I
' % *UZ[D ,BS"-)U@[O"-,"-% <H.wA ' 3YZn%"-+T"6@U/-DHt
0IŠ ‰ X2Œ4rrˆ ' "-4"- ![-D)."-:" ')' *0-~@€J"-%)
Hd| zU•6"-:<.D))P@U/-'
D Œ2r
 &*IŠ ‰ XRŠ5z  |Y{fr
' "-4"-
g
"
16
14
12
10
8
6
4
2
10
cholesky
btrix
(nasa7)
8
6
4
2
8
7
6
5
4
3
2
1
1 2 3 4 5 6 7 8
Number
Œ
Integrated
Affine Algorithm
Affine + Blocking
(w/o Contraction)
1 2 3 4 5 6 7 8
G-O" ' -" 4*#% "U""1_F)R"-%)/-V-d?#4-/!1
G"+ Q""1€)#R"- ' -D) @U/-D"UF"-/I
+ J%)/- ' "-4"-
6.
Speedup
g
Z[D d#)~4*/y1 :"-/-D)”# "-+T*# +TFdj*/1
+TJJ+))#5@U-D^^9R)Iv" L"- +*# ' "X*0-
:"-/-D -aO"-*-^V%)/- ' "-4"<G# 5@U/-D‡:4G#>#)
4*y14
r
Unimodular
+ Blocking

cholsky
(nasa7)
1 2 3 4 5 6 7 8
of Processors
vxw^ysz‡{t} ›€U‘‰}ˆ}‹z|‰UYŒ˜{pŠ>|} Ž}…‚‹† F {
Q}ˆ{t‚|} 6.1 Performance of Kernel Codes
‚cUD)0F(D)RL"A-D g-%#G1RPA8BS"- 7-D)A* )
+Tb ' -X*#C@[Q% ):`%))G#%)"")!"-.0-‡-ODI
)34%)*q ŒŒG
6Œuv
 "-:"-D).*C+T2 ' -X*#a+41_%) /I
G# % "f")!"-,@UUd+T)E f?"- 9 ' "-/-I
):
g -D .!"-"VV%)+ %)*#^+G1^-D)Y-" ObZm+ dr
--D)HŽ ""jB"-).%)#C;% "N ' "-4-:-D)O"
@U/-D.U$-D)"AOD)"-"--[+T!"-6#.0!-"A ' -X*0I
-87Žm:% "- PD)*@U7-D) ' "!"-. U+)*#R% ):Q%"g/I
:"-/-D) )#<<:"-/-D) +*#25%))G#%)"U" L"-
)#+ 4BG):)q ŒŒ0uv  O"L"-.)€% "-#( ' *# % ' 0FS"
-D)f*34%)G-mFS"-H@U/-D)% Q412G#J" L"-.-HL"
4*/\1" ' "2 ] *%)Q%) G# %)0"€")!"-U#
+)4BG :~"-2 ')' +)<)/1_- ' "!Y4 ' -*q ŒŒG
6Œ uv
-D)O1ceU-d ' "-0FSY-D 5B"-)V!"./-D "%) ' "-4"-
"gV% /- ' "-4"-g•% "A:"--D –OD FS7+T\@A2rr6#
rR-Q ' *# % ' Pc5% ) ' "-4"J"-Q-D)V-D"-VBSO"I
)R--*#8
A)#`+Ty@[;ˆG H-ar*sG &H-R ' *# % ' R;
V% /- ' "-4"(@U/-D<t ' "-4"-
’ )Qh-D P4 ' 6HwAD B414
)D *@U2H|OI
-^ m"- ' 0"X*+ )BSV% )G# % "P")L"-
9R) ' 0"--)):~% *#;")!"-):c-D < ' O"L
4 ' )4-d)YL% /1 ' "-J% + 4 ' )*a• ' O"-):
V#)0
[-D V4 ' ).DV:)/E4"-%)
):`P4 ' #) •% "4*/\1j:"--D ="- ' -D)V ' *#^A-D ' "-:"†+41H+ 4BG):27-D"-# )
-D)!%)/1 ' "-V%+)4 ' *jZ[D Y:"-/-D) .
W$O-FPL"(J%)/- ' "-4"-[oKFSY-D)%):DY-D) ' "-:"D
/1 ' ' )# ' 0"2
6%"5 ' -X*#;G# dD)FS5
% ' O"Iy)"f ' *#% ' Pr*sG &5bt ' "-4"-
' "-/1c#%)
-,+T-"[#),4*/\1.-D)()# FG# % ' "-4"-  "-4I
"-()*#)/1.-R1)D "- X,"-%)#Y+)4B+T%)# "-
] "-/NbJ5FSO-"-X*#b+ 4OBH"-/I\#:AFSO"V
-D)d|  ogw[SŒ ’ & | & sd+T OD ."-B$q &0uv & Y# % *#C |OI
- 09) ' 0"-/-)M ' 0"-K-D) ' "-:"‡4-€ ' O-/1
# ' #4P-D "-# MN ' :5.41H0""1^4"-c ' I
' "-% )/-A•% "A ' -X*0-2:"-/-D) ' *# [+"-/N.% ' +G1
& k`H : ' "-4"*
[#b-D) ' "!"-. .*R/I
)*0"-1j"-<t ' "-4"-–Z[D)d4"O- VŒ &
J
&K
• |Œ3^}
7J M K
Š{Vw„
g
7J 9K
; 6-6) / /J&,+
w[%)0-
 "!"-*#
|4-D)):J I…‘
 |)Š<•Q•
‘PŽhi ‘P ' -< 0I…‘
o7Žhi wA ' %-PoK%)"%N
|Z€o 
wA ' % -P ' O"M"# @U/-D2G# f# % ' *-
g
g
„
iM)
r*t&
r*ˆ
r & &
r*t
–
iM4 ' 
t
r
–
& ""1
&
f Sc d
c 87
c& c + J' - A2 + ,' & 6/ c & # &&
3?-" "-/- :
4BS*#
wA4"O-*#
ohN )# *#
r &
Œ
r &
'

Œ
&
ˆ


Œ
]
r r
Œ
r
Œ0

Œ
Œ


Ž<^}—›€•c ˜{
Q†VŠ.}ˆ{Vw+.ŠrwW† OŒQ YŒsz‡{NwWƒ‰ ŒQ{9Š8Q‚Š rz|Ž‹{9Œsz|Š.wW‚|}OwW‚
v "sœ$˜‚Ї} w{NŠ.{
˜‚.YŒ˜{E}!†EŒ|} 0""1 Q ' "-F6-D V ' *#% ' ^t ' "-4"-Q?"-†.eO-"
%&G V-r ˆ
„wAD B41C2)-D)"2|  oAw[Œ ’ & | & s^+T ODI
.0"-B2@UD)Db ' % -PV% - ' JOD B41^# ' /- ,
€FS-" ' "-4 :6y1q &*uvh‘Q[4*y1QL"n\@AUG-D)h-D "-
0""1 K"-!"-)*#RV-D)€*34% 4-?)G#Ug/"-*#1J)*0"A ' -/I
.e ] 1J ' "-0F :6-D)€4*y1RT-D)A-D "#V""14
S% "7: "I
X*#5+)4BG :R:"-/-D)ƒ ' "-0FSA-D)6%)) ' "-4" ' "!"I
.)6+412r* Y7zyUOD FSUJ ' *# % ' hˆG Jt ' "-4"-
+41_NG"-):H!"- -D)5-54 ' `-D 5%"- ' "-:"
+T-DS0"-I…:" ' 0" L"A-D)U% -"A4 ' A# ' -
4*y15!"(-D)P) "U4 ' •c|Œ 2
aM‹ Y"))*@
1 2 3 4 5 6 7 8
&I…
zy-D PE)"-(N ' "-4*
G-D)Q ')' *0-2@€("-% @U/-D2EFS
J%)/-:"-#^FJc^rSŒ
SŒ HSt5gDMZn2:Sc I
:DGJ4-<D)*@–% "V:"-/-D) ' *# f% ' -D).G# h@[Y)I
/1X*#2-D ,!%"P6 ' "G(% + "-%-)62-D ' "-:"2
@UD ODQ-:-D)O"nBg% ' +T% Ks j-D)KN%-Q-mZnI
+ YŒ)%#J5+.#"- ' -_#dD0"-"--
€-D)% + "-% -)Z[D ' "L"-.)."-%)/-,€-D)V)# /I
FG# %)h"-%-)fQ@AA,-D V4-/"-. ' ' *-~"-D 0@U
<Žm:% "-, [Z[D)PE:% "-,.)%)# (V ' 0"-<+Ty@[
-D P ' *#% ' D)FS#%) :V%"UG-:"-#2:"-/-D)FS"-% <#/"- ' "X*0-`U-D)4 ' Vb-D Y% "- ' "-:"
@U/-D % U")L"-.- KwA-):H-:-D)"V7-D)R"--#_ ' "-)
?"-†. Y/""-:%)"-/1d)-*#<4 ' PH-D)f%"- ' "-I
:"2
4% "A:"-/-D)–% # 7 ' % -):,A)-D)URI
' % 0-<5-D) ' "-:" 2y@[)-*#5%-" ' "m4 ' Z[D G% V+T"f(4 ' RJ"-*#%)#b!"- 2-~rr
g)# *- :
-D RNG-4Q-@UD ODb-D RG#DQ+T^")L"-*#8‚C-D
-D ,")!"-.-M
h-D)R:"--D †E# 2%,€-D))
&"I
"1g-Q+T(G"+ 7Z[D)(: "X*#.+)4BG :,:"-/-D)
"--"-€-D)6 ' 0-?M4*y15Y-D) )"-€4 ' U+414-"I
“2‘
8
7
6
5
4
3
2
1
DFLUX
FLO87
1 2 3 4 5 6 7 8
6.2.1 Analysis of the Program
PSMOO
8
4
8
7
6
5
4
3
2
1
6.2 A Case Study: Analysis of Transonic Flow
FS"*
UBG 0@UCYŽhim•PtsG
UY
Ž)"" ' "-:" -D0,%),YV%)/-:"-#d:"-/-D)
Y
-HFY-D"-Iy# [oK%)"R3G%)- *q/r*uvcZ[D)Y ' %
# PRG#nA^• ’ oK{ & Š2ˆR@U):
$R@[/I…BG)*@U<-
Ha-D)H"-)%-V% )/\14C•% "E "-.N ' "-4
' "-0F#7/1K$D)*@_-D)A ' "7 ' -Xh-D)[G# !
-D 6)#YN ' "-47D)*@U[D *@C-D)( ' -X#.G# (*
-.?0"-:",G% V+T"6 ' "-4"-f)#HD *@“-D) ' "L"-.)
F"-€@U/-D<#W$O"-4UV%)/-:"-#5F
Z[D J"-:KŽhim•PtSs ' "-:" D)P/"-*#G1<+T2-% )*#5!"
4*y1 ~-DY5f-D d#)~#‡j) "54 ' 0"-cG-:%)% ‚bc# # )HN ' 2-a ' "-0FSd-D ' "-I
:"2‹ n% ) ' "-4" ' "L"-.)g+416V%)D !*-D KOD)):7@[
@UD -D)O"n-D)7::"-FA" L"-.0-)m ')' #Q- ' "X
-D QG# P@A% ?#Y"-%)-D P4*/\15-D)P"-: ' "-:"2
10
6
Speedup
Direct Parallelization
Integrated Algorithm
Integrated Algorithm
+ Code Duplication
8
7
6
5
4
3
2
1
EFLUX
1 2 3 4 5 6 7 8
8
7
6
5
4
3
2
1
1 2 3 4 5 6 7 8
Number
STEP
1 2 3 4 5 6 7 8
of Processors
vxw^ysz|{9} |a €š‘›‰ }ˆ}‹z|‰ NYŒQ{šv"sœ ˜‚k@Œsz|{ŒQGwŠ^ rz|Ž {9Œsz|Šrw^‚|} **FG :Y-D JON % -HA-D)f/-"-)PH-D)f% -O" ' 0"
4 ' <)#CN ' )# ):cy@[~% 2,-D)<-D "-H4"-*# 0"I
"1A+41V-D 6X68-D)U+)4B$7Z[D 6% ) ' "-4" ' O"L"-.)
' *#% ' +G12tr )!$-D),V% - ' "-4"PFS"-<"-%) ˆGrR#
rrr6-Ke-"€..tI ' "-4"€.OD )€@UD) ' 0"-*#
-J-D ' -X*#.%)) ' "-4"UG# Q#-D)"-:M% ) ' "-I
",G# 8"- ' -FS/14PzyH4"*
8#/"- ' "X*-
D)FU)/15 &G ˆJ-U ' # % ' 5t ' "-4"-
$•% "P:"-/-D) ")L"--D)fSt.4 ' PH-D ' "-:"4-.ŒV4 ' G"-(ˆV%Uh-D Vr &V0""1 (#
N ' # &-D x+41f-D [+)4BJX€!"g ' -)4*/\147Z[D "-% -JCr* † ' *#% ' `2%)) ' "-4"R)#~dˆG <-
' *#% ' `t ' "-4"- ' "-#~-<-D "-:U% ) ' "-I
" ' "-:"2 Z[D) ' "L"-.)~+ )*#>"- ' "-4-H
.$ ' "-0FSGg0FS"UJ# /"- ' "X*0-<M-D)P"-:/I
MG# )BS<(-D)2-D)"Y% + "-%-).#"-+T*#;
e0"*
m% "P")L"-.-^G# h ' "XYo7Žhi /1
+415ON ' )# ):VE)FSP)*0"Q0""*1(G-V?0"-: Iy# m0"I
"17Z[D) ' "X*0-HOD P#:"# €-D %) ' "-4"
)#a)/1~1?#.cŒ4r5-R ' *#% '
' "!"-. 2+41jr*
Ht ' "-4"-(z… ' +)f- ' "XJ-D 6G#f@U/-DI
%f""1^N ' b/U.7% 4Q[-D R ' % 0-
2#% ' *0-*#a-_)-dcG%)J+T".J#)0~# ' # )
<-D) ' "-:"2zygG# J# % ' *-dQ ' ' *#8
$% "4/\1
:"-/-D) D)F, &G s ' *# % ' bt ' "-4"-Z[D ,/I
%)"0-P-D0Q-D "QBG# 7")!"-.0-)
n%)D^QG# # % ' *-M
*2 ' G€9 ' "-/- ): •%"U:"-/-D)F"-€Y ' "L€4 ' )U
-D) ' "-:"2
A)-):^"-:1a6:D44 ' €4-H)
Iy# ' !%)/1 ' O"-V% +)P4 ' * & ""1YG"-<( ' I
' *#V-Q\@A,""1[#R)Q+ 4OBG):,g -0"1+T*%)U-D)
Pv
”)v
g
g
‘ ”)“
28
3
4
5
6
Speedup
24
20
Number of
Multigrid Levels
16
12
8
4
12 4
8
16
24
Number of Processors
32
vxw^yQz|{9}$›€‘›‰ }ˆ}‹z|‰ 2YŒQ{Ov Qœ=w^Š> ‹w >}ˆ{9} ‚Š= zE^Š.w y˜{Vw+ ^}s}"+ )"€4 ' U8-D) ' "8-D"-*#€/"-*#1Y*""1Y$-D ' I
-74*y1dH-D) ' "-:"2fZ[D)V% ) ' "-4",G#V ' # % ' :D4-/1 !K-D V%)/- ' "-4"J \*1 fHs4r.-Q ' # % '
;t ' "-4"-`‘P/"- ' 0"X- ^ ' *#V% ' -D ' "-:" ‡_J%)/- ' "-4"*
P+ % Y-`_O"<NG-4 …Œ4 t
- O
J
K
6.2.2 Performance of the Application
•%"R4*/y1_ ' -X*0-a ' *# R% ' -D) ' "L"-. 5
-D .4-"-Y ')' *0-_+G1`r k_2%) ' "-4"* ] *% & .# D)e‹ Uin@Q
-D) ' 4"( ' # % ' h-D)PogŽhi % + "-%I
- f*# (-.R ' *# % ' 7)/12 tRHt ' "-4"-UzyKG#
#% ' *0-26 ')' #8
)V ' *#% ' Kˆr,U+)*#$
zy<V% -:"-?#-D)G#$
)-D),D56S0"-)#2+G15DFG):
D`(-V# )JJ*D~FSeH‚j/-D_~ ' % JD
Xf€rSŒ
Œ StG
-D),%)QKEFSQJ%)/-:"-#5FS(* -D)Y-D)<"-5DCD). 1>r0Œ `Œ #cp‚jD)
#"-+ % -*#_0FS".t ' "-4"-
€-D 2%)4R ' %-
4-*#2@U/-D2-D)S0"-PD(.n ' "-#Y-V-D V% )*0-0FSO"-D)*#YGFSFS#8hzy:)"e
[-D)J%)/-/I
:"-#YFS8 "-*
-D D.:-["-"*
-D)U"-VmRI
J%) -<-. ' % 0-<)"-*
n#<.*@[" ' "
' *# % ' UN ' -*#$7Z[D)Q*@["6 ' *#% ' D)*@AFS"*
.1.+T
W$€+41R-D (L( ' "-:"–@U/-D"-6J%)/-:"-#FS[.1
BSQU/-"- (-VGFS"-:
ZMfON ' O"-GK@U/-D-D)(G%)V+TO"KMV%)/-:"-#RFSA)#-
F%)-V-D R*?+)/\1^[-D J" L"-*#^G#
n@AR*#
% ' -D [Df+41,t(-m- t (ˆ (ˆ,)#fF"-*#,-D)AJ%)/-/I
:"-#dFS(!"- R-YˆQZ[D ' O"L"-.)f@€P*%"-*#2
-D €G# [@UD "-€.G%)GG# (#% ' *0-RDK+T ')' *#J-
-D UogŽhi "-% -) & KD)*@UŽm:%"- &G
S-D ' "L"-.)
"-%)/-L"Q#W$O"-4J%)/-:"-#<FSP0"-VP# G-*h% '
-2rˆ ' "-4"-[‚jD 5 ' 0"-*#-R-D PG# ' "-G# %)*#5+41
-D 0-FY3G% 4-gŽKss2 ' O"*
m-D).OD FS*#b ' # % ' SŒ ' "-4"-QF0"15?"- Œ &R-5ŒŒY6-D JJ%)/-:"-#2FS
0"-, "-**#!"- J-ˆG
g
g
7.
RELATED WORK
"-:RG%)J+T"(€# 4*/\1d ' -X*- PD*FSf+T
' "- ' *#VJ-D ' *7Š241f-D €:"-/-D)K% [%) G#GI
% "[")L"-.-Y#+)4B : 4@UD)DY"-)/1. ')' *+)
- ' "!-/1H)-#H4 ' G# %)0"6")L"-Q"-J%)*#
-<O"-*-.L% /1 ' "-V%+ 4 ' -Q-D0V*~+TR"-F/1
+ 4OBS#`-c)O"-*H4*/\14p|G2:"-/-D 0- ' -
O"-*-f-D),"-:, )"-6-PA4 ' -D)6*""12"-%)
+ % A*Y 1R+TP ' ' *#-J#F#% ' "LO€4 ' -*q Œ 0u…
•6-D "- ' "- ' *#d-2 ' ' /1^# # /-g4 ' " L"-.0-)
% OD;R!%)8
[EC#_G#2)BG): A-b"-*0- ' "!
4 ' )-R!"- ' O"LR)R^-D)% )G# % ?0"V")I
&
g
L"-.- V#d+)4OBG):5*c+T. ')' *#8q ˆ
[rr
7Œ0uv<• -D)J,::"-FSR-D))34%)Pg-D)Q, ' "- ' *#d+G1
& D *#Mq/r
€Œ*u…;Z[D)# *dR-dJ+T*#_€-D)50-4-R
' "-:"G-RJD):D Iy# M/-"0-2 ' @UD)OD
-D)w["- ' "-G# % QA-D)R/-"0-~ ' ,€)# FG?#%
-4-zy^-D /"V:"-/-D 2
m-D)RJ%)/-/Iy# )KRI
+T*# # ):YL%) - ,"-RD)^@U/-D^-D V:SgA"-*- :5-D)
"-: -*#514"-U ' "-V%+ 4 ' )-
•% "609) ' 0"--)):Y:"-/-D) *2E)#-D ,+TP09)
' 0"-/-j-DY.0N X-D d0"-:5% -O"-YL%)/1 ' O"I
V%+ J4 ' *Z[D ,@A"-BH%)+ %) ' "-FG% QD)%"--
' ' "-D)fP-D R+Tf09) ' "-/-^,*34% F4P-Y-D)
+TVJ+)0-~(%) G# %)0"J")L"-2
hL% M
7E8
"-#N): $):2#<-46"-"# "- : f•%"Q#)0I
*/y1‡ ')' "-SOD8
PD)*@AFS"*
)</-*#C- % H ' ' /1):
+)4BG :P-PL% /1 ' O"-V% +)[4 ' - ] 1V: "X):,-D)
) ' m)+ 4BG):6M-D"-*#Q4-"-**FG : %"h:"-/-D)>*
# /"-O-1H+"-):.-D)f+T)E -PA+)4B :Y-"-+ "0"-1d -*#
4 ' [Z[D (:)"/y15( ' "4U+T*%)Q)/15)Q% (
-D ' "-:"[#%)*#..-D ' ' "[Y+T(")L"-*#
4-R ' "-V%+)64 ' )*
G# % BG%)€Ke ' "- ' *#,-D A# (T#)0(D)BG :6-(RI
' "-0FSU# 4*y18qr uvAZ[D)€# *PK-Q# FG# [-D U#)""1
2 ' "-:"4-VV% /- ' +)4BGAZ[D PG#Q€")L"-*#
-V ' "-2f+)4BK# f(f-#-D)O"-+41YD)FS
#)0(4*y14KZ[D)"7:"-/-D x# 4n)m ' /!1fD)*@c-6# FG# -D)J""1<4-.+)4B6)"PD)*@>-YD)# %),-D), ' % 0-
/U/J,:Sg- ' "-4f-D .#)55+)4Bb0VY-^)
' €z\54"*
)%"P:"-/-D) % -.0-*/15E)# (R:
# "+)Q"-"#"-):Rh-D)P ' "-)U-R)D) P4*/\14
{(")#  % :DH ' ' /1-O"-H ' , :-OD )34%)
-( ' -Xg#)0U4*y18qruvgZ[D)gBS1 ' "-"-mQ-D)/"m/I
:"-/-D)x0"-g-D)A""1Q-(+T*
"\*
# $P#Q-D)g# )J):
@UD)D< :BS ' UZ[D /"Q:"-/-D) # "-FSU?"-ƒ-D)
#)0# ' )# -D VQ[ ' "- Q-D4"-+)%--
-D)U*%)-m -D)U4-7+T):):,-,,6$-D)
:FS0""14 ] 1N%-):Q-D)(€ 0UP-
4- ' "
4*/\1a ' "-0FS*#$ & R-#a`-D /" ' ' "*
[/"-/-/I
*-JD)46-D)U"-:D4€0""1Y#.#)-,
+)% g-D)
-D G# M!"KE)# ):€-D g"-:D4KD)K"-[+T1S#P-D A ' [
-D)"U@A"-BT[zy2 ' "-8
)-D ' ' "(D ' "-4-*#2J!%)/1
%-.0-:"-/-D)–!"[-D ' "-+ 2 & -D "€#W$O"-)6
-D0€-D)/"6:"-/-D) # 4( 6# #"-U+ 4BG): Z[D) ' "-+) A ' ' /1 :.4 ' !%)<-. ' "-0FSf#)0I
*/y1;D)+TaD)*@Ua-b+T ’P I…D"#8q/r0Œ0uv>Š5 ' "-FG%)
' ' "-D)P!%)V4 ' P-D0P"-*#^#2@€"-/-V-D)f-V""1
D)% "--*/1 -a ' "-0FSd4*/\18q/r0Œ*uR#j-aO"-*-c ')' "I
-%) /-JL"0""*1b4"-nq tG
6r AŒ0u… & J# )"0-*#
+41^-D .N ' ,c-D) ' ' "*
7""1c4"-~!-_"-OI
34%)/"-:+P)/1#`G# 5"-"-%)-%"- : U#`* )
+T ' "!"-*#_W$O-F/1a% ): ' /"@U<4 ' !%) ' "-I
-FSh‚jD % "€:"--D [)€:%)"4-#Y-f+T ' -.e
/-U+ /\1Y-V ' -XP"-6$-D)"-+)/"0"-/1)-#Y4 ' :+/12.BS[/(W$O-FP5 D ):R4*y12#.E#):
G"+ J0""1 U ' "-
8. CONCLUSION
Z[D) ' ' " ' "-4-€4-:"-*#Y#)0f4*/y15:"-/-D -D0(%)69 ' 0"--)):R-R% ')' "6+T-D<""154"OI
-.#V+ 4BG): hZ[D)€-D))34%)€g ' ' *+ €-,0"-+)/""-/1
)-*#Q4 ' KZ[D ABSO1P# *Un-€E)#-D)7+Th09) ' "-/-8
@UD)D^Q*34% F4P-.-D)J+TQV+ )-dA%) G#%)"
" L"-
!%)8
E)M
0"-#N): * :#Q-G
"-"# O"- : -DK ' "0-h-D) ' "-:"“4-6-D ["-:gG% RI
+TO"J€# ' #4P-D "-# .wA ' %-d@U/-D)c-D"-*#
ON D +)/-f5D):Dc# :"-.€- ' "74/\145oKN%-):5-D -D"-*#)J,R-f5)XU-D),FSJ"):g-D 4-A@["-BR""1
-DG% gN ' :, ')' "-%) -gL"€"I
"1~4"-M_Z[D 2:"-/-D) 4-"-**FSf-D).-D "-*# V-
OD FSH+ 4OBG):<W$V!"R ' "!V4 ' )- !7-D)RI
-<-% "-5.1."-*34%)/"-P-D @["-B2""1U+TQN ' # #+41
.8L-"*
] *% g-D) ' *@[O"f#H:)"/y1bA-D)V9 V!"I
@A"-BT
S% "g:"-/-D)x*VE)#f.41Q"-[4"+)U""1
-D) ' "-FG%)/1 ' + <Š2G1dD)0F.- ' -*#H-5NG-#
+ 4OBG):+G12GFS"- : ' "-:"P4- ' "!,4 ' )-
-D).% )G# % ?0"" L"-.#`+)4OBG):b*a+T< ' ' *#8
‚b:)O"X-D Y -_+ 4BG):dV_G-O"-0FG):H
-D"-*#KP/g7 ' ' *+ U-"-+ "0"1V4 ' )-):7# /"--/14
wAV+ ):5-D Q:)O"A -b€+ 4BG):5@U/-D~09) ' "I
-/- ): 6%"2:"-/-D ”2 ' *@A"L% -D))34%)2-D)*
"-"-%)-%"-6 ' "-:" @U/-DY"-+ /""1R3G% )[#V -A
4 ' J-D "-%):D /1b-HD)F:4G#_#)024/\1c!"J%)) ' "-I
"-#YV% - ' "-4"-
•%"5ON ' O"-G("-%)/-5% ::2-D05% "5:"--D OW$-FS7•f(K -D "-gBS"-)
-D)g ' *#% ' mD)FS*#,
P% ) ' "-4"["-,rr
Tr &Q# Gr
4@UD)"-g-D € ' *#% ' 7
5t0I ' "-4"(.D))6"-ˆ 8r*G ˆG
#<r0s4 &4
"- ' -FS/14
‚C-DJ-D)€?#J8.%)GG#6#% ' *0-R ' -X*-8
-D 0"-:.V% -:"-?#^ ' ' *-cD)FSfY ' *# % ' (Œ & Œ
' "-4"-
T/m-D "-QJ%)/-:"-#F60"-,%)*#$
zyb)% M
709) ' "-/-) :<JbW$-FS ' "-:"
")!"-.-a!"@["-BT;Z[D 2-+ ' "-/-FSV!"
E)# :H ' <)#~- ' 0"--)."-%)!%)[!".+T-D ' "I
”)#a4*/\14‡zy`-D ' *
U ' ". ' -X*-)
-#a-c% H.41`# /W$"-4YD)% "--5#a-D /"Y+TD*FG"-
0"-RD0"#H- ' "-# *J•% " ' O"*
nd-D J-D)"QD))#8
8*
)-4-/1J ' "-0FSg-D ' "L"-. € ' "-:"h@UD)U"I
"1Vg"-€-/1J9R)[N ' "-)74 ' #7#
1J+TQ 4-
9.
a
10.
qrOu ’ REFERENCES
& D)*#$
’ `Š2-FT
)# X):†" L"-.- „L"–4*y1
' "L-/1I… -*#„4 ' )-fzy
/0+'
c
 ):SvC|G14-D)OI
D 4 8 7
f + + /J&,+ &,+ 6+3) A ,& &+ ) (W 2 /0
+',A- )(& & 4
:fr r)r & ŒG
8Š212Œ
'
q Œ*u ’ & D *#8
’ xŠ20-FT
k)#  ):e Z[ :
' " L-/1I… -*#4 ' )- z\
’ 0FSJ+T"(ŒG
q 0u J & :)"*
& n‘@[8
K‘VhiK ‰ gŠ^7|Thin2
h‘Vmi7
Š54"-
] 0{,Š5% " ' DG14
#fw6| ' % G-XBG & ,0FS"-FG@
8-D)| zŽKŒP ' "[ ?""-% -% "-ZMOD )*"- ' "*
|G !"#
)FS"-/\14
Œ
q uQ‘V ] 8
K|$ 6"D2
n)#b•Jn|GD" ' nwA ' "Q")I
L"-.- RL".D):DI ' O"L"-.) ' % -):
TŒˆ e  &4SŒ
8‘PV+TO"Qr* q &*uQ‘V ] 1c#
] "-8hZ[D ’ & |<BS"- 7+T)D).0"-B
t &G
' "-:"2ZnOD )*8{( ' "6tˆsGrr
’ & | & Tr*
q ˆ0uf|$hw[""*
h|$KŠ5 14
K)#~w6 Iv‚“KZ[ : KwA ' "
' -X- VL" ' "-0FG :H#)0H4*y14Kz\
c )(&
&) A2,/8+',- & W
/8+'
g
g
/0+' W @ -
a
J ?K
64
&
4
A&) A2 4
q t0u
q 0u
q/r*0u
q/rrOu
))#1k# c|TbŠ5 )14b• ' -X):ƒL"
)#l#)0“4/\14Rzy
' "
q/r0Œ*u
/0+ ' c
87
f + + /J& + &,+ 6+ ) A& &+ ) (W 2 /0
+',A- )(& & 4
SŒ 
a%)/1dr*SŒG
' :
)*#G1R# G|TŠ5 )144Š2NX):,4 .
' ' 0"I
)#p ' "-0FG):C# ;4*y1“FG;4 ' ! %)
## "-+)%-Mz\
, &) A2,/8+',-c& 87 W / V 87 & ` - 7 &
&' ,+:# +'Gr 'Œ6- GM | +3' 2 "- :& "I . / "-6- : && % : % Q r*  & /0+' q/r 0u,zO G# %)BG% ?G
’ & D)*#$
n#
 :Seh‘PI…G"-
V%)/-/I…FS7+)4B : hzy
-87 c f
&
)
A
,
2
8
/
# c ! &,+ 6+ ) &,+ A&(' +*',- \&/8+' # +' ' W ; 544
- / ',+ + 2 f 6+ /J& + ' : Sˆ &sG
a %) Rr*sG
q/rufoUnw6niM@U
7w6MiM8
h)#^iKh|G41)#"*$Z[D ' 4I
-c#HF%-^[L% c#d""1d4"O-b
""1.):%: z\
87 c
f #c 6+ ) &,+ AA&(&' ) (*2 /0 +',/0+-' & # +' ' ; W 6-(/ ',+ + 2
&
+
f 6+ /J& + ' : &&G
Ta%) Vr*tG
q/r &*uJ|$ Iv‚“mi8 $
W # f % V
& &‘ -+ D f + ( |G ) / @ ! " # +32 g )f + FS 5"I4
Ay&14) A& 2 %) : %) 6Œ G /I_ %)+)  D)D)#2
6w€| i$IyZ[{(Iy0IytSs4

q/r*ˆ0u & *‚“i82
J
zOwAD : )#VŠ^|$iM2 & V09) ' 0"I
--)):5:"--D -5.0N X ' "k#^ I
XVV%) *-8$z\
7 c &) A2,/8+',-& 87 ' 8
W f
c){6( D G*# f 3+ 6 "- + /J
3& a + %) ) Rr&,+   6+ ) &,+ W A)(& 4
/0+'
q/r0s*u & €‚“6iM #>Š^Q|T(in26Š2NX : ' "
"
#J X P
: 1)D "-)X*[email protected])€")L"-
z\
( + ACKNOWLEDGMENTS
Z D ["-*"-DY[!%))# *# ' "€+41R-D 6‘ ' 0"-4[noK I
[
O"-:1~4".iMini$I ]  rSGr~‚c@A%)#`dBS.-H-D B
% "*:%).`-D & |)wAz ' "- O*
%) & & 4-41
M
PŠ2)CŽ)-*_)#;‚j”{6O1 # U!"
-D /"(D) ' @U/-D2% "(N ' "-4-[5-D)QŽhin•PtSsR ')' *0-M
a
q s*u
/0 + ', -F & 87 W / V 87 f + 6+ /J&,+ # & + 6 + )c& + c A) 7 / A )> 4
W & & Œ &(&' Œ GŒ ˆ\ŒG
M/0+•' -+T+' ",r*' 6- + 2
4
/0+5' Ž)W * - % \"-- "*
<' |:6p
94‡% -) -–-D)x09)
OD *# % : ' "-+ 2
' "nzO
*)g# -f + 54
&(' \/0+' €Œ4r?J&VK Gr + StG/J
$& •+ -+T& ", r*+ SŒG& 4{fP {,•M
| 0"-B0"*
G)#{fGZ[D BGB0-DM4wA/I
J
-FS64 ' !%).L"U""1.G"-8Gz\
7 & ` - 7 & & + # +' ' 6- + 2 & A
3&) / ( 2 - /0+ ',& -
& 87 : / 8
' :Qr0sGrrtr
& %):%)Qr*SŒ4
‰ % & + )#R/8+w6' ŽA ViMM / V & /J& +.J
4 + 2 2 / /J&,+ SZ[D aD ‰ ' BG) g )FS"-/\1  "-
] /I
-"-
Š2"1#$
Mrt
a MS|% -J-D €o7% "7*34%-)h+41fV% /-I
& ,S
:"-#a-D G#8 c / A2 87 /L)5- + 2
& /J& + r Œs &ˆ
Kr*t &,+ 6+ ) A)(& A2 & 87 87c
Wf #c 4
W# f c , W  0"-
&,
T-(/ Ž " )&,+ .aS6/8%)+ )5"/ 1d 6r*- S& sG &(' \/0+'
+ ' ' 6q/r*t0u & ‚“4i8 #Š^4|$in2SŠ2NX): ' "l#
X :Q1)D "- X*-@U/-DY9 ' "-/- 64
& /0+' TŒ0˜J 4HK  &S4s &G
mŠ2*1dr*tG
q/r*0uQ‚“  % :D )# oU,{("*fz…-"- ' ;):‡L"
4/\14Qzy
87 , 87 7
# +' ' 6- +32 &) A2,& /8 +',
3-^/ & - & D & & ` - & /0+&,' + | ' "- :"I "-: & % :% Qr*
q Œ0u A| 0"-B0"5# J
A{, P ۥ ' -X*-af0""*1;OI
m+41Q-FSA4 ' ")L"-.- z\
A&) (2 /0+',& -87 ' c :Qrf+ GŒ6+  /Ja&,% + ) Rr*&,+ r 6+3) &,+ W 54
) & /0+'
q ŒGrOu & U|GOD"- FS"*.,@7 A& & # /0+ +32 f + J' A&(' 4
\/0+' ‚j14
)wAD)D)-O"*
nr*tˆG
q ŒŒ*uJŠ^YoU‚b/\f A& @ /8+' # &) / + 2
6- A2 # && 3-  D)‘>-D $|4 !"# g )FSO"- y14
& /0- % :%)/0+ r*ŒG  % +)D)*#26w€| i8IyZ[{UIySŒ0I &t
q Œ 0 uJŠ^7oUh‚b/P#`Š^g|$7iM2 &
:c:"-/-D)27zy
# H4/\1_ ' -XOI
A&) (2 /0+',- & (87 c W f #c & + 6+ ) &,+ A&(' * /0+' # +' ' ; 6-(/ ',+ + 2
f 6+ /J& + ' : S
Ta%) Vr*r
q ŒuJŠ^2‚c!/* / ' 7
& /0+' & #)# & Iv ‚c+ ) O 1  & %) +)
3/ D) - :;wA& ' G144 r* &G