osl: a compiler and runtime for data parallel python - par lab

1
OSL: A Compiler and Runtime for Data Parallel Python Yunsup Lee Bryan Catanzaro andYong‐Jin Kwon !"#$ &’()’*++,-) .(/01 23*4 50 6789 :30 ;’()’*++,-) +(/01 0-<(=’*)0> 430 ;’()’*++0’ 4( 5’,40 ><*1*?10 <(/0 @,)3 ;0’A(’+*-<0 ,> ;(>>,?10 23*4 50 #7B6789 @*’/ 4( /0?=) C0’-01 <(/0 2011D * 1(4 (A ;0(;10 =>0 E;’,-4AF> 4( /0?=)G H1(?*1 >I-<3’(-,J*4,(- ,> 3*’/ 4( ;’()’*+ 9K;1(,4,-) 430 H&"L> +0+(’I 3,0’*’<3I 0M<,0-41I ,> 3*’/ !N!OO ,> -(4 3,)31I ;’(/=<4,P0 !"#$ &’()*+ ,-./012’34 ,5-5**4* ,-.(-566’7( #57(05(4 ,+2).7 ’8 )’()*+ 9-./012’34 :.7;2 )534 2. <.--+ 5=.02 2+948 .- /41*5-52’.78 >5224-’48 ’71*0/4/ ?4 <572 2. =-’7( ,+2).7;8 9-./012’3’2+ 2. @,A 9-.(-566’7( B**.< 5-=’2-5-+ ,+2).7 1./4 2. =4 ’724(-524/ <’2) )’() 94-C.-65714 80=842 .C ,+2).7 1./4 D.69’*4 2)’8 80=842 .C ,+2).7 1./4 2. @,A A84 ,+2).7 58 57 460*52.- C.- /4=0((’7( !"# %&’(&)**+,( -’./0 !"#$%& (&#)*+*)#)* , -./0 )1#)&2(%&2 3!. -./0 4)*&)52 -./0 678 9%:+(5)* ;+"9<=>? !"#$%& -%=) @%*:>5 +"#$%& 0&&%#>#)= +"#$%& !"#$%& #% -./0 -%=) A)&)*>#%* -./0 B(&=(&A2 ;+"9<=>? -C/D /080 !"# %&’&(()( *’+,+-+.)/ !"#$%&’ 0&’’&12 3(-)’/2 &’45,)6-/7 "+,+(&’ -8 9,&*: &’’&1; )<*(&+6)= 86 ->) 6)<- /(+=) 3(-)’/; & (+/- 8? 3(-)’0&’’&12 )(),)6-2 @=+,A2 @*8/+-+86A2 &’45,)6-/7 B- >&/ &CC)// -8 ->) *))’/D )(),)6-/ &’45,)6-/ ; & (+/- 8? &61 -1*) %)"*#+,%# 0(&E)(/2 &’’&12 ’)=8*2 &’45,)6-/7 "+,+(&’ -8 9’)=5C): (&E)(/2 &’’&1; )<*(&+6)= 86 ->) 6)<- /(+=) F)=5C-+86 8*)’&-8’ ’)=8*0)(),)6-&2 )(),)6-E7 G8,,5-&-+.)2 &//8C+&-+.) &’45,)6-/ ; & (+/- 8? &61 -1*) !"# %&’ ()*+,-. ! # $%&’!"#$%&( )* + # $%&’!"#$%’( !* ,-. !"#$%&’-/-$-01*2 ,-. !"#$%’’-/-$-01*2 ) ! + ) ! + !"#$%& !"#$%’ !"#$%& !"#$%’ 3/1-45 # 6!"#$%&( !"#$%’7 %489$-015 # 6:7 +# )#$*+,"’)( 3/1-45( %489$-015* ,-. !"#$%&’%44%;( -/-$-01( 6/-081<7( 6=7( %489$-015*2 ,-. !"#$%’’%44%;( -/-$-01( 6/-081<7( 6=7( %489$-015*2 !"#$%" ’() *+,!"#$%" ! #$%&’( !"#$% #$%&’( ) #$*&+$,!"#$%- !. *$/ !"#$%,$’$0$1(2- $’$0$1(3.4 ! 5 6 6 5 7 ’23$’% #$%&’(% 2#8&0$1(% ) 9:; #$%&’(% ) +2(#$*&+$,’23$’%- !- !"#$%- 2#8&0$1(%. *$/ !"#$%,$’$0$1(2- $’$0$1(3- 2#8&0$1(%.4 !"#$% !"# %&’( !"#$ & !"#$ ’()*# +,-# ./*0+-"* ’-1,+ 2/* "* +,( 345 ’() *+,-./ 012 & 678 #/99"2+# -*+(292"0(:/2)$ -*.(2(*0( +) . 3 02 4(564, 0 (78(2 4(564, . !"#$ ’() 975(4-.44.:/ (7(*(,5/ ;<(+=<5/ >+’5<?/ ;:/ @?/ .4=6*(,5812 A.7 B ($(’(*+ +) C D ;2 A.7 B ’-*-A.7/ )22);<;=>?<@?1 +) ; D ,(-1,+EF2 A.7 B ’-*-A.7/ )22);<;A>?<@?1 +) C D @2 A.7 B ’-*-A.7/ )22);<;?<@=>?1 +) @ D B-:+,EF2 A.7 B ’-*-A.7/ )22);<;?<@A>?1 4(564, A.7 !"#$ !"#$C*+2; & !"#$C*+2; ’()*# (@(0/+( +,-# "* +,( 345D -. ;"/ $()E( +,-# "/+ +,-# & -# E)$-: 4;+,"* 0":( +,)+ B"/$: 92":/0( +,( #)’( 2(#/$+ FG/+ #$"BH ’() G(4,(7-H+@(7812 4(564, 85(,I+7-H+@(78/ ;975(4?/ ;?1 !"#"$%&’&( *++,-%".-/’ 01-2&’ 3&$&"1%4 !"#$% ’()*%+, ’(-(+./#0% 1%2,().3 45"%#). 1%2,6+% 7+#89%), ’(":9)% ;()5"#2 .6//+%..9() !),%+*%)9)$ ’(),(6+ 7%)%+#-9<%8 =9$%).(-*%+ >+9%),%8 =)%+$? ’(":9)#@() ’(":9)%A ;(+"#-9<% ’(),(6+. B$ ’$# ’$: !"#$%&#’ )*+%+,-%-&. ! # $! $# %! %# &! &# ’! ’# ()!! *+% ,$- ./0123 41256 7$!-! ,&! ./0123 !"#$%&’ )$#*+#,"’ 4849: *;< =>9?@A8>B $ $! $!! $!!! $!!!! $!!!!! ;C4D8E 8F: ,&! ./0123 7 ,) ./0123 7<G9 ,&! ./0123 !"#$%&’ )$#*+#,"’ ;C4D8EH $ ./01 E1I651J 8F:H &! ./01 41256 7$!-! 7 K LMI016N2H ) ./01 O60.15/P6 7<G9H &! ./01 41256 7$!-! QPM1012RPS 7/JL60T2/P2H $!!!U V62M10 MI6P 210T65 LWMI/P $#U 25/X10 MI6P I6PN 7<G9 =06J1X/0Y /Z10I16NH 7/JLT56R/P[ G6M6 J/Z1J1PM \7/P2M6PM[ ]^M 2TSPT_.6PM 7<G9 7/JLT56R/P M6Y12 \# 21.‘ TV X1 JT22 .6.I1 ;6065515 2.656]T5TMW T2 S//N 8]210Z1 &‘a#U J6U $‘)U V0/J L6065515T2J /MI10 2L11N^L V0/J 60.I‘

Upload: others

Post on 11-Feb-2022

14 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: OSL: A Compiler and Runtime for Data Parallel Python - Par Lab

OSL: A Compiler and Runtime for Data Parallel Python 

Yunsup Lee Bryan Catanzaro and Yong‐Jin Kwon 

!"#$%&'()'*++,-)%.(/01%

•! 23*4%50%6789%–! :30%;'()'*++,-)%+(/01%0-<(='*)0>%430%;'()'*++0'%4(%5',40%><*1*?10%<(/0%

–!@,)3%;0'A('+*-<0%,>%;(>>,?10%

•! 23*4%50%#7B6789%–!@*'/%4(%/0?=)%C0'-01%<(/0%

•! 2011D%*%1(4%(A%;0(;10%=>0%E;',-4AF>%4(%/0?=)G%

–!H1(?*1%>I-<3'(-,J*4,(-%,>%3*'/%4(%;'()'*+%

–! 9K;1(,4,-)%430%H&"L>%+0+('I%3,0'*'<3I%0M<,0-41I%,>%3*'/%

–!!N!OO%,>%-(4%3,)31I%;'(/=<4,P0%

!"#$%&'()*+%,-./012'34%,5-5**4*%

,-.(-566'7(%#57(05(4%

•! ,+2).7%'8%)'()*+%9-./012'34%

–!:.7;2%)534%2.%<.--+%5=.02%2+948%.-%/41*5-52'.78%

–!>5224-'48%'71*0/4/%

•! ?4%<572%2.%=-'7(%,+2).7;8%9-./012'3'2+%2.%@,A%9-.(-566'7(%

–!B**.<%5-='2-5-+%,+2).7%1./4%2.%=4%'724(-524/%<'2)%)'()%94-C.-65714%80=842%.C%,+2).7%1./4%

–!D.69'*4%2)'8%80=842%.C%,+2).7%1./4%2.%@,A%

–!A84%,+2).7%58%57%460*52.-%C.-%/4=0(('7(%

!"#$%&'(&)**+,($-'./0$

!"#$%&'(&#)*+*)#)*'

,'-./0')1#)&2(%&2'

3!.'

-./0'4)*&)52'

-./0'678'9%:+(5)*'

;+"9<=>?'

!"#$%&'-%=)'

@%*:>5'

+"#$%&'

0&&%#>#)='

+"#$%&'

!"#$%&'#%'-./0'

-%=)'A)&)*>#%*'

-./0'B(&=(&A2'

;+"9<=>?'

-C/D'

/080'

!"#$%&'&(()($*'+,+-+.)/$

•! !"#$%&'(0&''&12$3(-)'/2$&'45,)6-/7$–! "+,+(&'$-8$9,&*:$–! &''&1;$)<*(&+6)=$86$->)$6)<-$/(+=)$

–! 3(-)'/;$&$(+/-$8?$•! 3(-)'0&''&12$)(),)6-2$@=+,A2$@*8/+-+86A2$&'45,)6-/7$

•! B-$>&/$&CC)//$-8$->)$*))'/D$)(),)6-/$

–! &'45,)6-/$;$&$(+/-$8?$&61$-1*)$

•! %)"*#+,%#(0(&E)(/2$&''&12$')=8*2$&'45,)6-/7$–! "+,+(&'$-8$9')=5C):$

–! (&E)(/2$&''&1;$)<*(&+6)=$86$->)$6)<-$/(+=)$–! F)=5C-+86$8*)'&-8'$

•! ')=8*0)(),)6-&2$)(),)6-E7$

•! G8,,5-&-+.)2$&//8C+&-+.) $$

–! &'45,)6-/$;$&$(+/-$8?$&61$-1*)$

!"#$%&'$()*+,-.$

!"#"$%&'!"#$%&(")*"

+"#"$%&'!"#$%'("!*"

,-."!"#$%&'-/-$-01*2"

,-."!"#$%''-/-$-01*2"

)"

!"

+"

)"

!"

+"

!"#$%&(

!"#$%'(

!"#$%&(

!"#$%'(

3/1-45"#"6!"#$%&("!"#$%'7"

%489$-015"#"6:7"

+"#")#$*+,"')("3/1-45("%489$-015*"

,-."!"#$%&'%44%;("-/-$-01("6/-081<7("6=7("%489$-015*2"

,-."!"#$%''%44%;("-/-$-01("6/-081<7("6=7("%489$-015*2"

!"#$%"&'()&*+,!"#$%"&

!"

#$%&'("

!"#$%&

#$%&'(")"#$*&+$,!"#$%-"!."

*$/"!"#$%,$'$0$1(2-"$'$0$1(3.4"

!"

5" 6" 6" 5" 7"'23$'%"

#$%&'(%"

2#8&0$1(%")"9:;"

#$%&'(%")"+2(#$*&+$,'23$'%-"!-"!"#$%-"2#8&0$1(%."

*$/"!"#$%,$'$0$1(2-"$'$0$1(3-"2#8&0$1(%.4"

!"#$%&

!"#$%&'($

!"#$%%&%!"#$%'()*#%+,-#%./*0+-"*%'-1,+%2/*%"*%+,(%345%'()$*+,-./$012$$&%678%#/99"2+#%-*+(292"0(:/2)$%-*.(2(*0(%

$+)$.$3$02$4(564,$0$$(78(2$4(564,$.$

!"#$%'()$975(4-.44.:/$(7(*(,5/$;<(+=<5/$>+'5<?/$;:/$@?/$.4=6*(,5812$

$A.7$B$($('(*+%$+)$C$D$;2$A.7$B$'-*-A.7/$)22);<;=>?<@?1$

$+)$;$D$,(-1,+EF2$A.7$B$'-*-A.7/$)22);<;A>?<@?1$

$+)$C$D$@2$A.7$B$'-*-A.7/$)22);<;?<@=>?1$$+)$@$D$B-:+,EF2$A.7$B$'-*-A.7/$)22);<;?<@A>?1$

$4(564,$A.7$

!"#$%

!"#$C*+2;%%&%!"#$C*+2;%'()*#%(@(0/+(%+,-#%"*%+,(%345D%-.%;"/%$()E(%+,-#%"/+%+,-#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&%%-#%E)$-:%4;+,"*%0":(%+,)+%B"/$:%92":/0(%+,(%#)'(%2(#/$+%FG/+%#$"BH%

'()$G(4,(7-H+@(7812$$4(564,$85(,I+7-H+@(78/$;975(4?/$;?1$

!"#"$%&'&()*++,-%".-/')01-2&')3&$&"1%4)

!"#$%&

'()*%+,&

'(-(+./#0%&

1%2,().3&

45"%#).&

1%2,6+%&

7+#89%),&

'(":9)%&

;()5"#2&

.6//+%..9()&

!),%+*%)9)$&'(),(6+&

7%)%+#-9<%8&

=9$%).(-*%+&

>+9%),%8&=)%+$?&

'(":9)#@()&

'(":9)%A&;(+"#-9<%&

'(),(6+.&

B$& '$#& '$:&

!"#$%&#'()*+%+,-%-&.(

!"

#"

$!"

$#"

%!"

%#"

&!"

&#"

'!"

'#"

()!!"*+%",$-"./0123" 41256"7$!-!",&!"./0123"

!"#$%&'(

)$#*+#,"'(

4849:" *;<" =>9?@A8>B"

$"

$!"

$!!"

$!!!"

$!!!!"

$!!!!!"

;C4D8E" 8F:",&!"./0123" 7",)"./0123" 7<G9",&!"./0123"!"#$%&'(

)$#*+#,"'(

•!";C4D8EH"$"./01"E1I651J"

•!"8F:H"&!"./01"41256"7$!-!"

•!"7"K"LMI016N2H")"./01"O60.15/P6"

•!"7<G9H"&!"./01"41256"7$!-!"

•!"QPM1012RPS"7/JL60T2/P2H""

•!"$!!!U"V62M10"MI6P"210T65"LWMI/P"

•!"$#U"25/X10"MI6P"I6PN"7<G9"

•!"=06J1X/0Y"/Z10I16NH"

•!"7/JLT56R/P["G6M6"J/Z1J1PM"

•!"\7/P2M6PM["]^M"2TSPT_.6PM"

•!"7<G9"7/JLT56R/P"M6Y12"\#"21.`"

TV"X1"JT22".6.I1"

•!";6065515"2.656]T5TMW"T2"S//N"

•!"8]210Z1"&`a#U"

•!"J6U"$`)U"V0/J"L6065515T2J"

•!"/MI10"2L11N^L"V0/J"60.I`"