From 59da6ce7512360a2f0f687cd02892edd11bfe242 Mon Sep 17 00:00:00 2001 From: Andy Grove Date: Mon, 18 Nov 2024 16:46:43 -0700 Subject: [PATCH] docs: Update documentation for 0.4.0 release (#1096) * update TPC-H results * update Maven links * update benchmarking guide and add TPC-DS results * include q72 --- README.md | 10 +- .../0.4.0/tpcds_allqueries.png | Bin 0 -> 28503 bytes .../0.4.0/tpcds_queries_compare.png | Bin 0 -> 43094 bytes .../0.4.0/tpcds_queries_speedup_abs.png | Bin 0 -> 64166 bytes .../0.4.0/tpcds_queries_speedup_rel.png | Bin 0 -> 90369 bytes .../0.4.0/tpch_allqueries.png | Bin 0 -> 29251 bytes .../0.4.0/tpch_queries_compare.png | Bin 0 -> 34357 bytes .../0.4.0/tpch_queries_speedup_abs.png | Bin 0 -> 37579 bytes .../0.4.0/tpch_queries_speedup_rel.png | Bin 0 -> 48051 bytes .../0.3.0/datafusion-python-tpch.json | 73 -- .../benchmark-results/0.4.0/comet-tpcds.json | 755 ++++++++++++++++++ .../benchmark-results/0.4.0/comet-tpch.json | 219 +++++ .../benchmark-results/0.4.0/spark-tpcds.json | 742 +++++++++++++++++ .../benchmark-results/0.4.0/spark-tpch.json | 203 +++++ .../datafusion-python-tpch.json | 0 .../benchmark-results/tpc-ds.md | 14 +- .../benchmark-results/tpc-h.md | 13 +- docs/source/contributor-guide/benchmarking.md | 4 +- docs/source/user-guide/installation.md | 12 +- 19 files changed, 1945 insertions(+), 100 deletions(-) create mode 100644 docs/source/_static/images/benchmark-results/0.4.0/tpcds_allqueries.png create mode 100644 docs/source/_static/images/benchmark-results/0.4.0/tpcds_queries_compare.png create mode 100644 docs/source/_static/images/benchmark-results/0.4.0/tpcds_queries_speedup_abs.png create mode 100644 docs/source/_static/images/benchmark-results/0.4.0/tpcds_queries_speedup_rel.png create mode 100644 docs/source/_static/images/benchmark-results/0.4.0/tpch_allqueries.png create mode 100644 docs/source/_static/images/benchmark-results/0.4.0/tpch_queries_compare.png create mode 100644 docs/source/_static/images/benchmark-results/0.4.0/tpch_queries_speedup_abs.png create mode 100644 docs/source/_static/images/benchmark-results/0.4.0/tpch_queries_speedup_rel.png delete mode 100644 docs/source/contributor-guide/benchmark-results/0.3.0/datafusion-python-tpch.json create mode 100644 docs/source/contributor-guide/benchmark-results/0.4.0/comet-tpcds.json create mode 100644 docs/source/contributor-guide/benchmark-results/0.4.0/comet-tpch.json create mode 100644 docs/source/contributor-guide/benchmark-results/0.4.0/spark-tpcds.json create mode 100644 docs/source/contributor-guide/benchmark-results/0.4.0/spark-tpch.json rename docs/source/contributor-guide/benchmark-results/{0.2.0 => datafusion-40.1.0}/datafusion-python-tpch.json (100%) diff --git a/README.md b/README.md index 1a6281a99..caad63924 100644 --- a/README.md +++ b/README.md @@ -46,7 +46,7 @@ The following chart shows the time it takes to run the 22 TPC-H queries against using a single executor with 8 cores. See the [Comet Benchmarking Guide](https://datafusion.apache.org/comet/contributor-guide/benchmarking.html) for details of the environment used for these benchmarks. -When using Comet, the overall run time is reduced from 616 seconds to 374 seconds, a 1.6x speedup, with query 1 +When using Comet, the overall run time is reduced from 615 seconds to 364 seconds, a 1.7x speedup, with query 1 running 9x faster than Spark. Running the same queries with DataFusion standalone (without Spark) using the same number of cores results in a 3.6x @@ -55,21 +55,21 @@ speedup compared to Spark. Comet is not yet achieving full DataFusion speeds in all cases, but with future work we aim to provide a 2x-4x speedup for a broader set of queries. -![](docs/source/_static/images/benchmark-results/0.3.0/tpch_allqueries.png) +![](docs/source/_static/images/benchmark-results/0.4.0/tpch_allqueries.png) Here is a breakdown showing relative performance of Spark, Comet, and DataFusion for each TPC-H query. -![](docs/source/_static/images/benchmark-results/0.3.0/tpch_queries_compare.png) +![](docs/source/_static/images/benchmark-results/0.4.0/tpch_queries_compare.png) The following charts shows how much Comet currently accelerates each query from the benchmark. ### Relative speedup -![](docs/source/_static/images/benchmark-results/0.3.0/tpch_queries_speedup_rel.png) +![](docs/source/_static/images/benchmark-results/0.4.0/tpch_queries_speedup_rel.png) ### Absolute speedup -![](docs/source/_static/images/benchmark-results/0.3.0/tpch_queries_speedup_abs.png) +![](docs/source/_static/images/benchmark-results/0.4.0/tpch_queries_speedup_abs.png) These benchmarks can be reproduced in any environment using the documentation in the [Comet Benchmarking Guide](https://datafusion.apache.org/comet/contributor-guide/benchmarking.html). We encourage diff --git a/docs/source/_static/images/benchmark-results/0.4.0/tpcds_allqueries.png b/docs/source/_static/images/benchmark-results/0.4.0/tpcds_allqueries.png new file mode 100644 index 0000000000000000000000000000000000000000..b1c9e3c90a871b9befcfd35bca84b075601a356c GIT binary patch literal 28503 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 literal 0 HcmV?d00001 diff --git a/docs/source/_static/images/benchmark-results/0.4.0/tpcds_queries_compare.png b/docs/source/_static/images/benchmark-results/0.4.0/tpcds_queries_compare.png new file mode 100644 index 0000000000000000000000000000000000000000..e367fe4cc7d10faf6b7a21eabe19ddbb9eede0cb GIT binary patch literal 43094 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 E0eV7O`2YX_ literal 0 HcmV?d00001 diff --git a/docs/source/_static/images/benchmark-results/0.4.0/tpcds_queries_speedup_rel.png b/docs/source/_static/images/benchmark-results/0.4.0/tpcds_queries_speedup_rel.png new file mode 100644 index 0000000000000000000000000000000000000000..afbea75ac03b553ad543183cb2ba073fac685b3e GIT binary patch literal 90369 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±>k_ca125fbtudjeBV4QjrE1^0r1L_RNUguM%{#etC8x`Yd6k?Df zaU~4@>J;~OYT(6LA!wj;h`YsAN`sR5fbyIVDNgeZ!n+m>&I`hWxO7x&F+&q2HXf>^ zD|i4Z@kYcgN$39gK0|P3K~gIp1LeU-%`((pQD;csJJ_pY|0WkoLed?*VN{5d<2tuAp{*%#;9Fsh1lIg;?hhw&M<}P=lM@dk;sp!!OJ7Vud!g}vL7AlMenO( z_30Wr&Qmief*45Q%=&6)!A*AGldu^`- ziYa#@UszrBwt1E4Nv%F`(V1G0j{f)%=4_si28I@5=e&FAd1qTyKa|Lqaq?-K*WI}910RlaY#?A3S_a4NKV~`5x69r1X z@&IHzDbhcryjF_ob9YOv2UKPEvH_-!(42`#>g|Y6ucKHzR}0H0+Oaxu6I8wBgV4~A z1??ycw$BUt{1s@{ZbxDbg*P07zrsC{|Dsdt0S+{1xf{kxo#d?`ci^Wc7@3PKA`aUS z-lAmkhS?<4xPJn8XUk8*;jQd{fTE9+(k?Uc7DVW_P%SNkXjBjyU5$mSgd&j2_Cq{_ z`K#y(Aq2u>w;e0DBN3=}?dg*ZJ3vo#4B&tdgt8$!_#iMQLI$=RJ^v5$3mj0q3edGE zyjIlMfB=SQrBu8%_S97P=%6I2HK`-Nf^rqqEt(_^lh|Q z_*bK=Ni`c*U3n)8;PU=lz{Gq|%IZkN4^H3({!*=2=;`{a7bLxDapNn@;%F2VH1aHNk3Oj4AWC!?3o9Jy`Grck<>=J{+a38hv2vS=J2f6#X z*IkQRi#DbZ&t*k0!|w& zTK-kcI})D*7_&!+NOI&PZpaH&qatH@Y2|2cJCLOkUUvYC`gEZs<(s`Cjv7vXPP$Lp zOwf?g5}C;zl)E&Xw$JzxVmSm+8A(2f)uI6d5?%GfC7KBv5lcmE&Dhf=9@nc3T&)}f z7R1g4X`s|opM9}nR7D@O7BOcRE9ib_S66D)&7rSo+A9vlP2f)B=j{R?b8Bc?1E6Um z^^XWdk@PjvganT>6P`1I)JLU2P@%Q?(c>#CcW&IY|B66 zG(el^w$zs6E(A#y!Zr2j0DIU3%8%m^(NL3`Y@_Bm{MLWdwcQ)(&0*L?d|={di)HKv z-M^m+V7Q#U-fly2*h8B8Var8{2}k%z!mGEy0~HvPy_aR!(2rW*MDS5!>jak&IRqjx zgaiVA)}qAN=%M5lN37MX+VJ;73&Jj}s^l2;IRVC)Xjinrb`!HgTqt|)=l-EU2C*EV z6WKE$M5+_hP4_B~wG1$DF((PBDL68W7EZTIF8gD_*uUQKXK!Th5LKWg2niIkF`%vs zmPwLy6iO0ZYVEIaL$u`XF4J-)T?P4HvB7dx4ZA9~J;s z5icxb8J}SahnTjX_w8SIeWLl(k!68Uwo0SI~SL-JNJ#?MANN^&LxcM3l4vQ(Eh+qt=Nyznsdep>}34el4D!WVtka+3(!(TVzaOYk5u5Y2sI!Kfui@;)nnCi)y(K}{<# zQY@pEa#B!0r&T;+=l;G|jT_@cSt#E5X}sb>%60?Mm|fr4hs>#b7C0t_TR zFA+!Y*e#<)X9Z6JcCrf?$V!SqyHO0FaU7D?P$f*TktDQ{fh?Mq9E1diBcEf_aX|hO(any1sSw@lI(Fb2v1A^v6L8k zr=HFMm#0Ma_}|>qd(C~JJ{@*@~FAbM`#SW@}efQ?YCv1J!U*9m< z@CU{8-*4>IhV}mU5A^%t75`r1zw7buTKsn<{`bn+PF#vMV3|e4qD3gd(p@}ylQkc>-l!9r9ThKs6;UhGx ziGD|zTj1rdJ}(@H+bn<&HzTSyz#HBm@(3DN706w0Qlki9E>c=%^8FHfD9Bo%zP<)Bq3%h5X|glR22 z>K3{w%^%WH5C5O56q?GGvxB<71==2S)6$SYa1IF$xwxhr)I-9q!=0#;rw{nBMFZ?7 zI6LD}FF0qkKQ0l&=ZzhtHk4y%#OZ97TMv**vLjM0K2*l|ML7_y%F!+=kBDHLAG5je z?5x>#zkhe238=YYHHTzC1i6%%h zj$sf*nquZ=SEZ=^hzZqcp!Nicbb%r5J+T_hEQ{(SDk9M=k1q27-yVf#zTx2E&zBzc z3YPJlZWox<=y?rL(?kUP0ktM*VsDtMq3Uy80=;g-=yNelAb6^Ze#WxbA?Jzh{+?sH zmC7hl68uA-oC?9}Y^r_~x=0iQ-j+`7ut<)j!owWW%!e!}KUAz-$-2y|lTd{G0Gi}M znE`aAAj*2Y*DwD3kcPJP+p*#m+9>>cD{#61O@tF|L1SAqd}8H{kE!4%7;34=RGKOz zgQa?on<^6O_tPZP8#CxUs4234jn!cD+HXGJf}{81AH@i)KLd3PyYGzppH|nG8w3~$ z4ruCt*h_KnbgxOYr=ih;9v=}E$r#nzEC;$d?5b$ZHg<;uM-s3*adavPBr|;WEB=1i zUt_K^O%1gRe04S<6(pcZsv+1K>TNK%Ng|EmW3FZp-$f*XBSG0^NIv!LMhF5c^#8_6KB)>r^5|vmbaxqI;Zz_T2elb9V0x}y?GHZ_ zN*s-zh3qMlvv#X?ZfvU(L>!G!x*egNjIn87FE3Ez75eKwFD0%D{_$+WRf+C{Iw=Ro zN0dWdcrYm66d52rHQ`tl*Ye@>KjxU8hXBqossr^nj&fsgP48%XwPBSAkNMkEj+&pN zAV}jMk1lGoJO-)8SgXuTAlhak7-CeWlPN$Y-bcqICUe(ldGYPwL$|KKNeI((HnFSH zN9M*%_~xncxbF79-8E;L2ZMncPTz63d0+smfhM+U!7foAC-w)Y6*L3nun@&*Y=zFd zV-wwgUUA)aGxtD^{w-eX)ipm_-I<~a0gRB1fsngPe}T*v`xfp^2eyDap6qst$^7ZB zn>Q9UeP)ru8c2-;ym21{Rt8iQbeI@T@v+rGIBCHQJsR=mo2qtb&ajp5SZxib!d@;B z(%z!Ae`2q#Ku)%kt?Xv`nk>kszZ7CIlrndvDy!3IYe9%XiveVkbmBQktiNO&B+@MjT5 zOX)@Hy2iwU?_EXZ7~KE(Z_oEyTD}p>c0&Czcj3w>&?CRZ85E@ebzWH!o1SVKKD8~l z*l~IN`OOMH*;?h#UnwJbWIWm{D!I4I5~M9VaQ*x4{-V1F zmZZ0?|5UlC`|*PKtna6L=RHu}S{C&`Pw*x{<8WivcXBEgZ&R(-Ea%nW7847Ijg9@8 z>%g}{)@!e)q`K`NcoNYXF=SNzhb&`r|pNI0r72xgoJW* zX|zu}@tEva%3JbTm$`l_@;@B4__$eKy#7U2kSKpf?WEh=ob0CIfG;=axRH?}L*;jj z+$y8MSfZ1lmADaYF~`Xz+?$^$iv5^oecg9{oVr7*^OSj zjd@G%72Xn_$D@8e)yk+@ex>l-%J@Z9!lpm_ZuoM`3wh%1+`02Z+2!lpvS!d}#Oi1I z;~u9V0I|gZW}C+k+9sp$Xj|V6Q^(Om}TI;{QjYHrX_duCA89a1Wj%J=jFM#2a1!S{QOWQ zaugaqIt9in)}|)qHyXFY;cncYj`w}EdGab+{jx`8{5rR3=gw7DHG92RJhI;!Yq*3Z zv*cas(>p&tvgAAzy4Lm5KeyTI(oBvT<3oZ&_>v#wyh;#Xwr$&nB|D3kP)$8q-4ohX zml=S{ZmrreUlsKWa}UR?Sf*LfkR={;Lqj3hrU-hNV7Odl$A~+I9HHH1IQ0f);$(Ex7Amr=zoIA z)h+kz&Cp(ZHc@;C!6HjYD7^4R3BQYs(N}!Bb7M5~rbZ6<+TIBizH4i|d*b9usmI6v z$E!E{Ulfs(|1K8-^lC(84oFe9NJs=DK|J!9a!E=~Uh1}IyJM}xQiqPY;^L3Ym!?=R zdY5+DtU)j#|JbyfR))|a4X^@-yIm%2SBeR^UHwT?-uACp^6Zy%v#_gM_Wkp%<;vej z{$XIxL8{P+y&ShhELYHE5u}Qy`CiNE=%%MpzA6RJuf9sNNe>m}zgei0c4^K6B&wh* zLMBJwJlN3{t10-YM&!7x`Lx?g@$W-DrI)?m?{jIxz8?eyAFJp!L%~^Fwx4crQyui^J^HCWn<81) zyLt94PXY{|)n@c|rM=3L${I1)HL=fVyY;76hrJ-n#xL*Z?4Ia6A=FZQPTud1)w>-# zt&3M`Ws2&tZhfctg|{&x^1PQ)CZ&@%kDHmrHf9&OGni_|}>^P~_xoTqg;>eA_ zRXNiA2hS)Q7yOj%lGu}L7$*Jd;nKmLB_bA2dfy*TJ?Su^@Wr<5$%uiqZ@yL8)HMd?)FnPIlvh%g_T^;6IR{5PDZ~b(-QRJ7x;{k^2UH7M1UyMw@=d(Bx zBT?5y<4XQ1Wjg(a7=b(vo7p8pJg)9Y~L3wM4PtXAb^@63<3$K}+F z_}4!^ebM;ZwK;Sb68d=$BBUt@ju^3**!Qty~W&5sNo>AbEgH5-C2Y7t3)N`T1uq zW%*SfpRXIQ{{6SI<0+P$^2SbebF6Bf2(z9n*L+f&aX3;x<+>{z7ye{5LL5|XovlnVxs|@+qK^z5u5ohUy;$zKu*t70h(JzDKOxKd-N@zfq1o^=)iLlqp{_I21{d8tLKe@W7`^_wXP zzE?8-!TXt%z5PA@SWJudb*x&o!&1XR98hF(45l*Hy3fPI!S#RQK%`%6Lvow zl9*`nJ*9tdE{vFIc_2+@ug>aP4~Y~Tt}Pk=d`WIOd3~z9eiN~(xhbIk_*J^C@%;Jo z(=lo^hVn(NGmN74M`Uaf$L_WA2Kmb?_nf}61GBeV;c> zudw@|?`8Q;^s)Pwj=j!L>jy)mi31f z9Xs+!4lPrQUx;jJ;K$1uf56CdyLCg(Gp75*Py2yOGBV1JyEWu3$#blF8khD=QA{>B z_Y1d*@ML{!iAZxf&{z4ASp8YV;6-bm=?t}>>P##%IdprzSS?3d?N?hv{!=MEvv#$J zSI#m`72gm30vGQqF6iMDymWCv-q0$u-*f)w!ZRT-3S|5@kmTv9#OQKLkNz;6t$KHv znECgT0}E?i1#b#+l}aD`IwJDoZw_AuyALeX6LRH7rhg`hn%Lt4`HF#GEm*Pl^5Pvw zIV1-U->Ofw-&!2H?tf9n%oX;n_ocVqR=m+I_Q=SOYp`|ouCqGKJ9ioz&4R@a*!!z( z&(}Y*A;f9@!gce7O`p6?L`q2P;r+q@+j9R%GZ?<2-n{F9-#XRK3Um7^cXW=P^X9?sbrWBJVL8UMJ)2h` znv5i4P>22o;o9o6=-`FnIGyw8w&-g4G7h$uKC;&DyU4t@j(r0?pY^9cUPXB`*ggmF z?EDS|jV_M7_ zd9qDrhxOVJCxbq=nHzgEU-CRw>MO6k1!aUbk%KOcKUAf+4_wfHz zYg4Ukfcc?7W_l-}{R)`sJ;-Kn@~G39VKm&gb^HWl@jl8D+HWG$89~dc?#+7>GjC$} z$J3|F%pBYQ-%LrKI$5hh+O0*~wHZ3~qZolfukZX)Z%glkD&O+9snlNI@G8OZRIq*nxGTF7&s%Z*cp?cAot7_B$R;0lgyDWvBXcDJj3-{-1cv zpyG1b5j}0ITva9U&DXZx7!3Pt^9M&HLQ2AxT$uZGsA^x7l2MoE4Cnnra-R~vc%_I< zL2wuOS!ngX$KZ5?UGqyiZJnBrnPw2fHoQ^pXDo5^kOs~9i3I{CR`je z=i_s6ZN)EMOMVyOz9yX7u8qDdoqghr^K$4kG3O7zZB2*Veb(D-S25~|FLjfbdnj-u zGCh{>mMH(SN}ZImHaWiyuKePPjOl&kD1~(xT%!3Zau^Q69z-`FLYD!+qHJKu*T3}p z15{KQ2DsH9;Cfnm`*5yDq1l(VP`HI1N%LE9()&ErVSP>`XpXjGw(BnDM5&=FU^a^L z?|#R66k|mDppMRJ8qT}XI%m!tjI!Qbs!4bA{7c5I zuoxk5a|Q+_awhwWHdbEc>D9}UD(Z!5x&f8XWwYf;JkD2<7 zIL_>z+gLwzuCzYxBXqonJf@$3J{O!p-*k*#j)wWam&uH1!V%q1@A>>>El?b~h+p>^ zr{R8Abz+XJ}Cc9`YiW$QJj|!x%=pBnzy|%gswdS z!dLM3?`85ZVEQ|Ls&yuxKmQeu5-1{^3{m>`95|a~KLpjz5FL!>3wk`oWRFuz>FpvM zw7`ksO+F6HkQ-q-^9d#`=zq7PFe!CVUfS9DRK4^2$M$BZfrW&P-fVlID;9J`&bKkp ztg+tpuAB4jVXc)rzbY@kW7m8_$jdiuNv0EMxWe0CAliscK4kTFQxhZXBOs+SalZc< z9HV^;(+VNV>L(DnFh9nL9d5~FqUxigysn^g(T@Z6&*OI$0Nx%zdW_9%kdnF$7+Qt{ zuaAwCvRGSXWM(oaP%X|v)!fjJpZ>2T%HMBvZwNg&!rP7iCqy3a$Gy15v7vS}`R4(_ z9*Ni6)8LUQ7P2*aSA)lziNGz2=c^2rKZbjkw>5ZjjnruZL`Njro2?c$>%PZ5eLzu3 zX|+?Gx|ft|V|2{$&Qpy!5yk%~^dj=k&D;mKMTvBC1~%mt>ZEBQV}BTiuB?a#v4np(WxSf-3B9Yht3xmvCiY0qi5mw*`^WsbKb zHh-9EnS6aEPwL~|brS0fGFnA9@>+_$OEa@8Smz1(NXf}MolC1l+IO0jX5P5n+7kRa zP&95m#4MX!Mhr@93%X3(%1;bW_ZQiz#RZMjO^x=Mf$TTjzU}Pvl&;Ydo|#@E$Jl6sO5|n=#K}LOK0WL-Liii{Y$#a#!K{BBdZ@4WRdmUX?y8w9#>Kmf zg%`iMI~&m|R#(#>7$-J1%zdO2F(^9U?b@O>M<+)eU`GFkulIoGa{d3ubxH$KXei^H z%8q1YWE9acLR3;DTgl$LVPuptqB628ic%RFMF^EpM#x?vBYXay_nU_E`TqZp$Enlf z9C5$z`?{~|^?I(??4;X;I4BXROhy&FMKzC@ z5+@4tueTkGl3OUjY=JUs3nUFl8Z^VBe|L5i6{F-*ET(QCqg zOJRXm>vVuXZ28UQ=Tueed#q$mqy6^%XMyoIH^Iaf70RulmSt@SU&=u!e_-UKCo)X# zKO@`?vEg(LImQVaLC7`zXt9a5H?tgT#+S@X?6bS=G1y=_{&QU!w&Gkp>vYOt_hk zVq@D;%Q}E~Yarn*H!7;Ds*t0*3N9g$j_3#IG>HgLc}A5WJ+&C=@HG2-k50Gt#OXJC zv=^%eaC2OgyH;@O#O44N8pT_0@;q|*$#`=%eArLpP3^@XaJK)X$oI^iajB2*ZtMCr zL`i&1XQyJ;vesO-0(Z$z>yqk7VlE3DX`S~><*PipQ$4)CJa0WLMWJ4nH;w+iucp#K z&~!D>{vTZ*A5_1t2x8SQT%FlYja=oSvGIo1E%_HqgX8L1&dyE8P5{n5zbQp?rG3cJ@YZ8(}-r|Kq_?HIe{)%uB@0*zRj{$Y;OD*_nTB}LFusHf&LE2tfPpg}V~ zc^D{LW9|JFJf{vkP%907vi#*Lc=p`9DV89Hq8$JF^1^Gcet~I!oodkCy*vL0nkynh-O#)NP35^nb7e!Nz_;d~91DH_pex78KmbcxxlG61&# zR^aO|j=K?M`hvUL^a0eB)7saz@wtkG@N94TZ-?V|jcCMn^=|keA*?h8)XMVF;Xpp^ zfrrVlrMN9d72fF|xU%QN@?W7t{r0)^=3axfqkUTvAL5vqaWAURV@g!o2cf-!j!5S2{TysQYGZUFH)@vv#?ylHwg~ip6siGX9%m zwoZ&ze|%vEv?q6e!1gUiii@x51~oJ}6s}?Me4es|5Szv zv_yd&3nYZrZI!%&^F%WXn-_W`gsTpXlmlHvPEciNSmKc@fszynPg&;Hmfc!k%i_UE zVN)73416`+xsNBab@gOBi%fmrKt}6uNnEK(4b_)tm%84^s3%>Cmeu|9g{hF-{@)&3 zjf*>ygoOS;{=hY09BvM7DDK%N4+VuZDuiCXBUEUYprGr#^;IdmjPs%VX*5Bttv;-mRe&A+6vcxxxnjKwwfFAh-w6t#3PZlT zII|Lxd@g@#D@wC54rgAi8&pStp-Oi*D`?w&dsP>Q(;0FZ!mlDkVj zKhD$o?FID{D)&~tEnP=9NI}u^PC(|i>at4%yS)gpQpd=wsmsY4n!ik05dY}g=hn>j z*iw$;6nOhC^SFKL{)I$NPOcqc3g1AeqfuQy=krYI;$`(+OMz=ethX5$Y9gu*><+!MGTp! zk<#1KS^V^Ke?BezIp{XnDPUHswu#c-5vD16+#PiV-&b-$JcsRwLR0__A7HY87QMIM zGgis`p3UdP!=>ZFRHjc(j!IuPdJ{c*CaaxP47B5>pEyzs4PQ?Vry0l#GLVtB%4IaV zP6TNcE7|_%IOgIcdR=m}y0jG+5f#EdxeErrBpDyRO4EEw-nGFm9%=-d2Vo;C3-f8P zph;y_Y$;`LO-YA?QT4;OdVz5aOlo<(rqJ&5!=c_J)kmi|ZW|gE=Sdw%H~N@(gu}t^ zo9$3K2k9~S2&gQ3N=J$>8GZ2Fxbtj9)KKnL@k|5j|J>Zjr`0of^VUJo%*XTUvXYSXaxCeBNSL*rC1=D*= zUa>5Y_-O!7;O5z?Lp>jB%UrS?_%bwwXs>WaVWO5{Is(>IcF@N9>}Rf%>8qpM_Wk!f zi*FMlaY2wv6rhE9izvdwFb=OcnQhC7z_G!)947%HN9?i+hrEIzIr*B@&^;^^Cy$1v zVIg6RrP77Ix{Xx}gS8eRT;!c)vcW4*dvUzt(WL!u`sw0k9%*IzedeD3$P^gY{3QD+ z1@u2>ScKQyie!>ZqS(~ZoAeJ4kE@PCL9DE0InRx-H8MU0LbV}E$^;Y6^i^Hn_wawX z&NucWIM4Z!V*eI!pU&Nmgyzwsmx*Cw6G~urtQ&@U2PBxi8ltp@XZ57!7 zDD_JK4(e0S&kmi1!Mp$o#cAV7QnJC7DGblf(S21+QeGqFUl1Xx`hfPC86~#{I4|AU zhO$sTeK|pftSs3jz88KVdyL`9LVsg4PqSv%3q_2aMkc^WUloy;AQQv z*KHo0Dc5Pq?vrNVK0(J`a7X9{Q9~8yHOGwh(otB=&G>LyEeTDUvuwieBZVQe;+^Lv z?gBeGTzX%vPi&hzQOX?;S9a*S9dj}qGZ&XFQzrRE2okw>MsU=2ba#7X+=`B_K*D1Y zM$|>T3YHI|&oz4A;>+Ihqk<^d1Uc`xIShzprmWWeQZq5HapB$h&zHsQ3dT@PNH<9> zFf`3W1K?|%nn!`Mx+0mRRLKsQ`ce4iMLF-43Q5Z9x6B@l#n&ix;=tdBQ=>}COjTWh zVh_ueerqsmJM<{8RXn!2uSO*He^m(z^dzE`fM^lNa~vf2E<|z2AYV}g2>pc`U zT?Y~rP@`~^Tw|d7T1{FvBL*E^n{%W2R@~yDq?`GkFLfuNt)ts#L{HxDKZ~0)D`ZhR zb^q7{TEhH(^Et7T^#}&V%VZHNWgq`P{{KYtrI` zVGDX6NqPHrYv0bm12f}%_PakNZvmtFTL|Dea+VM=Nuh-|%e8qKI>^zC)rCp`NC z0(z|TEV|yQ<~63TaUS=4eI;06IsOphN}#oV;rxaQv4MZftNA|E%IZLij?K5wwER|3 zDbKG%^Xaz5sz)I0uF#czW(A|k%8}IWo4vj_#pubtEx)owhf2K=2blX@!Lv-=LcNN* zJPCSofnS{_rAr2JVh)#uOR>mZr=lAzzILTDP9}zL4-K=2_?>{UK7ZvE?+ERh^ts`8 z0&$$dMLYjaG=&aA|0rkBV5eGvtKw^2r|&I zdj|wi5m1^0%`Wk)JL4)gx*Wmzvb3x=@`o%)y%FtL8Z%JqxhY&B-V#Z z6OmsVi4kU_d%-GGEEWMYxh{omMU@6QGv*x02g8-0pIxzAhr0Zh*9-^hkvz%CvmEWa zPpv9pVaemwLZwm`8sqx;{!tEByZ*JGA9_7FoqU2Q7QirUDs2lr`qDmJ$-ZdQN7VMl z5d0jGt9`6%-TdV_DtImHbvYvx@9u1JcMoRO|G;?v*t#z-)=TN@7t?Q^kL8-^B<-yK z%+8(8-A3A3SMr=%B{jzhid;qFIREk!&NkB$4=o`R?ygG!WZ9>|m&_gh^~!XvnadLX zdR6enNr<@|Bf~UAtdi}`P&nTSFil;r{t)onj|v~8%ahmv&fJl(pM@=f_HIpzKLsZdaTXiGEldIBr@^* z>m$oN*>U%iso&Q;&=d$M21J+ee0H{He0ALm9{QZeS!@vt-;xWR!+2xr=)LZmQzXPj zFxEX=2d&*eLt(o1%OLhR+g`p)kIfo-{IASFq~{)mM!+z2Wi+c|F&1Ux*tcXpLxs8w z?Uy}lE2Sr0o>;SL*)zC~YjSW(&WoU%&y$N;5-H9lWNzY)uZ6a>K*N?L7JCsQL3ZCEVo@>!5Wq~c@=~P^azK{ z=SSOT+zH9>1MgprG=ck5#2$`sIILHk<#4FwA+h{rV?FN{P$*+e=LPP!tkH*X) z8zF;#!yj%v4pNxd$c53wSubCdql1fzedy;7u^hyLB)ffk=%b8ft@co>Pnt0e^ur~L zblP$iQG7;Jj1F4iN}s{|K3)$+RJ=U2IVlfMtXC)0WZym&j8#Yh7S?ZOX}N3R_mzg3 zQ8Ir}<)ET>!0}}2x!n(`E>4dXcBF-!p-^v9-oGATt@(nZ!G*@He%j>ZAAgqUx`ZAV zcy5+W;e^v48~lCu3K?i4*4z=L19-b2kYHRfl)ih}L-IX~%{&O5euMi^^!u_huGhi; z64KZ#Yw&oi=@Typy`OIL4El1J9LNDQ#!?GTf?m&^e)xU$7(33<9pTK?(eWlv$}_j? z!+OKmxz$t`M@NT*H2Fyq1ixtU3?~~whU62kLp2K6qhDQTiurfEH_0n_CU!FQ^6*;{ z60c zQ_DqDAtFR0=?h7a@3UvmSVjo}`00Wq?2kVFgDUIG%PCnI*LL2zKhOO-CNUE_pzyX6 zadQ0(6%rbw?jD?QImn!$Z@YPPxxiuab7~7X?VKMionfs2E+&lMtj+Aa6{|i(-5uad zr~7`}+qW09?ev>dMbLnATB%MtKo}G*vEAt1RkoeX37L6rF~_;zexN2VU+SBH=>)nh zwCz4cpI7VT#AnN)WpkvoV_6fTVBSkGjlKC9CY3uj^J=|?kJbs&A3_Wc!fJoGgv&nU z5EF6I_W(u_!T-LJ4`F$Tvma=A(NI92vd;_zVZo;aso52{A8c`%oaWG=JvD5Vq^Q-Q z$;xVVZY@BE-SUc0;@ch%lm;Inb(^x=q6r1H+?g{RK?4=1vjvqV5XPp(u2@{FBQrP6 zs&V3qYD$0gn#Y-cA=qoWf22IF6w+6v$h&)2-rBv+bVkwYXl{n6%{?_%lZJitL&X7{ zyW3@t=QJ!h=;sqpa~OKZ`I)%VWyD>GGts}ur^xzmZq^Rmy7w{y5pR^|Po!Sh@9_N{ zF^mh2B_gzO$8`?0+L$}CPd2;xmG?%W*E^sDvFwgieY6d#AOL=B|2#KmQV=|PwS+#S zO~GpYwpY_*LqDQ@e2oEn8C)c${#33zouI&~QfyW7 zT6T+N=rx(c?|M@sorLN^ULoY2l4H+5le0FC zQ-+Q+W|M7{;roT@&&6&C2zzj(*)!IW*ZG<2g0iUfH>PW%3X&ne4ID zGm$0!QyOs?xwi_BM&*?+ApO`-?lmY>AgBUJ^>Sh*jc2dMFHK@Bk>q&9%KtDYFEc~Y z5v$XAjJJ5Wce@ombaTNXidZP5(Ovi(Lxp_ggK;bo)ua7nLvxGQmb2AtB7G^UdI-S0 z6W~a{mS%Smft=|6=o*sf{Y=T5wd#x$xzYQ}UvuM1In-CnUAr73BZF8qufamfJ+JD) z11;miImec|HAhI_G7;}a#In7@xG@2;TYGdqU_u-XYzCn%)nE(^el`4u)<0a^AKhkO zs~wZ`jM&~cn(h65X$?Tc^Plfo8%|EP^F6^r=uxm5eoHLBhzLINWUF>ny>E3JH}9b~ zEILncKD14kH)IF<5emcflbbaDzVMN(Cem3c(>W$-JZIHU1acB7IzCCYp2fgw6TIHw!M-<;P z-wXOKtt_1An45^P>An%U8(LNpn8fDIgHBvdoWiqtA!YS?uG4K< z%xo`?L{Vil(tel+5-uSt#Iy{MRr^Lj#R)giCJP|1@DL07IZid~AEkFTV(B;UapuvX z<~{-9=SJju^&~bG2!0QxSL8pJ$J#mY_Kvdn z;|XfN1YC6TIYm{KwCMT#XU{rHC*5_;s@Vvg(g{yW-is=dzHIH6*8D9YLBBTIh5B)x zm}_A1HUG!xohm4x{S4wxJ~%nmkFIBWX}eTp`vKj_MwLGS9JP_BBwG~JDujH6P}!uM zd~$hq)|JfK#wIcw4msPcby7u-bY(=k!c8XTyS8U`1PztF_wtw*Na^nKwm$I`LT888 zv3mzwe>g9=^)!kq$@)uMkr(XA4|qXb%(p_C7(+!k_LR&Uo+l4!Rwq^(baWg*xxS-C zKTtNkJ0HRRmQ8k+eUB`wkFZ9w|GAzX7%aUm1lx>s-gqRj661)Q9}%Oeh-vk3uk4a% z?ftngAK%fWGCW*)xG2@w;8ludY4A~1RmWUc(Ug-L6N3#G1<)NGkfeG2)w+)T05r3X zd!ejH*y2@*cGc+PMn<;LpGk%|%MYTuVp^c-Y&Bw}D@RW4Ca{w43T0IZvgLNam~#bQ zVJQ~-LF(vb=AQT-l5*|;^xI+Odva^=WPN+TQ4_e_>gEEKSEWf`O=;T05jLq zJjY=@u!q6nGPu-`7JA{La^dDztYP%Zr)IjPTH}MI*Kte4>SWR3U2$l}WvrlL+^S#& zelNYkTMaXhpBOJ$^a@vH)I8Fi8Lyl0QDqbl;oyh&jGXeG%$luyWX#TM6IE!)UvNn7 zyajQ1t@M4vghYFxk=5KeFfa-wWYwR8~!am{nY_XlqF1C-hbVY_z_m=GgU zA(0zQJ_^wYS`@ z|3mpo2AwLM%7KO#d`3!+*O;~^X1<3#s5oAJ=$(M&U~bGRhyEvgdWR;@Xgp?I&NYT8 zkuV~7(AtIbr`8k3En-G@eSi1gmQ-Lf7B`U+s~GTSbnEw zDzJSC$8m3U;mjS0{n?CvZVH^5hej*niOL$`^`2-}(I_O@z+!ncZ9%700ry=jo+F7U zvN@a|>9Cw(kEE}O+g;SOxJ}`UhvsKu4D1`szzS|((;cZXo9;^oMMcBD%<1!)iu;rQP z@@Gy$4z5C2T%GIU08!W>C>x0s+WYEB)Nn)-DK1@@(edx-MjR6KmvHLYsA-j6eM&zu z*R1%2v}u){sjug=gQZ1Obivv0^tEkI2AY>7yk0gQI+0>e26A<3A46`|N}mC)^A?Xx z>ELZ+$aU)kpn)NO`R<+Sin5Z^2rg_p*D;Q)Wj3PT{8m!62$3H9 z&Yf3?dkb}{TgKP8!!(cz-X)-XRQX>XYojYpIYoZ%TujOf9m3YZDp6$icEe=3&e=`{ zv@CjPM}Uq)%;rraxt0VPyV@E)WtJ!~wyBbjp|8!{yZa>BU16D$>y-wKCSC7t*pSGO z|8VaMJj7Y)hdgLWyeRFMAJ6r49)r9+iLlgzNyM!_Mw>Uanl~%nvg!+n0}A!5tQ*Xg zsqB6@KvyPRSV!&H#e6#fYj9L9tFG$DWc*a#!#r(9Oq$$MDFn#~u&Bn;DVbH^4 z=u2E+!IKj2zS9=hB=p-3olIwQB3q3KT$MMNZi28Iu{27l`b=e&z~mgdaN)pqB7ggln`P)g?9x#BQ+s~g<#ha z@msWR;#fqS-y_;K-wldt+vg!kwQUu8!bmZ%=L>T>;ry)Qxf7=|H}JmPt+eB=5T*N^ zX z?tEg^F8yS;!j;utoaTV=0EpmlZR{*>h4ksYuztm4pN*=~{GSQs7eVgD~Xa_dkdU;0>9|cRNnT6SD)d$fvfY-a;12l*^ zCB(sTl`YP+c4!K+#9ZgsKPqI(Z^hi0cqag?tDoUFTKKNuskWS4|FROH_bn+p;4NMg zjCbNE(neMgIqaG6P(Yq$eOZN+qTo~WXnTZ*WX`1CvzhM=8jf!DhO*HEP1}z^g^VPC zOlDD9i00|rK`v$cT5T6DxbaU6S?x0TsH=je8#7k<2Fyo$Zrl!A6DY+Dj(jr@1#4E0 z_*SuJ9f_GReU9jPQLv^jGr;(fYS=avk7+u>=8NEm4)nQywGb&E(9yLJN^^|pAbbK? ze48*)1@1cLPKRlLu+KR^T&U?_AEV*Hztk?)_~_u$DRzN*M%!~oh@$DxBJb$ltG zAFub{EE{&Tkv>DWu*H+Ez)t>Fn|bDnYzJUcbLT%(sDC7Tap4ji80yNGf|dP@7QQzX zj;7~`I}R7|&7~-A>8Yi`dXGMx(pBMeb0=ZFZ4}umvCW%m-EFLvnRzmJv64^Rh-6Cq zif9cLDJBX}g0}dx1CPhBcH;IUA_u0qg-Ccg65dV|a(H44+p0*Sd{E>6_YHjp@cW|J zpU%K_39%eY^$u{~zqCTRa4Ls4+E>Y^nKK2ju&`wpogX*_$GVoV$%ed|ly&LGg#iqx z9%3wo&(o)zS)c2Cu=a6luI#xF5vraS8a5XPtV?~O4^u(USD)Xv6g8{RA|-^OwV;Le z)jZZN7wwK%`HGn71|JbDIgN!7kmt>$lPrZ$UIK>Gz$5`a43 z4F{*2W&x;Tx)16A)I7ZjmGm{|YpFY5=ZKqB#rLF_?+JACxJaVrhBU$Gl9q&zv}Uez zrNIHmMP5NQZZ#DPwPCqj#+_uQtazZY$8p}tq@ETMMB}J+*U2Dd-EhV3 zO3FM~8rFs;t?Rvv)j(EvOGds|h2)hzc^6^&ChkNzFJ-oVem;qQQ_>|;prlfnL7aF`0Dzu+mRg$KFNi|!@>ir~So$Uxk^_N8* zck`8vI}0k1g0Q@#VNGAm-MNNvoF8$}QC=kcADCZdiIU=Ig2E;u=8(X}P;uRiad$(Z z8QWyjsbKPvY@4vRkSQDls;5jFx1LBvX>jk}kn@yvW*@J}yyM#s$mf90j-W+7Uzo{c zQJ(FqF&Y1A(RK)-5+MU}*Rd|=(3&dpu9Gc*&<%Y@u<~Vv&{)oKCIxrN3(aSicg?bk zg#^)f02W^f5^oO%0SUWfv>Y*2`iIe{{I5E=%piK&oMZGluNf59#M z+h#BAm(o*autu{H*68|qYt5ALErU>46uksNaZ2d^(VZP~3GQyt2xQOsVM6?3tMM^e zBfQJLoX2vsk~LV^#)yLhikARpZGHwa7B~7lVOGxL{D15vRWXa5GCHFtPCtyux+BLCqd$Fs!_c#yTYs8a>uk_*R$kQ>OSpk2wY%h{c!{vTq)~~yOh{_ zPFB448ofHd=jx2V1E#uI4x7KaXu>Z!yW!LePpEfnGqqn*L<^a1J5ubu-m-*Am!gTu z!LzDmkNd{NY+1uag=@^G45RhpGZ$<{nm! z_A@R#;{gPRlB}AosDknYx`6@6DeETIoXmb^;%o7<-S=i#SX7_o2@?-~>7NH2qz+~) zjPrzz62V$}sD+79tYkTuf2`#`)wxbGlKA4@eB>5zxU5i$Je4^=)g7a{*~_8X3t0+Q z?R-Va`iJkIAlxJN{RFF1^zzzvnfhcB4wM5Zp)fx4*)tPOL&j z*?yAWUZLE&zk@=61OP3Haa;r2F`wQlsNX}m?+&NFi(qgs{vf$sE|B*&)mqsqAyWnO zKLaup{7BI5F;F^(F)Z@l7>r8nErP^{rT2IsR%G@yr>(X;^h!j83BP%+kdo-kv}w=B z6>`@of(y<#uQShQ>Z%Bo(DxYTJ?wk@O4yo&|Gipw zz#-osq*Yr}&7;cAgUS+{kevqHyLO3Mq(B@8aUKDusqA;UH_#x{%OxN{|8z+;&u8+P zD?5U6kLQmMl+8bWn=n*Dv62eAqavByZ*h?{6^2hoI>BN6|8CgBK}&*rT(UyS<;w+q zw|Hpgc5g-|!}@L5`H?ncOXwqB_a@1hn+t+Zbg+yu?W<80{F3$$?xBj57t{WNF_*#D z9i`|rY-b#nbZLL+B*=4JpxMz~*=V(<(N1I1d1he9U&nKTHuTu?=qol?ixZEj$g?;Q z;UV12$X2+5(PcNvTnMiJvzgQH0Z~JG4dQodeSWB0w(ZrY2VQ;A9z+!pY}NNj_f*59 z3~3+gm}4QNJ&}V!wl#O+o_z2XMJvQL+~PrehKJNMlNH91n-VWPH`~s3&u);qy;zo{ zE$XnJXhH|Kcz86n7dMuB~rZ0Y@_HT`2nllI7hF+@3yeQwQG3{y4m zFPK+rgcGc-;-{7ac6$%^eg+kZO@3DU?GNNS4=v2IfOfyT?=_B3vy7rBl45k_)D+1; z11RG3B=axFRzb*9^QL!`c>@i))3$gmik>?CKu*`zef=%I?oTp@q~S~&n$Rz%+PZ%; zqL{Pi{QpnCrC1KB>LJ3Z(R3H1tsv(05YgGRZlq_TM*HyOUPuuEj5j^)jEM%)n2@>X z3`kZ8RXuTqAQFirD_vHWZYzk@fYd4&{< zyZ0KR4!T4H;MAq90D2qJ_C0eYMoTLFlQUA*llYCvq)Q1-(eeIEQ4)opG7bK;Pc8;R z_}zvA1gKadbZM@Hs0(8(;kAuIO!&Ua!zA4{(`)D!yq=;77JF_v2RZ2lM9BdoM=xy7*l4*DGP{LY8ieU^Y(=IuN2+Y7RfAcp^PF?fr*$=tu7IEn)A6o` zV6*#`HKv{NSsMttB&o?Q%FSh$+Jn{Jf-I3x5(V;hVA7AjmyKzRp#QTA{fYB}$x!Ab(z14=BiQX3;`19tsfqVvenm6~N z2bOOHgH`yTWg5gZ_o0Vstgdb&@&b7ltp%zIDQe^}wL$Fy`2;4*TC#*9bzzUaS<|-n zkXsjet{eK6-1_4jd`ZtK2lsFdzlFDr>o|paBX)fCMk4bNVAy`Z%tO`D-a)bXTS#}3 zba6rR5~MOG6UO>2_pkTIWS*}1>5iv*8SMnC|Wxag1%gVKe%)LsEe}O7cItiQ% ztHV52AqaU~D88TnQr!*wVrjO+It2XLO}%ocbUChCyC+SI($f zxTrt}uMTxaGqpt?gG;f_0!5hiYMAJtuS1Q~|D+W*yEHx7e(YA#q>Ms@cp#&Y=d}04 zBKl=*aG+Ghs{B2Vn1n^as*^8vYYCtGt5%CnyT%TR8ZNcHM;}7ZK%JEa&Z;uTsUrKyr zEm5{IQNF)h*q7=Pt9ML&Y|$#=zFcTa93Z1Z6Xt}M7BW^$HXU-IOa2fk^CX!h!qz;w z?cLi&eb6EL!6g$4b5Fg%Y{kF7m+IlD#eVEA9LJH^$8P1r2}?{&3t$ut0-2GfS42^E zi$@XT#7Lv%e!g6^q=Jbjd*4|yEh}=@NrXHhRkZC$q!`%rm-b#`Y6;SNc?o&q1pVjH zY3&w zkfIG@OPi2-Duk!i5|*PM-GybLUh0Dg>VpHEZkD9q#>XzT&i^S7EZT`YpWp7(Vxdj8;IG&T!JiOmBW(+p|?M++cDyPRc-9}gMJ>& zA8WJ${cJ1~$c!q+ai^B^x$qZ4=2{#NfUlt2xK*n+*6Q;yiN}C2(S?~!HX7QSC}ba=LB_)Nz?sD=lNxfmmz<>`oQ#0cGYP>FKDK7X?tb6B@o$~uwZTmMPqmMy=NUrqq+XUF1@Zl8L z1+!I#l(yac4GS{K6G&zdG$$`HsFEH1EjI!Xlp@81Di1Hd@_Q${?#51BS>w~Dge}F* zMUVjpUxGq$wjJDVm7L~=<=*@?Q{9IJiUw2@G67q1Q~XzR*!ts+xagg8OA?*$O)^fL zduYzM?hOee*%R&^T)B1M?(qO3m+IyU-7?)I<)3PDpZuLidm*gY-&e!aXlzvAx2aWZ z=T0a7#qAfr$M2M1%-eZSOw7g;nv7nUV!_zDoy0`SLoADLby3SFb(yS=8T2vSk1x_l z1)#}M)0+5Rd8H*d*#l;l5Z3D>{gieD>`r^|AYpyoyvm1Dj6qkp`O{d04jjRmUG=wARE0Z;N^`9*sCuMCEM!?4{C7y z>I`@>KHrPsvm+c=sX4Gj*3?fiA>Fj14_nC8GIF^bX$t-$a{8JeTd&mSj4 zE{`G*EEPmFU}7^rF?ag13gKXt52D_(aGuZQSVHEp(k1cb?b}$?czo3r5071Xf0xo< zK*x1OcXYHkLxO@Ar!HA27bezw^#!X?HwSZs@G>b}nSmKBJjd?a1IvPSgh1(4j#JEi z+g7j2{@YiP6MXN;_O}&2KdnWD22U4BiQ6PnVvo}G?fZ6%qWYroIE<`VB{fC~v5>iu zk(S{S{bmvrNO~Y*5u{8%2gEb)#YpPu@d1~Q>6jSm4gX3YhPB}T5?|LV^=GM+H0k(< z1O(lVX)|-pV=o#h&*<4*O0WL{!U<2E6Mt1Ts5%P(QDAQ-P~)XH|dVRVnlETKlxuXQpcjGk)pHYOl|>v z{<-Sd`qRIbqgdmi(HS{bd0)Vw(eS(8MdA$tg)t>vs@-u1>Cwc0I-2+{hCNGGs0cv! zJ;U-V5VIh---Q2frCp|tnQ8yN&e4+Ow`oLR9)L?JTHD=e#GrpES=amW zw~S`*pl+8z**_RWTMK zhzZsE-k3$iV}Tj^Yp63!2Sz`OH1j4g3?6>IDq3yviTQrIx8l=7glesknsHyzZ&@LN z98ula?Vg-EEUp`7q6WTrNn>dqyt@xVA>EN0QiN##j7(*P$&@vb0Ug$VAzVzzi67@x z;t}MpTk;5RfsU)HDwZ=Pl$R;7(5<=V5y0sugG?0x&rM~rXektL2$_1fwZOdJ$;d${ z<-9321=%b(8vYXYa-Jdz=~8WsL7mNCm{=gvWv4*MzXO-M;uW%dDu`68RQEA%h|NRm zWJrxiyxvdE1z+sGYii2x??A^F;n?=N;-Q8LNk8h+vLf@x2fn7qggjP1vum44lb8~R ze*vLhvEv9$NbuTG?|$xFY4Bbre#nT$C;t|_uocvpx2%6`J&SZ{-yPGxC5S|f{omKl zXgv4}c2whtn~Y##WTGW?3r;O9uKt-V#=nsb-JzC_FH&cI)4hJA{E8LO)wLnH^9bRG z!n3H-Q$o+-cc12;O)DgSwM2z1+P-SEkz5zO4_&8!X)Z7RT6{_^8)PnqRRll^u~>lhlV#n}LxX=?83J-Mq^ zu6{K;ReJO0GIGXvZdx^9#=Q%;hA|Qg^!K=gj=}@UaXq+=bcMu%i6x?+)ZQS2@g%%l z4sKJNRh^hOMD^$qTwWk4dgX#Y&0lv)(tfxoSr z2-H~ZIas=sdFrF49P&Sq8o%N##1qGHn=>mk=fxZdk7QEtT@2W!)twsgS-=&FsB#_g zOLzRmuu*RztsW%E2cludRB1=(R{h13v0O2~L7>owhF#*J&fP`JNl0u&oBbql`Vroi z3p3*=eG{}qVHdcA(ovwQs%5+(#?8g?$NQdfuh{BQOj#aHN9vZ2@58mC#?<1&hbHH* zldy<_50QL`hssCbj+&jC7T2c1pSMkIWHB}#N6jKYzr(g?&oV z48}wLWoU6nkge`;TU%1*@l^QgAd`HcmUCA)b#lzQ6N304_MOblflDBzC#QPB4ESVd zS~?#Ty5YT!FN@DS#`%>A-jP40IBZLGbkMHQ-2}ni@xr3{gKyDX-|Yn(sBY3Q|3)Ng zX-`l%v-nzUAqC75HWuO=DnJK2USCNt+j8Q0EToP;hW>N%7V!n~XTMFdJ`-3a7e9s5 zhjA6XY-}8IF#A%=GjDDT97KdXA(G$lhe*C-s2LjoZa=kJoMY|(nCfkR$;vqMNIl10 z1PC&T*+LDW3_4XM37Z_5E0Q}?&g9;yR^ES&7!>q6X;EsWmeaTtcAQpr&~*6izlNkH z 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 literal 0 HcmV?d00001 diff --git a/docs/source/_static/images/benchmark-results/0.4.0/tpch_queries_speedup_abs.png b/docs/source/_static/images/benchmark-results/0.4.0/tpch_queries_speedup_abs.png new file mode 100644 index 0000000000000000000000000000000000000000..f8b3eeaea666ebe8cb2f7cb9888827182c946628 GIT binary patch literal 37579 zcmeFZXH-?$)-6hDsb!=}Q3MHEf=HGiN;V-GlpvB-kc>!%jewy{h=61yspKq@vxy`i z86>MHQ9yEr+b5p$-SghPzuu2`+imTu)~Xc+d#%0J3}f`(M<4UyIVI`sTj;k?QBiG| zl{uqAMYVo_ifY}(KQ`hw<4o18_>Zui)I~d0DjOMiHpaXMl-9T5CY!IzXxdUyQC}wi{uVD8XG%ro zdtCO+Nj0aiA6+hCp5Ir?$7g@E3lu1sYqn^88&fUV1HeCI^JS~?;^hzZA3jESDe!LQ}?Qj)m_ICYLH0shf8Nz2JWyY^tzkWA8 zeWF&DnQ3RPb^i4)w{sfhn_E(}r$2C}9WM&8`c@qxFw~Y2_x9bp-8*-_a2d^$9&SmI zcl`0sKfedCtDY4KRWvB`l${(YUY^lbPu0=9b?X*~PVUQl+xNwCYNSSsO7I6Mh6*KE zc4T{ad0n`4>DiV&T=9#e1b ztDzOj)WCtzn%GTDPWu%Xl|%TYriYqU&z$*Z-MV!&yLLrg>&lNAzQ}j2^Z56QC#M-j z?COeL7Y#Go8m2O=dL+t&a=tN3N=okL)=~=>b!>?ccTsuo@#sxk9sdZ~Tw8jHD~29`whrU-DS>OVuq9Szg5} zDxN=oeyHyGo$PB}l*Zci$s>znC9RxkgdiNf9dy~t3Q~h@9=G)cBDuzzAo2QwU zdD3An6Bl{Cz^pxlu*G8xZ z@#xaf(Iw2yIn{&+NONmt)@@?G@eC6hJ72sq*GrABP{hJBEv~_$-;I^Ahg<8gMygJG zfn!>%Ldc5^Tlbi}ySLrL)3b1NWY^A}f><(mdgbEc;w{wFt)6rOVKdIdDLGSPC97sX zKBX&-eEIUlYu9hC3sdK_%$ogue4b%ZnqqJkMhnI=O&bqM?{JyS9o2EMUxN67;a@AuHut3#bUOJg|txJpC zfBb7{;|={NY44V{3}gFNUB^MJ&xFyS2m?EcSDb3BLcO1|L_(qSWTI-E5{G)Cf2vO2 zi<;15!}xW*=vZOYR$88l*49?*(3>}@T<5;r_l?HJGnpOjdMaq@i-Cy7WOn~NYL}r$ z8D!l~FId4n`*?V9WpV82<+s15(GIRIO?r>!5A)o;dv_2^?80bgUKVBAZ2LYT1^1Qt zxW1au{^lhgw}WRr&nYN)^5_-DV{%QuzJIuYdt^CJ8g1CL$wjnCdnYq<+Lw3tI z(~*Of43chQr$=W$1aQWly1OOTu+rDGSW!jA7jgKW^N;j$1v|S;)0X5m#q!l&Z%I!U z0kfv~eWQ!ht@`_9`>+U<>?4h8p2jS+>!n|j@-TSJS5}BXc-Gf>dAb$ zFrwfjwqsmw&3I|9J7H1Xa3_ zEBU%(lhs|m-YKTb-TfnCu}a})EFnGat6d32?yD_fYoc8+l3H1aOso~Z%<-c4OXGY9AvQupOKcrRs{xHi*x5_U@IiD>@*g?>Zgu_uqd{eZE62(vIBOTR@AGF+mv4 z@AVQT$wkb0f}|j=e7gjLNaPj{Y?k&6V{iIn*OGmF{**d<*6jU*zxd0Jcj;qUc02bo z25@U%Kw$KE@ZemUUXk6x)F4edEssvTi2cxE7M3%@Hs8)=7}aDVL(wd{PSzYF$q<-; zWQLk>(PO0&3A#A}V%r?sGfj_8JE=@!$0u2|y&?(3&@h@ZJDMV3{PB3U^q%C6``K^w*}nfB)W2oVL;#t5h4|S>2047%L%8&9<}1CFesRcM>*j?599peTldd zOQFyRw*}LhFkw|z`9QnE`)&(^Y;nsoV?Akc5fnN6PVL+|A4K0MynW2xui;`#*N~(s z7%G3<0Gs=8v(79&{k8N_l1`q@AX7yD@NiOm{NcF%)w4#`!Ouy&%xcw>*Wl9dm2Qh> zT_J!8Yr$}iZrWw6NW(YNaZFFP0ne0q`Q66tbo^&XOiy<=F)_I(HZwJV1TV4pL%?-) zc^2U;Qt;AiDzb1WKi_OR>h$wcihhZn-yy{Y+gkBBS-(RugA!3uQH^%G_FCTcgTfIz zm?d-olrU6k7zUO1+qP|Ms(5lRoKmamC+Y4cYvaM**7L5wajf{uNTUsdqy2Wu#G=If z-hEiG*!5=hFQnM7u(*$I+_*9EV)~T@tg40^x{DzK#!Wd^`chI-?ECkhD1AiRI#3@K z;O}quu0!sagv83vchnQ(4=X{oF)R()9eR+_{6nVFgA7Z-beO0*$cTX@-u*g*NA;)Mc){0!E%@Ey)SkV~6o~e5dt%(N9VmK}7@I zE@SF=0z~I%Y)o}#_a$qO;e0IHs`G!R_QmAZ^IZn)29yYz>PZ*MS`7M;7KgMVOJEgm zXieXog@gU}d``fahL@M$sTDd|Z}|Q9!yFuP089$wjBbMsF^Reb*<>gPfJA1YjF-}e z&x}t_sxB`~(*^i$xtHrw2~ez_X>z_9SWIzI62RxFglm3#wq??9>o=OzJUvQ()Xbk` zwikOBfiD5Lq=A>^y~QRT02oFgk()O}%aS`!H>oPi`ksAEAA?abFZW`c7*CH(YI}9{ zky&$M%ZU3Mr~g@jA$uFO6US*%C(-6sAM~kTJ-S{KflV| zExT=;eZQI!8blri{6@#I%RUHMXbL}@bmiOUj}S$Kt_E5N#+(dYNv^l;w#k-igUcKSN%he7nIHWsmonPYu+2 z064#YxJ$jj!4jLc+xn93E5nC~Zc+SKKbSPdpBHhSh{nwvx~}kYH!L`*xO}`v&72B0 zGgQeI*@Sfo2zzE3VbH65uI@Co>Dzxcd&!IY0%7Ya zkx>jgex6`$&@$C;lbAYoF)^Lf_jfeUPxkAUbs?UPBF}&S7_KcJ#G~F_=xh}{j6d0b zdAp&stZWFFy7}$ht`W1`6Q-~Vw-RmzVs!mB+Mbxb8Y9C1nx z_(H^erSO$;Esv~-_1AxxT&K+`lros}~-bLizf@V#J0r%yAeAYftEl?YO`Q1Ir*N1E@vH*k4Sob4`&mx~^ zUH@{*eym&9+S+=kBPWezakXkawb(PP_#{jWK_2!PW^Ublwa{Z$O0Ao-^@=EifV4>6 zrXE$Ao_vVucP}Jgd_LM$K=`6op;LN<`-(H8nA4Hct2|_AikBwj#YtYp9rD@a@Rr4A zy_r&QfjJ<-2R}A%x8-RKvNi~dkddjdw<@t4R3T}J*KE5hPLoPIvr!*%f)a@}DrE-u~L$DEZt zS3w73Ayy0`KLM+RxdC%ZGx@qQc>sr0)Yd8!^z-CzsZ5vIYc-LQJ=T8<7Da|18*Z8o#?r%zeJ|Aw(b!?-2*$a1n{b{zi7R6i|~^rpa^g zn*`8K4&D4rAZ2y6`4-sYnwb+3VSx^)Vj>gxmj{SA?;Oh|3ye0A`4ExgqE(jbKoY3fuMx zic_Ypw~qnB9OB}tPAI|xjy-W}T_3a}uWV%2y|PO0ZmRCv6S$y*P z-MumX{6W9q-~khNL}@TI0B_OJv`cSp10V<~<*Z`8J!Y9~RF;fc%#-=(f-IEK=a@xq zsjsh3XbLFR<&8TSO!n~VSztkgUD1~Xc>vvFu*7g31J;ej0`Pd#Tx3?*F%Tue>PTSg$;NZRG z)}M{;`=^l zj~4@j8hG-7t}8YExs;@9^}q%A(NsL*+NYOqWcaZU71Mhv{n%>8d&?Om0VZrL8VqvszIW{XZ8u2_>50a+t2H;$=8mL19ilLPQ?QE_W@wXf_xtm z6l@xFISKZzh^Slra2H$HXc__^Sq|1W7Uz1sF^e-DR&f>V^S&NaH~ON5-Yq%#!*Wst$Z8z6f@*NAunSR`jMGCeFD2_XwF%oR zp34HF`o%Z;zE%2pWka6W3y9g6XKRef9UgC&S0E(!hO29hd0J6lQ!zvuKW=Ry=|yaE zUAq=kxMKTFvk0)&}#v!xD|oWw8Jx!wN}#P_~ytMC1DdGr(gA0W8#$`19El&CJ={B1o;8(V0B7BoJ!sI%M4 zdmyz088Wx1=3f6oGg6r`5FuhON8(C*j#XNQaqSQg56Q<$5n>4h2eqc^^4#Z+DMbd* zQIdEfHsAEvC^-@^ibOjoj6G@=vI%7+=YN0?nIUapEfTpPC%*Laozmj`!a^dlu-7tZP%=WCJc5n2 z$Ue6o*VzPx5dLG;vlp1XIZ1ZHt(!q;;<|H*CWtjQPRVMsAnI`O>WT|A+>hx!$(k8N zJu5#~oGC%8;eyECI5me@CXu37q(ziLV6`cr#CT*5j*Bm!HC|<`M9_E+ zwnYNClIXo&eb*MT0|!pBDMzRw=8}XKByeSRp#EU{BAVUf+#kNSTzh6y1I6+Wv;pO&L`Sn^S@m=et`hJq-s zNH0GE=>}GzEi;NbC@70h`!}9>0g9yxeV!q58e(@VsA)82vU*T7{@aq4?3l5!76$Mf zQI4DU0|Te#+4d(QwXuJVkZ{!kGlhWbRTZ47rw`q$Xta3oS{G)~EBoiqpTl~3jt6sW z6s`wB15UCVY#=(Xs#0apHkOi6U;RZSih?h!B9)QTn)b47!XAZ32rbenV|~4;p64uVbc~NwrvvpB9QMa(aiMR=C20jF^D=; zTc4Bne)epCP-}=jP(`}x}5eY-&)U2tQI9{{)7VV zEYECa>MWMZ(oaONI0t|Na*M&~1@MzWhy(RGJ#I-@?L(L}qA(-2@s@9L)QWs$2!bl# z>eCL6IyjtG(n2B;)EWp?8dzcK$lXA$?!vBn3n&rt{)eBVT)-&lrUNR}O0X`#y<)hC zI@AEWe5HnFdv`uQzJ$J(LT6j4GiOW?0S4(k4#~#I1*l+-S!5AzE<~Mu+=RcUXlC@~ z>pzPGqz3m^wQSFn)hIOYg4*L74XUP(2%&}u;VR9tvLX|Fmmgi7Fz&}3*?}bnWemq%En9}9Vv1^3!jAjOD>^bG z*(&Yc-k?Jbr2epZ*C7&7mDt?8m?cwz?n$L6A$7lBSQVm@`YXdq8ryY-nahi_oc#R! zrInfA)pa zTAXH*$Hb8^D7$LEu4{n*)s&kxcd5NNvzZj({`%`L4$W85s{L=kAEq$6LlDbt zL{jq>!tACO+Od(M-VK|jMg(Q%2N>Kg_|cvvk405*S&3SF%12`9=V@_hF7!Z0`1ctq zQ0Gw9RJ7i#KCxu_DsenCMsKsuCLZS$`Mwa{KSE3!_=Vk;ipl>MpdhNh&iTVskXPc0?Wr*gkYVG{}!)`plNr>&Ls6;io zra_5oHLj;{hzUvstM70FpM!v=N-X_V_B|o$0*9CrQ5t#tD5JN+&YV+`bvT{Av$*9F* zp?p)EW$5}~y>vD*Jck2=IostJ3GOjq<1+EEzUdlg%<`PmU;}G;#Uo4vr-VeewWZaB zE7A3b8e$$*IhhJSe^R|KQaHz^E6p&nGgBo-j$LUY+ob*!s!WZ5rD-lY*7wbsRY5!9 z10ZQ`BFlNYvNNZfB9F~zUpTrrH5f&RGh$-FcV{zxEsCUQ;}A%loPEj|giuWk+&Ktk z(?pmD1%u$#2$_Al%{VgV)9M9%{e-+3acj=<-yLP;Ubj&xg) z1zf8GX^g{0LhVX3f418t%dm21T&u-|v8z^JbEO$p^|xD_nCgIkNnJ4R%RuTGX=$>$ zkXmh?J{SS37qRVAxTm<&zf*gtzu)m4^|Psn5lGc9+*am|Sy@?ycPpE>B%i;2{ii*( z5GZKfU}GHPE;ii}1ngFX@>IxMLX0%6N^2RNPMWO zl2Azb9-t9c{0TQUMafXfo7MTa(L^+FsmJa{$WUs4E5l3!e)m=Ts)EMyS7|F(XH)N4 zj($piH#qj~`I**_(XN)%XDCdy(>Cqt2KQB|mq;c-VU5N+4kU{x6wn|A&0Dy31BhX8 zatt8pJ@WKly6k58=IfAicb;wB?K^iE*))n5hB)m98>Fm?rUMNkA*9EeZ=5!?DxQzU zgY*T5B_c5m7JD03p7u^_-DQnhv8>J0O3}7AcQ%nSHR7+xArCpLrF|(aJ|HWoZdUUZ zq>3K3>ej*R=1DA1scvTyo6BEB>})fg`R2LeyN8~BXlm6Lxjsd=pv5#Y$z|~|-@-tY zH~-YKPm6(_mUkQqcBJ@zAyp>@5kK)09oTu!6M29dv=~# z!3FFvJM62_g;j;IacflG2zn!$F$vOlHg0c#R)BzX`#5-_oPt8(7gs!~0+~{<;i&Q% zt-<+f*%47G6hHwKVi6ofre6Srb)}0RWE7_~eP> zbIYD$UFXTZqAzFcFnfM{XOWXlIhsi64G%dS6QtLG5WVJ4A=349vxb#Z$8g?4x{l~= z3@xMANM+CZYfbC{Pa?xjj~ahu*syV<8B)1Y(1-$*hnm^H7#YK3$1eFUi(8NM=G~aL z@ff2w6+h(ksy`2LrTyjQJBa1i-{ne3NI>(xMFKnanl`>P|K2vb7kJI%;<12~AIi(i zIoTMJz0B*13_riVMZ|H$*-@LyXl#Db!0#sQnF%a0!IeknxmvO^6uOg9NK9~BULeI9 zotbDI@i6}R^(-lyJ|g%HVaF^0wK7`5R8j{p-Hdb*x4t*4s&8trQ5vh6#=Ww6f#5dWv5{!K+Sb71MP-^kn zn!Qoj&&qCYZeAhxIzR^Bzd!SsL72bPG7Vyxlf*t04(sa96|F1`d+~16kY6b|4CxRR z`FLzlQP(&6s5GJ;Gh`QvY6f^*?7%Gw@VTn%k7E?ER6(HKm6a6=;$k=@SYlz|Ai;i4 zMG{kWry;rf#wtgqBCI4}Pbs0!qSNV#;mrN9LB4p$&-REu06S4#p`W1FCP-r7Xis{R zU#6v5c`TyPzN9!!-)13%*VIIkB?b^3Jz95ejnh21amY@a~Qrt`?Pex!w zuM>rpx^fi~qa8w@^dcxi_*Z&U4Z`3tQ07?E?AhVa-twg`Q@p&f_3DH93`qG81-TRC zyCGtWr|9H0j2|cE416+|D>k(_4e56PtAr=5N@>MivDR40tcM*uKN0m=8tXDIM$XWh zz*zI8#wb8|tr9m^kGvfct4p@?b8|Y5zn=udBXJ6HCmTxFZc3>u)y0%ZR8!3>eObN6 zTv{iwOh2@?YP`Eotvt?z(zD($SOmMCC_-wGx3}`W!cm0dL~I6AY+$9?90=za?V52- zW+tXo#PlKTB8RZwi$!`2>E_!)F2IrldzBI&#GL-%Ct}>>Sy5)M8H^r+?4|4F&js1s zWAzE=*4X;;~T$ zD{aVj@c})R1f90(GAX@M&ey<965|56MhmKy&(n$*I7-iT zA?OpN1p($fDubkmf#+~ss{|D#5pNwxHsMLAwdj)#xwN!I0C-J=xHgD^D!?#t3qtG} zs+VRa6{6i>g6t{4FqCIfJ&H%;up~-K!fDKTQm^5!i#C{-@Qvb zX!Me9g#bMsyE$Xw&WfgRt7A`mOz$1F z*w3594e;{i5#n8h39vXw7d;4KJ% zUs_&P-Bwd<^WDSXb`hi#jFmDNhYJ4jkXLHRuh!D??mae4s!P7C@(is`Y_tJnV*%R3 z&4RcxNgj9l^?K@fh>(dYF&-d#YX(8c!VO>$D$6CP4q}2Ik)=-R8|CH{l)Iivx)&1w zh~Ui*(!4tBz8Z&Q5)Z&WR3CN!gFkx|HoPg2Fyy_E-YQ2t@HDbSy!+~kR)Iqb>PJy9 zNSR|)NTII@({AV5$D&-^7N^V%;qD^B4)JF`J!X|kJg%qjZL7!QkO0lC`RWYx7gaEb z#=ykg`_{!089mh%VwZ~$bI!cdhkr=Vv611k`=O(Y*8 z$$UyTAZ8E`THaLD{bC0tK!@V#1dQTQo?o+DRV7PFOULDUlUlyA*!Vvr72#Wy_X%0l zVNz8KOByK(G7^Il0M`MB&!0kkx&Y;*A=AQwA`TF{Fj2)j{eG9S3D6)SU*OJNyGVL> zg+5MXfkdQ|zYd-qh>LVnfpSX2$e2O^Hi@3kPu&eW`vO*76D&Bdm`LmG%8Inqt-#Hu za1md|_Pm1CtBBE5z^GQwjrWEJipa~z96{zf2Gm(rTU&cZN-6|fT6DxfVW{eWEI)9c zgPFW#-d#YvP$;~iD242Uqj;_0f<+vR4fnycgk3c@7)4cjef=ImZfEPECicc67e_xf zWu{#W3>Is7V`8Aa{Cdhao6*?u(1_k#2Ej*T~m3#g9nn4o!i~^GDW0a-vfm~hlsE zJwnEWP-VT@IORwo>>dFygrg8fk73OT0mUk(d&*6`I+WVIUV}FykPF1SDM_Q&ur{J= z3DG4%A{KC{6X3M&%$YO6s9J>}VuqkB@D%rn`E<-#HYq9Sf;DSa?}x0hW(;cxVq{Av z)L~NAnwy^w0ocV1&h9JAU66o@$o#AqL&%VXsiqNkiu~4a3D@>*a8;9PESUu4R8`pJ z1h8do5vlfd7o*lsie)@GF~-6bh~ptx93tFz9Z_~8rOgo75%(H+YG#=Q2s`|^_>@WG zRZ}2$!Hl?-Lc4c;S@f7wKI|)`u!VZg<=(L|D^i(*GHSYU+uqNa3Kz`g@7=ribmMmV zV2D~Vxnl%CqT**(m8`qi7Q!&wUK;`=6NwVprfefRc zpWl$GURh61&$pV;R#ej)VS_%T7^!+pL}F&RwRR40|Kdjik&hs13Mfm=M@JE=9}A*< zh=bz;87SZ*VpQP z%pW7f%@L%G|2}x|ab#p<9#Ty;3WS51XM*?=R`ux&6rf%zoI7_eG4iB_c81a8JOoU} zo?CMMhc6SD?&srk{apvWfqP^(;?*JWQm@v9X88#^gKETfvc+++&*tshj{>Y7LjbgI zFK_OD-HaNw0SZc%7*YipnFs99*$2A{a-de<=PL_FfF*VGY8vqH-#2c23JE$C>42?t z(FFD0GNX(Typ`^(bxd|)8wybh5Q`N~oVZyTE}An4hl0W8j3mqM!nVw7UF~R`Xe75l z9()QHRa?3^DJ$w4ac3D^dXD3bmT}K4cEmwPX^(J z8&mbt>=OFBcI~QxFXj?iiexY1lQrN6uJYyoAh9-+Z9fO6-Sx^WZB3(^y^A~T;3gNs z+Bk}>bO=7WSS$r2tj$9(BJ4Gg+<~%h!9IO?(b1VAFMOeqFGB{ali`P^BX_hX zx!Oo!V~x!^!^?nbFz>tC%eP8v$r`zc(Y-OsNWc;})}`&8xlh<8nm`$RC`RO@hLJ70 zC5WE{*%X;H!hk>9+!g5z)-n4)XT58Vn3nv(?_ECDa0xbHfs;(wtyF45?B_@v=2)5C zO023OzZ_i-@6PYj1nx_LV_wj4RL3grimc9^9aJyw0UR+Ba2uz8vXoHg4$XBtwb@gStqL2+(OG-_H^g^DVIajOp5Y3Ud z@aOFu)$}l6KGN#|$NNtQj*3%Y*94>HhIwyx`1SqRKrUCqHLM;zcutLRSS~4ZR`(72)@*<^v?Ix z>C*y+Z;$U6mkZ)??W*KGiB7JYS23|kz%Zon3q}+N9>8(r$T=8p9I8KUH8*RBen{9F zvA|%i$y@3HYAMB2Q8nB(ultQOe!ZkhJ-Lbe@Os_h|M{ERE3hFDs!2L$ghFdN2FXW$ z?lkbk&P=MPkeQ#Wb2Q&TGoV=w_DZvR_xBM&@`;P@A)ZFT{_ZTg{lPl%DpEFQSqwdb z$XP}D;;4QGV)S516*l|biFpHMkDpkwxS*i_I!5xxpkl2*Xz9sM|J|7Ot6}fIyYc=% zEQb8MEGWFgGI0U^klVL!t0Bb^&QrFxT%v3*TAtL<1c2P(1MwyvvB{awoP5iPv(HZC z_yBLLdBU(?Gc7xW9y5t+k@f*}Dvf>We|)UF4q9gt@T@7Sy-@kiBifQCFkYjz#>!lE zAzS-duEHTG;^%;Ri0UP+ja)?oJ)M}9%k~l*KC%U6G_RjU7G+;>!8+0+fPJ*D?7^c) zs<4J!F)#p=9?C8!jhwIBu8R;s}K#n5~ zM~pd}w{BG>^c`Y++P7`w%_{b`6^2u-2$1cK9Hm(2hFoCAYh_zG;2S>08$h=)29wkV;#v#G(T7 zNi)(-3}_Jt+`G6oFJX}Zj$@GZh!?I1yl7u5ZuTcZr!)3zZ*Nify3{vE2lnjTy*maX zGD#X<*~C5#8kzu-oQiB455fc0sR)wez^6E*KT(Ew$ibgbcxOb6p-H8`MFaK`&U!wLFJMvvrTsPM- z=7jsP6@{XQzn$C=7!{G!qJz(7&Q580nSt+p$NPgqEh-+$(z8F-oL zu{%a|)Mw*%-y1hr45CHsqt%lN!|BN14Y}^+zH0!nh?#_;?;Z|jE554FdQ-d)nl2vY2-(#}t-18wY;6kduQe@zZ7lq;5$>$BlD0S8y z6@iNM!VMjoh5@TwA|j%{gM1H75|P6BGS_w%A?N>i>x0o#}DMv#Oq@7nDgncXFX`Us~+i`_p-> zV+_o`e8-1k=Xe1T)f{le8rZ?%kA zwP!bTGRWG#rk`VO=@U|aXNSCeM5*}kPsQ)GGK?Aq>Z`w!Z{0un{KWkjzDJ_?`DQYC z$TF@`{7m&~3&w*!BbU5d1;^pK%clRjAnDScS*|{Z@B}{RJ+qt|(Qog@h&dOA|Ao(8 zcPY>{zf;W>nzM_l;qT)YIrO{#H9w0--mhh8s;$pX{J#;yf2=+7#s5Ekq@r)+cb}}~ zo`qdZ4+Y{?^t|7bWq&hNiu(VO47!K-ElE|Fc(zHlD!$>o4CAZU$p1c98IbY)m8%-# zlo4dKNL3fHDa(HNLeX@KHsqclgUDmuPN!k6B06a_A{}YxB3^7*+lqpP$t^x#xH{>u zZmyOH&i7q;F4Q>E;!w428G-_-0QHUm z49cpYc!jD>=hA~~)ogJ9b9C{&~Q)OhKROq?&1$K-Me)0W?H zNcL)!J${M9MSkrE3~j7a)iMiGw4OlT{LM%&Zz8Q9^9ph}}LBj7(X z(3b5G>ekEMN#CbTVNog(opfR$`|^4LN#`hDLEtxk*iJR|Oj{00pBiM8xNHmoaj5x5 zgCxuQdNGL)sXb#Br>H^p`Cl{Awhv2vtn*HNtR{EM$>9|jH}^bAxv$yD9gXQioM?2-8>+O{B6;8hqfGe=6qu z3eB5bvM8>Qjs+q#by=4)B5Bsc`jHI85Apj$LFHO3zP5Qo{$1oZMbgHM?unzMBmMpR z0f-Ri)x^R)NQmR$wi3baEVeSak(ubQ)+*ArJSj zSS@e%eov>yo+ka3JZR3=q~?vE>Hn3{ZvCPMR9ipOPnolztPc%u0fwk7_fSlDWUfC)y1bCA+H!_><%+7%xE3cXJEo6XiAdEa#)r8JLaety0y zuyk!VzRo{fr+YEeNCg+Mx1%Esp~F;WWqAZR%k(q6tx>!Unr*ugy;R|oe0N; zyb=rDQ*IZVk{Wzetg`4oS3?n?@ZZlyZir}Qjz6-uqeee`*MfW#mF9077FMJC+b2+Q zK4!Ews1+WE>sHx}KZapdVocFlRMWQh*;n*irdBo6uiWjOMfKPeeE_7j3MHunvLwQg z$});f&YV)@(5w8<)3D9MVu>q-7b6~cJBQ+KbZLo$)I z$ted2c)rmvM+463J{2(b3d&g9K89zfo)rM|tKz=$1Y9Ea+Cdg3whokj)v!>D!kNe& z_wRbKNqjdt;To`4M}JXlD$Uh`IRER^7k-A;X9Y({lPVxA3^ZZnZdhlcZs^DOJ~Bn_LKX7ohWxE4 zo2tQTOT)nMV?=H3*ZB7Qtt6A6ZusTjPxJ@wSBHihag=b{^X-#h(BOp-9yfv^{;6U_ zF1%Uov99axT4I1<^vM-;*{gzq#Hp?gx}got0FO>V@-Ol~T6XlmPNku65T6QkS)tr@oq`z)U z^lv?AOKhoIRO&R7Ur4Qd9tueJvkIG{MPvIICeSOn;8+NYhyso_o z7r4j1k({^R_QeThDKv7CMklMd-*}T$q)>OwpZw_GF~L8^fREhVb_U@E=E78z?$p!t zx)NN$aS2m|W>@4-CuaGP0fokC^j3(4ZY38~KbHNfGXQ;b1;LnRge(?xSYjXwSy|3Z z%+5OO!KbKRt-}nFN;ZH=oJksNcEmGs*YlE;ADhcBa36w%vK1^$gfeB~F@xmIsV$Vc z!EP%E8J*a|+sTTh)xU9`nC@r=?gVUO9{oiO3=i3DDmVhaBq__H zsgl_GSOyXM2)jjf_sjPmpH2H~<$wE4CEH?#uB$aING{NS%kBw>wPnh`i&Ce17>xns zqz;0ia6H6$(zpfpJ~8&YNkbqT2|uJY>!H)P{V0zXVKGSj6ybu4+AI+Xr!$HGtsu@B|a?XRS?vOc(RFYuOpLXjkBW%d>M;+xw}V$wlP z$sRys`+HN(EE4h%gY>GmMF`nMyPCKRw=~e|%kUN%M($6g*qc`TX=O~Z_OCl>gA1Y}KEk>qt^dr?$7Mf2$X*k?=QPFbNI6G7z-dBnSlgPU9~;`AEf<$eIM` zq1O34r}54v@x|n+51b7l0yEuH8u|g~Dgfs*eNAOrxs#WTgzo)~&rUdg0j}17@I$KL z01ip04uYvS zGCn>|q9%%H{UiRLH4&1lb)UDGax z%nH{a302Mm+z!&!P+ot8Dta{4iYWH@*lFLQV@0Ua>HVU`K6L5TPq!k(sw3su&;7g% zJHng#?q?_0LkVwx6!I&Qb8eYZ`-aDdBj3@Cbcz@HuMO$`41)&+Qp-K7%aH)z3o|3b zCIwgszio#^hZ>$>f>y6or*GdV(>Xn6Y~D&Dv+DIsW~wVEJ$ zIJE2JHGk#&og4B?!$cjC{_GoI6Y}TO;E{F#FDLpP0Sv_Vs*VmO(jh=-g4^QAFr-c21&Yz78&iDeU67PYzJza6kel(2vpxoarJq-((VJo&R^T9G%}B z_fOgUuTPF&a7rd$67Z9;jY2>G|5c9&lo?2qHC`SC5L=6kHj8WQb*uCJ%;JkbGRRpW zDESKfaFa%hJ=}6}Ci<|8W7!IDeXQXae15!V6&wsVeQo(S3V0ptpXvXVMR%dPPLAIo zRgv;5Za5u;9035ejnNYQ;y`R}q}JNCfD+HqQQ zZL>fm0+xoR2@cLs5{D|LGY2^bk?O=Aaw!bp*XP&R0#(H4|9PHZ{yTC;6M7wwDK35l z_CU*ro$c8ZL#aCB*OuO&87m_Rg8v|Hy_uStSi72mcS$!oypIJtn8f1Ye;5MRXu*>t z!HJNFkVy~djIkOU@qZ$QjP z(=F!G&D|d^&KWMo&M3|ybw&nQhL$&9((U2ShE{!fYKg-ET&BD&@&Ud(7;W4Mwc5}5 z{KO`%R9oZ4={}8A863ftqAl;(&AvSGsK~@2XY;Nfe6Tcs2yJx}zY!zXP_ioLcPLMi zq!%A`922=`_U%>`zeBz?M!eM>*#UjkPw0sgTB-qr4>&(VLSseGvLY)mFL#oS_oSB|Si?lp*%Pw;N2W_a?ZnRx>l>D~TMd>x6T(no8W= zAz{6*Cjp=ECkhaKQ83-B{1ok&?xK;B9Mgl0k`Y;7*B+EEBe&oPIbsA0o1CMFGb^}c z$=Mt@^3V?5$Ry!;xwfWg_ooOxkqQ$&SQE)hcaW9kxRt=6$$xJVJ6dcF$Rt$vq5J0a zWUn&)by>eX8G7|6zRDiS|M(nSF@5B7%Hdp)pHN7ZwU+jz!Zz!6TlX}$7 zcD2B%zI$|-^Qei>e+&s+^Pmrk)0=)qvqfeqR|vUe+kO3~=&*!KOEGue#gEl%3n2OS zfl;37aM9MmF`ODnI(4v>T5-x?d+I_(B9G4XmBmup5x)%GF2C@Qe@)Zr&c-kBp|)U!6@_nn1!Gf; z)T6MD2p6THPv_fPPHh`i(DqJma77UeE`|RHEdvtNluKq`bjQ=&=L>f@NHHzpDp9=^Unl8RiT=@@n z3>N@JbdAHG*mD}O7yf&N$zpPt#6E$wSZydpGq9?P~uVaT}RoU&Gci!{V0(j45awEJfC_I-tGg(9Eyfs?C| zur`&C0i!jNDkp>@k@nHTNhNUCK~hd76)m3wKK7-hF&5@+DxgFBXSZyhzM(`m>Dj0g zj+a3jAQ{TmGr<*(g9<1I4(>Ov3Q>L4_M>#J`R&^uBRcj-bT_MSV#@t_bhSX~8em3Z zw8XJ(E%E20h~1jkXrrNGxG1Jl-ndpyR(2+Gz+|zco8u$h6@-?Xo@WsZh^rK?OLDGL zx#tMR$sebjLP>=J<}A-;z-qy0zC1Zf1|XZ* zKV(6|#G~O}Z-&cz71_U5|iaCu`*8?8>VcIP= z808(U8Yf1ZV{2U5qfak-K~6%NcGtm?uHihAo_*%6w^KNXqZpV1eUB=@yDBJx{*y{VuL02ySOZ6tbw6u6w&Gm?3L`NhYu9-O1VgSPl)$4@WJ?hyT3d+>!NU$ebPJk6) zMWG`kjb;Rz?iEJ6*YY1DgHmVsn?F+!Gw+Rt1J)@GKU4Xgv|n=GKe3OwS_(c{pL;4I3zziMJS0QJq1 z{%TX+kE{t!)|KV!X@|mu4ZMl^k-Mw)S=?8oW@0HOlMKa4wgFTKty03g#v2XAB_tXG zxf>GIXUyx}=S#bbT?>o@MXQ38&Dt7@tF=^o7kja(_nQ+z6abBw3P>a;=1Ss;#o>E( zsLhZ|kG~`Jv*;%<~c4c8!g*FiKdg&VOD%TkicZz1;oFhQ+L(*f!qchXM|N zS^0!VtPla+{(@#dqTtvsOqoiL<*^X&5mc$!D@G?;nlcmYCZYkSnx5TSrk@HCh|w)z zQC8Uc*UrDU@7-_N#es7Q5wTr^UAyvUHvhmaZ+c<{yd|clAU%pKq+_KK7>4Ul##(GF z{Mf3Is8T91)!A6|30fAjo5@(wSi{|`Ex69d8V50+LMP)+U7b%00Dc_sD`0t5vk@MXM&64B0&&7e<4BQ$gL;joI=GF{nlXYaQJ~?+&luw8+M}KG?hy| zRG$2uy7jvsTNiUAr#3G8yct=c5LGaeyov7{O?RZr4m&W2z%t_fBr8tIF4J}6Y(<5C z$BP%8%#vuh$q6`oV5D9e@9?YrqALT>pFmO@S9-PrGi$EMyT(yak{ePV53y-Jk#cm}Frf#gZ<1 zj~RlY?o%_*oH~mqM0EB-n1uUs7%k^Y^~LCzZcb1w-%7WZg7`)6fYv1GPBjDUxnhWGw-%QAB*w&0r2+ zIW{%I?$M)A00X!*8`5i0sXTh=HI*y6!%3}>9Ab&S3w=;wxUsa{Y1T2d-c-S}S} z4~j) z(#otD978FH9Yle=n0n4NU1*I%0G$o60LQ}6tl=wYKcp6b#6@_W!EuS3$p#gF4ra9$ zu8AxB>ozQ?Ur5tSA>;-QpzE2gFc-pQ6ioUUP}woXIXiHg{FIRZWc7u(Yb)=&vNWko zo|TkIUE#!xA;l4tA9%J-!F-I>=VZf1-k-2WXVEWb1uJoXF>g+}FCwFps z^?5g0m6xZ4@Er`*b1oHFy^o+``(-g?`rI@9t2pY6^m;~}=s{aazT;RbaT-E%qkymP zh66o=a~`SU`1m1v$syYAevgTRA=CLmb5i=IPDLVg;kRkQ>`emO;-EMXn++nzmNl_BOR zJ~wt{(B7q9XMS!>KZSKCo0#8W08z6%1>y69Wno-tnz;veeT^H24uffH@q_z0Ig`z+ zNhAbl`2$Xb8KxkYvh#k$F^fgz(;Q}tW-AR;qc&U!n_Cf-vrtnf`TWI;ov~3)rG=If zT@OTO`#-f*Zp~zyr{X50EZ?XEU3$EK=kcmgO+kh3ijpHJsE?_ggKCobDq2SUI@;xds*4^^b)X|p^ zFdZ1qM#!zdw&d?}!mW-_10|_Yr^1E`rBy)k(RFO(SaZRu5J#>?G%vNkTP#c%EHbd zeSSo)Y!>47yW{!_wxkaub%8h<@7}$th@(&9od<|JSR!%lCIl+H z_D6Ya#RV_IHGeWOwx*G@(`3Ndd6FdD>@I_{AR?**hhGJfYTLlTK=mA|tuZ))mfq4x zS(G%;Z+Tja{xCtiD*F*~Ap}AYlPG|`sey(EVX0^E@lbxGoVjLO`FK!(fw|o;>zL0SzbLhUkAY*BSMibJ&6uB%D50*uM4(~DZV=BUkhv|{ zw55Ko@}vgMvb;8#7RrjxW%}5CU6kAWB}C~|h>AvC3VHz@HewE6-tC7`B`_WQolK|5 zErJmd5%aZvei2>YfyjYl;#Z?inWC4&F0l7gwy^jf39K){Vl8q1a5Rj6teZ=6Ji;*Z z;&^WN59lQD8S=A9TZZidGjJUFcxSgBC)`SboV+{7DYSX@FSz8G6N*SzL8+f11A7LSlj!tE6 zuK(WCy(VhT?1iE<&zm)M8#gwvN(*aK+cr7B0SZgWzc+kkf2JmN;xz9`{s~e%f}=b{ z(W!^th?ThWkJ%w{hd>1GuTSggrl?Z;#hj-f>>R&dx$%%gO4yps;@YcLCeS_G5f3s>ONXI*;$fqb3I`a#fsmfYCJ1`F60s8=1r1zS7gw-3NZehI8o72%ENbh zH%Oz>)_Hb=xNi8u+mt_|5~Hp3-~lfU?LKbLTl9U>jTPz10CQ!DIDgqX!C;>AI4o=y zYIUzJpLMq8uTkGH8P5(#NAWh7SPI44{F_|uyP~la0y=W`I1rrl^}r( z^1Z<|*vz?hSPQ!zau^WG)3dbBC0E5=Xftq8582lF{fKUwhHmOH>gaI-kh{-@pflpy zk_L`>>a8_HmM*9pqJD#G+`OT{fx&7M)suIHY;W%I*r{XTAzg2s*lDLf{_bd=nU~DmloJaYK|vg8#FY&n;*yl`@7#K$JF0-w4n0i!v}>vv@rOWZ9B={j+emYoTr!O zjp@4{O&8g#(-bUv{CGKsTeZn&tFJOJB3;2I5%*XlZ_zh!{46TUe$$X_-~Z6Xm24@U z?zNNy3{-4_)J1rcsiC}@nXGP&5)%_mhOx3srhTHben+9g>^eTxx_;U8xKdA5oq*F| z)E2>B|H(xZOE)qgN2k8GX1wGp=k!v$)9KZ5S#eq=Qc9Bf2jP>T6mY_&Fr;8LW zVNlF)P+85aOt-eWjz!4#vCxA=69=nHC0EboZaObPt6-z#&XWBYpL#reZqHXbhLpJ3 z*>6V>UMivd{P}55^3Fj=iF+FUMPQ?oI7m}&ooljCs<|pc{4V7rvFCDwiau8 zz#Ewy#yIWFt7<(3JIVyc2CM|?>n$o?&R;W+PE@#5y}(rYxA!E3WWQA`W+XbldY ziH)ylh*T-}T3>$NM+tFyW?!%gSvn*8QEa+1*31I6ChJ8M5^F+uxZc&&bIjLnT-x)a z#-{V9;bW_Z5 zwaoOxD$`z_=@i4OL#k^Rpfd}9fnSkNZ|>x-`RO>Vm%faw=3%Gn8!}z5%lPRg`e#RrC}>5 zdo6!TRrOuHikc0{#WpVWn|(aZAe}_2?0#8%+=Y$aJu9{Q^9?L}P}l2h{oOnA!O)8ute5F`2I`Q=b}Eaek0(9X{O>r*9fI-E^CWz=2Wq zQ4YA`rcW8<*Vjzee+baR~aieM&!zLfU4CiKXrFYzmMTd-&qZBr;&(M(N|PE;6A!qd?H6W z8aSkDc*3fAO7&=8(q_9$7#B4e6Z7I;ck44Z{pK?Q${?TFSZCP16EGLK{47gUMRoKN z!(LvR)l$?qPlu8@&0_r0L{ZLoM8!$Nnv)ujgg?(FEOJ~)az=@U*|G1xHzlTl{2T` zx~g3l$Vn36O#>FPyo+hEuayzm; z)Kz%Qf=fA7I@`#t-@jvfahRcQ$|otMpD}UNt0nn(=7AjAM7MzcMS;MESaptReadR) zT0;**m$Mv_3Fbkrwzoy-w=_3Q$|#)m6Ghl%yIb$aTnq0>X5)!^|0!Xsp#lw?(;4Z~ zh4*gUsOCAkSEFFg;o{3A$ApU1gxT^X4jEINGUr~*9-veD_#j`3!#yKb_d-rYbF)0J zp;TA#`f0^mKVlVjM%l7}n9Ob7v7o$nxM^Cn?g^JX>g>I7UM3LHQ5bP4A=Gp z>{MR!ZoIjE^YoyN!^p_HdDhLlHu0IEEH?deF`W8K{TjQB{XaGmoQO3JyjbvVs!FtwOhT#f+3t2-+$T8fI+f#Zql6xL6;0u(V^bl zzCC+C&9$s7x~~KSZr@XYxfwc2<_6wDS*f zF|LscPU|WgJD)`2i{>^%^?Scj7#_W-snZ*9U@)OPLDa&qaJGOHp9w${Jl+9s`I!aT#lQ7eznwDR-P4^tQ^I={{E)B zdj*Y4V4_X!+qdxx**kV>T6*8P;^tB^oi$mPqI5c4aen5!z$Y%}=j@vKx;t&- zD=LfX=EBIhy>arZozHf@ma+QrX(7JJF+bULlQ}}zBBU;7>SMM=pYB9q$I?YjR~Pbf3F-g>bHReV-ZmxKGY!7m`+dq*F3z2O^nn0W6+K!FTuw@S^9~b<6FPtE z;loiwJqyEO@j{oMxw86h!E%!$yU#L2DhLrWQLl{hug}BTE@>d`nftfIHsC3 ztN-tbQ(5S?&We)k%rGNq*?s44nW(L!gpxsc?m-D_#ob3&Fihwlznc8!>UGNC!v4-x zT1+twJfZ&g#}I|5{EFSUbYVkMC~@I*$RCZZ|CFgVbP}r0DRxQpGWR^A`*#k-X2Rh( zvuMpbIttk>_;LRa)A_2%le?QYEy`WIa5-dNe|~YV`sTqvVeF(uLW8jrU>%}ELWC)Z z7(1DlK>LoAF*VkynR5|#YPKj-Y|;p5UL+rBOqf;~3$w^;YkFrRBkDCY%LW2kM;TfP2+JwxH)lOvKx#HI?JJlSzVdtc0;y0EX_oNMMMXz|f~kP6 z0lJvD6aZ1bmOPWmxfcSc2aq8|`^3x#q&Gm%PdB!szV%;JfN~&VF-@x}+vt1em3mX3 z0x_rZ_J3A(vZJxBW_sFuD_iuod%j`+xk}7vY*M>;drZ-U7OE|7SzEa;Nwqzg%qndg zSKL}(jba30nf-zJUrQ3R?erxrV}LDB026;Xi2*Qm48y7b@=~L|oyd})Bq|w9ssiqH zivOVHEdPsP%7WA&(95hOas;&)BlQ~Hk&MjG0KZqFfm`$wP!(Xz%Yg$8zytzXJLwSA zt0mU%x(=-eH;E=^3kT?_wiIf%LN0XiqsdWNC)ZSNtZ=(3> zzIax6}6I7pGURwXMF(7FCV@h#<&%>c~|ruSc<+vL)>+9%jLUFvn~i>-EEm*e59QYDIXpcJRm_sdGb@;SYT$LN@2BM!3TGj;y1s z&H{&gAN<+;?n1luw2?&~a@DbuaOUJrm;D)mS%2MW z1PxD83nEXKx=b_5QGAIJ(}MXzp#S$6%zC6f3m^M)h}~JMQ}>Tqn3PfZ83+WIeD(5@ zO?#B(?uN z-d>~c>r`{s`k>;H;1hrFJ*2t?K#^56c`@}VQR+eIwnO$zB0jab)W4tZ2@D@iP{#Q1 z-+$;@LUHlMzwc(_6!5moi!YJ%0_KQYV(R6;eDpt=ls_+o^8YEuWHtZq4MJr~z)Ti0 z`~#{nq^SW42Ss_q}^3 zP>g1CgT#w2`cHO@9ex1Ko+spJ0yl>Gi$;ABR0q&l;99VSei49jpsSI(pLBsK+6t0q zBmt8gLkGv4%o_OBw?H`t`9`#l8QiVv_SZ5T|3()6()5OG<$C_V*;)W96WAYUkKu6{ zWl&wv0=%;5CqbP94nRh%fsfM?*vx?D7y79VGi)IF0%8bL?{#)Bt|Y_sclp2Hc**iL z$3V)6%TR|h8(R*?AzMWeHt=@2IKlVVX#RL1_ryiIvVXufay;{EhQOB6a?i0XKlmse!<$LN`CXOTn|T3 ziB?N2&~%(O$fGF^Wd4hYmo&PMlIoNX~G8w-u(|Z@{e%iANP!Imywj}hJ`rKecAsI zzWtZ2y8k~r4}>`PGCFm>x%*AycV<2ZgpIV4@5Ro*?Q4wb-{lR$zP}|EYQl_p})B`|COjkf23zmV* zStFXg(2=%9gh^}VeuY~epmel_U0e}1}jT0QI5E4%ztW_ivd^Mx)f(6@} z;%GX%HW9Q=BD6?u2hTucvO!Qw<%=WKJ@63-9~;6y=!8aL_*yELwr;2gdSNlJdYIov z9vhN-VQ1q!MqL<$3OkAV!k_udHl+#Qsr6!Z-46-v3XYse?cjk zfw4?v(pcba{ErEND3d9X=+6^8`Z1y|h|YThyEOWoXvy18ZIN~0?rbLpH>7j%D3K{%q{9#GigdnP z4^xWJxQoL(C9^U|mDhp}Nq{dxVBJ99=oCO;-=S$mmXX$~2}N*BUvMU}hPd-ch>0(> z<*&}9>NQ7>Ro8_dVThh+XSK@w73fkv)i`RDiI+g+qd8EyM1AW8v=Sg>qh#rPR9V@2 z1~V6Yh^8&TX={7}0;^b0OdZ63gR0$XHEdNB$DRh{2L}K~#%86;VSa6SIiM zV8aFhzOp>zDC7XaK`26Ruo7?hE#P~)Qd0fDy8)lGB)nC?p~@k0^%9)F`Z=OBhh<@*rwzN#-1MPqd5#1>@0bMd2~HPMC%LG zj^+wTI9LjTv*S~cqm5JY`Mi&$eg3Q^cQgi4Y*sP`!tDMml%X)K*6}g>Ky0B%A(`v? z2+Fj^if@t%GJaqmVjvA@os4y4+$tKQ^?`?}26WKk+voQQ&ZIBUWo~xDkf_;_fvv#% zTcBtAq+hh_wux#j`#cQBT}~UIisIUQd$GrafCl0QM(%VP(4IyBI4Jm?0xC28d?Zif z82kL#u#JgY$=iv>QSD3+tMZ{RTdyT0;;#vk`Dg5qo*z1|vX;Z5oQGoECs;c+97zj7 zzfV}D20u+e$UkFjZ-}L4+La4}Am7poRP3`RWPz0U3^16j=8zS4v?n{YSOUl!cJH9Q z$sK1vUnztzbHU$)vGcH4r$Bh9YvIuY-kldLFEPmFKQMw6@RM6d++N@^zUt}ZTQJ~D?3m|pE z+Q8(!^4OubOsuR#g!lR38o?>M%VZb~!V1KeNH;$Yy1>7JsN~a)^qZjUtqzqX6^<-* zXkGUwn}8+%9Q#`z00Tf$v=I;hL3CL&&A6f^40@de5CunL3b8jZfOB5CVEgE~TBYwa zK<*2IgRAE62$5*0g>?fCn$guVADg}WU*Re#VEB-M=Y(^scjYzS0U7g-A$7+9^V3O? zBV<+}JnJ_MD8TMS5g7tJANd^g1hf!L>P@+18mJ)!UQmaHr65|HpyU$$8Y@%LiC8H* zU;_X>hevh~=YzBrAjPIs_5;m2jIcnss2P~j;6l2kTRO)ST>}Dv5N1eDd_D}|Wg^QR z8?=49|KRwR#Z9_^kRQY*ZO3M{O(L%sa)@b>bdurCgrGuX6BQ2-F+0Q)#@IXT-fqb_ zYvll{PTfkd5{^dF{sicpC$O7DKsXptSMdCF&b*+XDjw7Fkfm-5>-kSWOV)vp>5O3Z(Yr2es*m>NVf6B5B{DWzq|!Mw z(1j><*C3dpx3OB}Jw?Q7r*UzXWgPe1_nI_fc`NkV;Pb>=PhR%M-?&=P6WeY34#ah z(@O9n{=k?L<~*%Xx$odUXxc($FswNn7#U+S;2vaO>w4$K!iq~&xi{9<*6zd5^io#? z1B1-~#k?7TgZ7Dv;@&FZxDGoP5si$T+~SX=r67kkkIvY~#>N(xmgd7uuu-%44)O*l z&%nJYs;S)y3Sx%)@&WFQ38kfVa-t#T=28^sTItTMUAa>B;>BIiRk~kZt^pnU6T_MI z#_zTOAGS`e3BWblo+GbW-e97`dr+i~>FIfY`lO2K;Z0zf*|T|Hj15IXaTZor6h4@< zXxwhX1Xp{Hy4`S~wf zTjv4rI0P-%vw*<)8ILJc#Tg#CbZKvWLqh`m|E>V#=nM2LLMxVgEP}McUzV2q`uh65 zPoDH7NjN9RwMr?EMDaNhJ{A}&*8wH|MU0%8WFIygILp@nvUgBv^nfbob8Ncrn;1da z=E!gmOp!M?-$Nj_Mi(xe#YhJ{)dyq;@rY53jE$8;O;)2|Ny){o5U=Ne3c$m6ucs#` zbHMd=5qd2D)D%@ei@FK6iVe%3enIkiM8r~V|COPkp@A0|DTLY)b(q0oXg-?` zuKgHvaDV-VT&DmFE9=t(9ACq4(jO}Mg39Z2t=-~V!)^L%4-zV7ic??F$+>~J_sHdG z)D(?ZMIs_1%;1^bPzbl~92@^ZxZoFsShTdYn{j(yK0XejRS#zD!6Z;PeAwf{2gUBp z@nzN*E^vWvw!+HFD#IpS*JJ06b?fAGzOZgPAqnE*Vx%rN;Td%;bz_;jy1J^Nzt~`B zKjAX)iRJN=CzuXFAE12m{d+mjvKPGYMO&h8)_A7@<2CE@%_!s1CYcARBQ z$TvN-V}N~>_naRxjt0r|)yC^OWD9bcEs4BJz1oKn#GRS$Hwo}Q5-0!*T~$|$Z!}V+zSyI^nHov zDXld*1H*t-DMTRttF3Jr0|P_m@W(w~US7Enwd0B_$Q5-=C2 zRTO{x*!{rt*|A-|p`rKh-dzJ--sQv`qLz0VQ-u*Z7x5m9jE+8!%D30uy9MAgAJfvh z0a?A3k&%&-2k0re7ln3+if(4Pw;XIZIt@+D2Z4dcc3ZZ~&*lH1vpd8F>f8{2Tivka zx~*I9R#)o)l(>zDhYrhz!4k4$5P^V_vX48v#N5-)=Wh*j_%RaB>A7~y2aHTF!0fk* zU&Bla;m0YRwxz|zoe7yh&fi9@VFh4s_>}y`ix;Cy--uM++NjVuIKm+euDqjk|7kcFB0F zjBxSiAmjM{%s#Kt(b2U*x_*h=dL5tpKRH(mb${F)#5d9meTwb+r%%gkYWnAkr5M#5 z;7GxB5%1q76CPhyn(fDgzTME%1) zi|30D!wt5eQ~u4)(a)dD!Y>|6O-lnYmmvYgNbA`tyC=i1tTb0_&)f3UD?JZRe?1e^ zEl4`IKKSIXH|H^Gd(^d0a9a>df6>IVjWjKwpK@7U1ywklrgzlu#Aqmbc;K# zIRtb*ejcoem*v5Y;>T}Mf3q5dw(-Ncr2hIpf4%heHg-CGjNIw})3<~>|9t7M1G&qe zdU?HMPP6UWfaG;~toG^vTLDpW>A@k)`PI*`r-w#J!l5@a zGcNEK%#a1~lzUF0Y`&-9NTt3=N@9e53dJ4boM%DMIQB{_u&S`20LJ4SO89|Q@L1dT z?Te2ISHvTASg*!19v3)gvHJJy=h6HbB&082zrLQ4Azoi!-_+i|TtGmeKHY9Lw|~iS zrmwHBTE2>sQXUrRa?cOGq~zr70s;((No_6}VN<+ZVo5eo_p&w1moTnchN6H6j-vy0 z2Bf{O7lj5#M{meI@2n_>h*0TI_!=1mXA2{+L|N_?4o?8~en?UZLo*<+LjlD8rgG%< znoEUH>q$RghV3$H_-DH;LR0`DaeCAl4(sabdbWJ+>F$oV=};pfX>JyGMoP+$VMjy| z_|LubK5XJl@IQlNW2ljOp0-O(O(hkEeJuCzY7|vfdu>%Eu=&MqA+%h-er!WcO--un zv@kUFj%jP(Laz86K_hBo`6y!yVu;2fN~lx&79$gr7T9}H>gX<_N&@3ndKpQ5Q%j2n z_-zOhTaa-gWBGs)7>cyT%f{ajB_W1Gj4pw+ee(P9mckFm!uw&P*6=?3ro;kA( zRQ_jGJ?oj7JuwbJ=S#s_3am*X;{PFp#^=%Ua6~x*rkF4PcuXZ+x`$eHKBz{-+#}n; zGL=U0bz{>%5;EO@O7%@Z3q&nkaB8MlZpOD!_mb1BvSrH_xT5zUB7l)xU|GT_w+(lI zruKVyvCfHUfm(3WK$_U}5{x89!;Llird-xJ66!FxV(DI>wTx9WfW)hZ#Ov~|JO{C8vXZ)SrS7{%q) v&#)fkr-VY@)WXk}Gamn^w&?%$MJE~Fn+OOC(|3B4Mun2R+Fx(w&RqXr$6O1L literal 0 HcmV?d00001 diff --git a/docs/source/_static/images/benchmark-results/0.4.0/tpch_queries_speedup_rel.png b/docs/source/_static/images/benchmark-results/0.4.0/tpch_queries_speedup_rel.png new file mode 100644 index 0000000000000000000000000000000000000000..d95b41503764aafa92e36a121a7a7f1b778b6b93 GIT binary patch literal 48051 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 literal 0 HcmV?d00001 diff --git a/docs/source/contributor-guide/benchmark-results/0.3.0/datafusion-python-tpch.json b/docs/source/contributor-guide/benchmark-results/0.3.0/datafusion-python-tpch.json deleted file mode 100644 index 8f6ca23a2..000000000 --- a/docs/source/contributor-guide/benchmark-results/0.3.0/datafusion-python-tpch.json +++ /dev/null @@ -1,73 +0,0 @@ -{ - "engine": "datafusion-python", - "datafusion-version": "40.1.0", - "benchmark": "tpch", - "data_path": "/mnt/bigdata/tpch/sf100", - "query_path": "../../tpch/queries/", - "1": [ - 5.120208740234375 - ], - "2": [ - 3.7675418853759766 - ], - "3": [ - 5.07387113571167 - ], - "4": [ - 1.9587907791137695 - ], - "5": [ - 8.816755771636963 - ], - "6": [ - 1.0937256813049316 - ], - "7": [ - 17.575931549072266 - ], - "8": [ - 8.337157964706421 - ], - "9": [ - 17.257150411605835 - ], - "10": [ - 7.945651292800903 - ], - "11": [ - 2.7080790996551514 - ], - "12": [ - 1.7468397617340088 - ], - "13": [ - 5.695569276809692 - ], - "14": [ - 2.0220673084259033 - ], - "15": [ - 4.112257719039917 - ], - "16": [ - 1.9162819385528564 - ], - "17": [ - 21.812944650650024 - ], - "18": [ - 23.510076999664307 - ], - "19": [ - 2.842766761779785 - ], - "20": [ - 7.717615842819214 - ], - "21": [ - 19.96519947052002 - ], - "22": [ - 1.0273211002349854 - ] -} \ No newline at end of file diff --git a/docs/source/contributor-guide/benchmark-results/0.4.0/comet-tpcds.json b/docs/source/contributor-guide/benchmark-results/0.4.0/comet-tpcds.json new file mode 100644 index 000000000..ecd632e84 --- /dev/null +++ b/docs/source/contributor-guide/benchmark-results/0.4.0/comet-tpcds.json @@ -0,0 +1,755 @@ +{ + "engine": "datafusion-comet", + "benchmark": "tpcds", + "data_path": "/mnt/bigdata/tpcds/sf100/", + "query_path": "/tpcds", + "spark_conf": { + "spark.executor.instances": "4", + "spark.comet.cast.allowIncompatible": "true", + "spark.kubernetes.memoryOverheadFactor": "0.4", + "spark.app.initial.jar.urls": "file:/opt/spark/jars/comet-spark-spark3.4_2.12-0.4.0-SNAPSHOT.jar", + "spark.kubernetes.authenticate.driver.serviceAccountName": "spark", + "spark.kubernetes.executor.container.image": "woody:5000/spark-tpcbench:comet", + "spark.kubernetes.driver.volumes.hostPath.data.mount.path": "/mnt/bigdata", + "spark.kubernetes.driver.volumes.persistentVolumeClaim.benchmark-results-pv.options.claimName": "benchmark-results-pvc", + "spark.comet.exec.shuffle.enabled": "true", + "spark.memory.offHeap.enabled": "true", + "spark.memory.offHeap.size": "32g", + "spark.executor.memoryOverhead": "2457M", + "spark.master": "k8s://https://kube1:6443", + "spark.app.startTime": "1731962698535", + "spark.app.id": "spark-41930409e7b1448a837ed5c0d9130620", + "spark.kubernetes.executor.podNamePrefix": "comet-benchmark-derived-from-tpcds-31aa739341057c91", + "spark.serializer.objectStreamReset": "100", + "spark.executor.memory": "8g", + "spark.submit.deployMode": "client", + "spark.kubernetes.driver.volumes.hostPath.data.options.path": "/mnt/bigdata", + "spark.driver.host": "tpcbench-py-26286b934105723b-driver-svc.default.svc", + "spark.eventLog.enabled": "false", + "spark.kubernetes.container.image.pullPolicy": "Always", + "spark.kubernetes.submitInDriver": "true", + "spark.comet.exec.replaceSortMergeJoin": "false", + "spark.driver.bindAddress": "10.42.1.9", + "spark.sql.warehouse.dir": "file:/opt/spark/work-dir/spark-warehouse", + "spark.driver.extraJavaOptions": "-Djava.net.preferIPv6Addresses=false -XX:+IgnoreUnrecognizedVMOptions --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/jdk.internal.ref=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/sun.nio.cs=ALL-UNNAMED --add-opens=java.base/sun.security.action=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED --add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED -Djdk.reflect.useDirectMethodHandle=false", + "spark.jars": "local:/opt/spark/jars/comet-spark-spark3.4_2.12-0.4.0-SNAPSHOT.jar", + "spark.shuffle.manager": "org.apache.spark.sql.comet.execution.shuffle.CometShuffleManager", + "spark.driver.blockManager.port": "7079", + "spark.repl.local.jars": "local:///opt/spark/jars/comet-spark-spark3.4_2.12-0.4.0-SNAPSHOT.jar", + "spark.app.submitTime": "1731962698320", + "spark.driver.extraClassPath": "local:///opt/spark/jars/comet-spark-spark3.4_2.12-0.4.0-SNAPSHOT.jar", + "spark.executor.id": "driver", + "spark.kubernetes.driver.volumes.persistentVolumeClaim.benchmark-results-pv.mount.readOnly": "false", + "spark.comet.exec.shuffle.mode": "auto", + "spark.driver.memory": "8G", + "spark.plugins": "org.apache.spark.CometPlugin", + "spark.driver.port": "7078", + "spark.sql.extensions": "org.apache.comet.CometSparkSessionExtensions", + "spark.kubernetes.driver.pod.name": "tpcbench-py-26286b934105723b-driver", + "spark.kubernetes.driver.volumes.hostPath.data.options.readOnly": "false", + "spark.kubernetes.resource.type": "python", + "spark.kubernetes.executor.volumes.hostPath.data.mount.path": "/mnt/bigdata", + "spark.kubernetes.driver.container.image": "woody:5000/spark-tpcbench:comet", + "spark.executor.cores": "6", + "spark.kubernetes.driver.volumes.persistentVolumeClaim.benchmark-results-pv.mount.path": "/mnt/benchmark-results", + "spark.rdd.compress": "True", + "spark.kubernetes.executor.volumes.hostPath.data.options.path": "/mnt/bigdata", + "spark.executor.extraJavaOptions": "-Djava.net.preferIPv6Addresses=false -XX:+IgnoreUnrecognizedVMOptions --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/jdk.internal.ref=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/sun.nio.cs=ALL-UNNAMED --add-opens=java.base/sun.security.action=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED --add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED -Djdk.reflect.useDirectMethodHandle=false", + "spark.submit.pyFiles": "", + "spark.executor.extraClassPath": "local:///opt/spark/jars/comet-spark-spark3.4_2.12-0.4.0-SNAPSHOT.jar", + "spark.app.name": "comet benchmark derived from tpcds" + }, + "1": [ + 3.613295316696167, + 0.9363176822662354, + 0.8858673572540283, + 0.9213356971740723, + 0.9260072708129883 + ], + "2": [ + 2.1988301277160645, + 1.2930514812469482, + 1.2836058139801025, + 1.3122997283935547, + 1.310011863708496 + ], + "3": [ + 1.1296944618225098, + 0.8390710353851318, + 0.863898754119873, + 0.8277552127838135, + 0.8591916561126709 + ], + "4": [ + 23.46227192878723, + 23.30874729156494, + 22.632073640823364, + 23.021177530288696, + 23.210322380065918 + ], + "5": [ + 4.248774290084839, + 3.8154327869415283, + 3.7951250076293945, + 3.841792583465576, + 3.830977201461792 + ], + "6": [ + 1.2654953002929688, + 1.0582756996154785, + 1.0062625408172607, + 0.9889535903930664, + 1.0066215991973877 + ], + "7": [ + 1.9927458763122559, + 1.7910470962524414, + 1.7864744663238525, + 1.8166968822479248, + 1.8165059089660645 + ], + "8": [ + 1.39858078956604, + 1.1697239875793457, + 1.181609869003296, + 1.1592917442321777, + 1.2115702629089355 + ], + "9": [ + 3.8118808269500732, + 3.5978047847747803, + 3.6009204387664795, + 3.6475167274475098, + 3.720515489578247 + ], + "10": [ + 1.6375336647033691, + 1.253730058670044, + 1.2790555953979492, + 1.2641334533691406, + 1.2304799556732178 + ], + "11": [ + 8.888672590255737, + 8.726006031036377, + 8.779715061187744, + 8.728724002838135, + 8.738395929336548 + ], + "12": [ + 1.209524393081665, + 1.1902368068695068, + 1.2197084426879883, + 1.214184045791626, + 1.0896027088165283 + ], + "13": [ + 2.334285259246826, + 2.3459174633026123, + 2.376317262649536, + 2.3597984313964844, + 2.399404287338257 + ], + "14": [ + 22.216265201568604, + 21.80620813369751, + 22.18099617958069, + 22.004033088684082, + 22.437575578689575 + ], + "15": [ + 2.6664204597473145, + 2.5816941261291504, + 2.6421005725860596, + 2.655304193496704, + 2.6851134300231934 + ], + "16": [ + 7.677209854125977, + 7.403982400894165, + 7.679336309432983, + 7.390750169754028, + 7.398985385894775 + ], + "17": [ + 2.4100611209869385, + 2.4173429012298584, + 2.3482720851898193, + 2.3698456287384033, + 2.4305622577667236 + ], + "18": [ + 2.439337730407715, + 2.5373470783233643, + 2.4983959197998047, + 2.529120922088623, + 2.538098096847534 + ], + "19": [ + 2.5696511268615723, + 2.5729575157165527, + 2.5877132415771484, + 2.5895493030548096, + 2.584230899810791 + ], + "20": [ + 1.7106993198394775, + 1.6393051147460938, + 1.5836944580078125, + 1.624565839767456, + 1.6353082656860352 + ], + "21": [ + 1.096069097518921, + 1.0144309997558594, + 1.0689029693603516, + 1.1604490280151367, + 1.0859742164611816 + ], + "22": [ + 8.084425210952759, + 8.307284593582153, + 8.248545169830322, + 8.41027283668518, + 8.130585432052612 + ], + "23": [ + 31.006169080734253, + 31.809021949768066, + 31.491374731063843, + 31.673828125, + 32.41964364051819 + ], + "24": [ + 13.210773944854736, + 12.064785242080688, + 12.284985542297363, + 12.34001111984253, + 13.093876361846924 + ], + "25": [ + 2.7884602546691895, + 2.611072301864624, + 2.6468446254730225, + 2.5781397819519043, + 2.732714891433716 + ], + "26": [ + 1.1039531230926514, + 1.038722276687622, + 1.0986864566802979, + 0.9996967315673828, + 1.0384690761566162 + ], + "27": [ + 1.8319566249847412, + 1.8125741481781006, + 1.7781953811645508, + 1.7830994129180908, + 1.8019931316375732 + ], + "28": [ + 4.2303125858306885, + 4.181443214416504, + 4.171067953109741, + 4.197100639343262, + 4.169423341751099 + ], + "29": [ + 3.66855525970459, + 3.7532052993774414, + 3.566790819168091, + 3.7179572582244873, + 3.686014175415039 + ], + "30": [ + 1.117868185043335, + 1.2058172225952148, + 1.0498886108398438, + 1.1140456199645996, + 1.1328985691070557 + ], + "31": [ + 4.85772180557251, + 4.797250270843506, + 4.839718818664551, + 4.840039014816284, + 4.837655782699585 + ], + "32": [ + 1.3921968936920166, + 1.3323743343353271, + 1.4425835609436035, + 1.348841667175293, + 1.3850789070129395 + ], + "33": [ + 2.293806314468384, + 2.253751754760742, + 2.240044593811035, + 2.2648448944091797, + 2.2620596885681152 + ], + "34": [ + 1.3108677864074707, + 1.2720186710357666, + 1.3723440170288086, + 1.2785835266113281, + 1.26865816116333 + ], + "35": [ + 2.447936773300171, + 2.445019483566284, + 2.438453197479248, + 2.401923179626465, + 2.5346932411193848 + ], + "36": [ + 2.4888269901275635, + 2.191847085952759, + 2.1506924629211426, + 2.1331875324249268, + 2.2247748374938965 + ], + "37": [ + 1.82137131690979, + 1.7718479633331299, + 1.762279748916626, + 1.805389165878296, + 1.8042621612548828 + ], + "38": [ + 2.4564521312713623, + 2.7351372241973877, + 2.2422144412994385, + 2.271132707595825, + 2.6268062591552734 + ], + "39": [ + 15.272886514663696, + 16.56870722770691, + 15.184351682662964, + 17.65111756324768, + 16.851532697677612 + ], + "40": [ + 4.618505954742432, + 4.582245826721191, + 4.805966854095459, + 4.843486547470093, + 4.6164655685424805 + ], + "41": [ + 0.15246796607971191, + 0.12736821174621582, + 0.123199462890625, + 0.13370347023010254, + 0.13098549842834473 + ], + "42": [ + 0.8077573776245117, + 0.7788431644439697, + 0.755042314529419, + 0.7611534595489502, + 0.7864503860473633 + ], + "43": [ + 1.0223720073699951, + 1.0028953552246094, + 1.0250427722930908, + 1.0194573402404785, + 1.076014518737793 + ], + "44": [ + 1.1571755409240723, + 1.1396656036376953, + 1.1511790752410889, + 1.1235918998718262, + 1.1504936218261719 + ], + "45": [ + 1.8097100257873535, + 1.8120465278625488, + 1.8139166831970215, + 1.7709436416625977, + 1.7835633754730225 + ], + "46": [ + 2.4002232551574707, + 2.2962591648101807, + 2.38244366645813, + 2.4457669258117676, + 2.4249236583709717 + ], + "47": [ + 5.617861032485962, + 5.408482551574707, + 5.431608438491821, + 5.449252128601074, + 5.623114109039307 + ], + "48": [ + 1.638838768005371, + 1.68455171585083, + 1.6805500984191895, + 1.6506848335266113, + 1.642219066619873 + ], + "49": [ + 4.706164598464966, + 4.6550188064575195, + 4.703380346298218, + 4.4827210903167725, + 4.653671503067017 + ], + "50": [ + 6.328258275985718, + 6.51447057723999, + 6.318875789642334, + 6.525310277938843, + 6.306564569473267 + ], + "51": [ + 7.000143051147461, + 6.798591613769531, + 6.729523658752441, + 6.572738170623779, + 6.712196111679077 + ], + "52": [ + 0.919975757598877, + 0.8573052883148193, + 0.8529157638549805, + 0.8662893772125244, + 0.8644464015960693 + ], + "53": [ + 1.268928050994873, + 1.1189360618591309, + 1.155031442642212, + 1.151642084121704, + 1.1593868732452393 + ], + "54": [ + 2.8306691646575928, + 2.8038384914398193, + 2.8667569160461426, + 2.8659167289733887, + 2.8607115745544434 + ], + "55": [ + 0.9192891120910645, + 0.8829891681671143, + 0.9207160472869873, + 0.9063892364501953, + 0.9118208885192871 + ], + "56": [ + 2.098660469055176, + 2.0563149452209473, + 2.0371997356414795, + 2.0526468753814697, + 2.052966594696045 + ], + "57": [ + 3.1710643768310547, + 3.102032423019409, + 3.1820738315582275, + 3.2220702171325684, + 3.1981401443481445 + ], + "58": [ + 4.2822654247283936, + 4.219950199127197, + 4.260200023651123, + 4.203465700149536, + 4.235920667648315 + ], + "59": [ + 2.8434674739837646, + 2.8698465824127197, + 2.958869218826294, + 2.9485886096954346, + 2.944758176803589 + ], + "60": [ + 2.0825767517089844, + 2.0261218547821045, + 2.093472957611084, + 2.028120756149292, + 2.0296173095703125 + ], + "61": [ + 4.164551496505737, + 4.247161149978638, + 4.208996057510376, + 4.154303073883057, + 4.216529369354248 + ], + "62": [ + 0.6185667514801025, + 0.6253015995025635, + 0.6186847686767578, + 0.6257288455963135, + 0.6202499866485596 + ], + "63": [ + 1.088174819946289, + 1.0861599445343018, + 1.045111894607544, + 1.0676589012145996, + 1.0662899017333984 + ], + "64": [ + 11.732340097427368, + 11.538040399551392, + 11.864402532577515, + 11.667150020599365, + 11.87758994102478 + ], + "65": [ + 6.239193439483643, + 6.3904407024383545, + 6.047687768936157, + 6.067760467529297, + 6.426549196243286 + ], + "66": [ + 2.0485336780548096, + 2.0909292697906494, + 2.0843634605407715, + 2.114530324935913, + 2.2097740173339844 + ], + "67": [ + 23.676459312438965, + 24.08505654335022, + 24.311410903930664, + 23.65312933921814, + 23.644501447677612 + ], + "68": [ + 2.6239256858825684, + 2.68916654586792, + 2.713677406311035, + 2.735755443572998, + 2.6569156646728516 + ], + "69": [ + 1.3641211986541748, + 1.3893208503723145, + 1.4258897304534912, + 1.406707763671875, + 1.4287145137786865 + ], + "70": [ + 2.3978335857391357, + 2.388171911239624, + 2.311910629272461, + 2.323887825012207, + 2.357830286026001 + ], + "71": [ + 2.148318290710449, + 2.0978829860687256, + 2.1367037296295166, + 2.1240034103393555, + 2.096367359161377 + ], + "72": [ + 55.71474242210388, + 55.65497851371765, + 55.09920024871826, + 54.11650276184082, + 56.20997095108032 + ], + "73": [ + 0.981971025466919, + 1.0062155723571777, + 0.9884769916534424, + 1.0174438953399658, + 0.9753994941711426 + ], + "74": [ + 6.0974955558776855, + 6.090858697891235, + 6.104249477386475, + 6.180070161819458, + 6.250415325164795 + ], + "75": [ + 7.970996618270874, + 7.890105485916138, + 7.769358396530151, + 7.92317795753479, + 7.910406589508057 + ], + "76": [ + 1.833014726638794, + 1.8315975666046143, + 1.8497719764709473, + 1.8833909034729004, + 1.8657946586608887 + ], + "77": [ + 2.430835008621216, + 2.378892660140991, + 2.253649950027466, + 2.3566322326660156, + 2.381143093109131 + ], + "78": [ + 13.936902523040771, + 14.407816886901855, + 14.292723894119263, + 14.425165891647339, + 14.25799822807312 + ], + "79": [ + 1.7828254699707031, + 1.8427963256835938, + 1.8661816120147705, + 1.9232194423675537, + 1.905480146408081 + ], + "80": [ + 10.53323483467102, + 10.418278694152832, + 10.549378871917725, + 10.663471698760986, + 10.687374830245972 + ], + "81": [ + 1.3656373023986816, + 1.3399004936218262, + 1.3288192749023438, + 1.4544517993927002, + 1.3790254592895508 + ], + "82": [ + 3.3641715049743652, + 3.279186964035034, + 3.213341236114502, + 3.3441648483276367, + 3.389477014541626 + ], + "83": [ + 0.7808544635772705, + 0.7731945514678955, + 0.8409247398376465, + 0.9210186004638672, + 0.8299705982208252 + ], + "84": [ + 0.7040410041809082, + 0.7207241058349609, + 0.7018799781799316, + 0.8818099498748779, + 0.6937227249145508 + ], + "85": [ + 1.421285629272461, + 1.4219837188720703, + 1.5009398460388184, + 1.5087964534759521, + 1.4539406299591064 + ], + "86": [ + 0.7153642177581787, + 0.653031587600708, + 0.6546626091003418, + 0.7315728664398193, + 0.6839661598205566 + ], + "87": [ + 2.6152150630950928, + 2.4368674755096436, + 2.447220802307129, + 2.4948906898498535, + 2.4271810054779053 + ], + "88": [ + 3.7563509941101074, + 3.7107393741607666, + 3.740159511566162, + 3.9487733840942383, + 3.7908895015716553 + ], + "89": [ + 1.3733341693878174, + 1.3950858116149902, + 1.3895792961120605, + 1.434366226196289, + 1.4087369441986084 + ], + "90": [ + 0.32382941246032715, + 0.3856828212738037, + 0.31131482124328613, + 0.3739144802093506, + 0.3414499759674072 + ], + "91": [ + 0.4922313690185547, + 0.4702589511871338, + 0.4913055896759033, + 0.547508955001831, + 0.47322750091552734 + ], + "92": [ + 0.5397188663482666, + 0.5313537120819092, + 0.5446431636810303, + 0.5584907531738281, + 0.5503730773925781 + ], + "93": [ + 7.6846864223480225, + 7.392237186431885, + 7.6069016456604, + 7.612182378768921, + 7.472257614135742 + ], + "94": [ + 4.253883123397827, + 4.180011034011841, + 4.123626470565796, + 4.342567205429077, + 4.465695381164551 + ], + "95": [ + 14.060906887054443, + 14.277164697647095, + 14.19387698173523, + 14.002771854400635, + 15.193023920059204 + ], + "96": [ + 0.526421070098877, + 0.5006999969482422, + 0.5214729309082031, + 0.5473310947418213, + 0.517216682434082 + ], + "97": [ + 3.6567018032073975, + 3.5691311359405518, + 3.5199546813964844, + 3.6811041831970215, + 3.667187213897705 + ], + "98": [ + 3.188143253326416, + 3.1263539791107178, + 3.1795992851257324, + 3.23490834236145, + 3.170579671859741 + ], + "99": [ + 1.0296411514282227, + 1.0101523399353027, + 1.0162627696990967, + 1.0697321891784668, + 1.0347280502319336 + ] +} \ No newline at end of file diff --git a/docs/source/contributor-guide/benchmark-results/0.4.0/comet-tpch.json b/docs/source/contributor-guide/benchmark-results/0.4.0/comet-tpch.json new file mode 100644 index 000000000..25404f872 --- /dev/null +++ b/docs/source/contributor-guide/benchmark-results/0.4.0/comet-tpch.json @@ -0,0 +1,219 @@ +{ + "engine": "datafusion-comet", + "benchmark": "tpch", + "data_path": "/mnt/bigdata/tpch/sf100/", + "query_path": "/tpch", + "spark_conf": { + "spark.comet.cast.allowIncompatible": "true", + "spark.kubernetes.memoryOverheadFactor": "0.4", + "spark.kubernetes.driver.volumes.hostPath.data.mount.path": "/mnt/bigdata", + "spark.driver.host": "tpcbench-py-a08b54934067a8b3-driver-svc.default.svc", + "spark.memory.offHeap.size": "32g", + "spark.master": "k8s://https://kube1:6443", + "spark.kubernetes.driver.volumes.hostPath.data.options.path": "/mnt/bigdata", + "spark.comet.exec.all.enabled": "true", + "spark.driver.bindAddress": "10.42.0.10", + "spark.eventLog.enabled": "false", + "spark.kubernetes.container.image.pullPolicy": "Always", + "spark.kubernetes.submitInDriver": "true", + "spark.app.submitTime": "1731952357631", + "spark.sql.warehouse.dir": "file:/opt/spark/work-dir/spark-warehouse", + "spark.driver.extraJavaOptions": "-Djava.net.preferIPv6Addresses=false -XX:+IgnoreUnrecognizedVMOptions --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/jdk.internal.ref=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/sun.nio.cs=ALL-UNNAMED --add-opens=java.base/sun.security.action=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED --add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED -Djdk.reflect.useDirectMethodHandle=false", + "spark.jars": "local:/opt/spark/jars/comet-spark-spark3.4_2.12-0.4.0-SNAPSHOT.jar", + "spark.shuffle.manager": "org.apache.spark.sql.comet.execution.shuffle.CometShuffleManager", + "spark.comet.exec.enabled": "true", + "spark.executor.id": "driver", + "spark.kubernetes.driver.volumes.persistentVolumeClaim.benchmark-results-pv.mount.readOnly": "false", + "spark.comet.exec.shuffle.mode": "auto", + "spark.driver.memory": "8G", + "spark.driver.port": "7078", + "spark.sql.extensions": "org.apache.comet.CometSparkSessionExtensions", + "spark.kubernetes.driver.volumes.hostPath.data.options.readOnly": "false", + "spark.kubernetes.executor.podNamePrefix": "comet-benchmark-derived-from-tpch-42d900934067b351", + "spark.kubernetes.executor.volumes.hostPath.data.mount.path": "/mnt/bigdata", + "spark.kubernetes.driver.container.image": "woody:5000/spark-tpcbench:comet", + "spark.executor.instances": "1", + "spark.kubernetes.driver.pod.name": "tpcbench-py-a08b54934067a8b3-driver", + "spark.executor.extraClassPath": "local:///opt/spark/jars/comet-spark-spark3.4_2.12-0.4.0-SNAPSHOT.jar", + "spark.comet.explain.native.enabled": "false", + "spark.executor.memoryOverhead": "4914M", + "spark.app.initial.jar.urls": "file:/opt/spark/jars/comet-spark-spark3.4_2.12-0.4.0-SNAPSHOT.jar", + "spark.kubernetes.authenticate.driver.serviceAccountName": "spark", + "spark.kubernetes.executor.container.image": "woody:5000/spark-tpcbench:comet", + "spark.kubernetes.driver.volumes.persistentVolumeClaim.benchmark-results-pv.options.claimName": "benchmark-results-pvc", + "spark.comet.exec.replaceSortMergeJoin": "true", + "spark.comet.exec.shuffle.enabled": "true", + "spark.memory.offHeap.enabled": "true", + "spark.app.name": "comet benchmark derived from tpch", + "spark.executor.memory": "16G", + "spark.serializer.objectStreamReset": "100", + "spark.submit.deployMode": "client", + "spark.app.id": "spark-71d7e005c63b4f7a9a54d11eaa5d99d4", + "spark.executor.cores": "8", + "spark.driver.blockManager.port": "7079", + "spark.repl.local.jars": "local:///opt/spark/jars/comet-spark-spark3.4_2.12-0.4.0-SNAPSHOT.jar", + "spark.driver.extraClassPath": "local:///opt/spark/jars/comet-spark-spark3.4_2.12-0.4.0-SNAPSHOT.jar", + "spark.plugins": "org.apache.spark.CometPlugin", + "spark.app.startTime": "1731952357848", + "spark.kubernetes.resource.type": "python", + "spark.kubernetes.driver.volumes.persistentVolumeClaim.benchmark-results-pv.mount.path": "/mnt/benchmark-results", + "spark.rdd.compress": "True", + "spark.kubernetes.executor.volumes.hostPath.data.options.path": "/mnt/bigdata", + "spark.executor.extraJavaOptions": "-Djava.net.preferIPv6Addresses=false -XX:+IgnoreUnrecognizedVMOptions --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/jdk.internal.ref=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/sun.nio.cs=ALL-UNNAMED --add-opens=java.base/sun.security.action=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED --add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED -Djdk.reflect.useDirectMethodHandle=false", + "spark.submit.pyFiles": "" + }, + "1": [ + 12.675217866897583, + 10.69823956489563, + 10.959712743759155, + 11.049235582351685, + 11.25637674331665 + ], + "2": [ + 7.2883970737457275, + 6.955080509185791, + 6.996195316314697, + 7.001482725143433, + 6.981860399246216 + ], + "3": [ + 17.389552116394043, + 17.815346479415894, + 18.098077297210693, + 18.250796794891357, + 18.289159297943115 + ], + "4": [ + 9.9054114818573, + 9.76110053062439, + 9.778793573379517, + 9.659870386123657, + 9.890227794647217 + ], + "5": [ + 29.422667026519775, + 29.41081738471985, + 29.542785167694092, + 29.379701375961304, + 30.072590589523315 + ], + "6": [ + 2.591843843460083, + 2.5433740615844727, + 2.486654758453369, + 2.5132291316986084, + 2.507908821105957 + ], + "7": [ + 17.24040937423706, + 17.355087280273438, + 17.514805555343628, + 17.43350887298584, + 17.35370373725891 + ], + "8": [ + 29.68608021736145, + 29.521278858184814, + 29.879571437835693, + 29.99302840232849, + 30.18179965019226 + ], + "9": [ + 44.744760274887085, + 45.07009744644165, + 45.67892384529114, + 45.49783205986023, + 46.2200129032135 + ], + "10": [ + 16.815892696380615, + 16.816420078277588, + 16.754045486450195, + 16.916579008102417, + 16.823299169540405 + ], + "11": [ + 5.107349395751953, + 4.9230499267578125, + 4.9613683223724365, + 4.954375743865967, + 4.949444770812988 + ], + "12": [ + 5.476846694946289, + 5.373950719833374, + 5.399810791015625, + 5.373565196990967, + 5.389242172241211 + ], + "13": [ + 11.168701410293579, + 11.108731031417847, + 11.159045219421387, + 10.97795581817627, + 11.064870119094849 + ], + "14": [ + 5.262895584106445, + 5.161571502685547, + 5.15362286567688, + 5.113251209259033, + 5.200662136077881 + ], + "15": [ + 9.296111345291138, + 9.049000263214111, + 8.952059745788574, + 9.111369371414185, + 9.09269094467163 + ], + "16": [ + 6.102790832519531, + 5.706904411315918, + 5.573681831359863, + 5.436795473098755, + 5.416778802871704 + ], + "17": [ + 34.57182478904724, + 34.73775792121887, + 34.8440580368042, + 35.2716920375824, + 35.55662488937378 + ], + "18": [ + 32.07862377166748, + 31.731548070907593, + 31.748567819595337, + 31.76587414741516, + 31.907649993896484 + ], + "19": [ + 6.052667140960693, + 5.940260887145996, + 5.960237264633179, + 6.020690441131592, + 6.060962677001953 + ], + "20": [ + 10.794468641281128, + 10.485475778579712, + 10.518470525741577, + 10.661662101745605, + 10.678892850875854 + ], + "21": [ + 47.43690896034241, + 46.92784881591797, + 46.689401626586914, + 52.07501554489136, + 53.362786054611206 + ], + "22": [ + 4.79883337020874, + 4.179429054260254, + 4.191235303878784, + 4.875058889389038, + 5.055111885070801 + ] +} \ No newline at end of file diff --git a/docs/source/contributor-guide/benchmark-results/0.4.0/spark-tpcds.json b/docs/source/contributor-guide/benchmark-results/0.4.0/spark-tpcds.json new file mode 100644 index 000000000..69da37627 --- /dev/null +++ b/docs/source/contributor-guide/benchmark-results/0.4.0/spark-tpcds.json @@ -0,0 +1,742 @@ +{ + "engine": "datafusion-comet", + "benchmark": "tpcds", + "data_path": "/mnt/bigdata/tpcds/sf100/", + "query_path": "/tpcds", + "spark_conf": { + "spark.executor.instances": "4", + "spark.kubernetes.memoryOverheadFactor": "0.4", + "spark.kubernetes.driver.pod.name": "tpcbench-py-630faa934132c6a0-driver", + "spark.kubernetes.authenticate.driver.serviceAccountName": "spark", + "spark.kubernetes.driver.volumes.hostPath.data.mount.path": "/mnt/bigdata", + "spark.kubernetes.driver.volumes.persistentVolumeClaim.benchmark-results-pv.options.claimName": "benchmark-results-pvc", + "spark.kubernetes.executor.podNamePrefix": "spark-benchmark-derived-from-tpcds-e2f7c6934132d1e7", + "spark.memory.offHeap.enabled": "true", + "spark.memory.offHeap.size": "32g", + "spark.master": "k8s://https://kube1:6443", + "spark.driver.bindAddress": "10.42.1.12", + "spark.app.id": "spark-70c8317ee1414dd18a7f648dd9213dc3", + "spark.kubernetes.executor.container.image": "apache/spark:3.4.2", + "spark.kubernetes.driver.container.image": "woody:5000/spark-tpcbench:spark", + "spark.app.startTime": "1731965669512", + "spark.serializer.objectStreamReset": "100", + "spark.executor.memory": "8g", + "spark.submit.deployMode": "client", + "spark.kubernetes.driver.volumes.hostPath.data.options.path": "/mnt/bigdata", + "spark.eventLog.enabled": "false", + "spark.kubernetes.container.image.pullPolicy": "Always", + "spark.kubernetes.submitInDriver": "true", + "spark.sql.warehouse.dir": "file:/opt/spark/work-dir/spark-warehouse", + "spark.driver.extraJavaOptions": "-Djava.net.preferIPv6Addresses=false -XX:+IgnoreUnrecognizedVMOptions --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/jdk.internal.ref=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/sun.nio.cs=ALL-UNNAMED --add-opens=java.base/sun.security.action=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED --add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED -Djdk.reflect.useDirectMethodHandle=false", + "spark.app.submitTime": "1731965669258", + "spark.driver.blockManager.port": "7079", + "spark.driver.host": "tpcbench-py-630faa934132c6a0-driver-svc.default.svc", + "spark.executor.id": "driver", + "spark.kubernetes.driver.volumes.persistentVolumeClaim.benchmark-results-pv.mount.readOnly": "false", + "spark.driver.memory": "8G", + "spark.driver.port": "7078", + "spark.kubernetes.driver.volumes.hostPath.data.options.readOnly": "false", + "spark.kubernetes.resource.type": "python", + "spark.kubernetes.executor.volumes.hostPath.data.mount.path": "/mnt/bigdata", + "spark.executor.cores": "6", + "spark.kubernetes.driver.volumes.persistentVolumeClaim.benchmark-results-pv.mount.path": "/mnt/benchmark-results", + "spark.rdd.compress": "True", + "spark.kubernetes.executor.volumes.hostPath.data.options.path": "/mnt/bigdata", + "spark.executor.extraJavaOptions": "-Djava.net.preferIPv6Addresses=false -XX:+IgnoreUnrecognizedVMOptions --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/jdk.internal.ref=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/sun.nio.cs=ALL-UNNAMED --add-opens=java.base/sun.security.action=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED --add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED -Djdk.reflect.useDirectMethodHandle=false", + "spark.submit.pyFiles": "", + "spark.app.name": "spark benchmark derived from tpcds" + }, + "1": [ + 4.101798057556152, + 1.6628072261810303, + 1.6944208145141602, + 1.5850894451141357, + 1.6819756031036377 + ], + "2": [ + 2.505007743835449, + 1.4451699256896973, + 1.4508037567138672, + 1.4211256504058838, + 1.4528944492340088 + ], + "3": [ + 1.0310730934143066, + 0.78733229637146, + 0.8511149883270264, + 0.7833230495452881, + 0.8547565937042236 + ], + "4": [ + 30.011910915374756, + 29.12224292755127, + 28.913774251937866, + 28.686842441558838, + 29.61912488937378 + ], + "5": [ + 6.010044097900391, + 5.845148086547852, + 6.015597820281982, + 5.935771703720093, + 5.921597957611084 + ], + "6": [ + 1.7483971118927002, + 1.4204390048980713, + 1.3826384544372559, + 1.4277729988098145, + 1.426151990890503 + ], + "7": [ + 2.1159181594848633, + 1.8394184112548828, + 1.7851722240447998, + 1.9111988544464111, + 1.8159196376800537 + ], + "8": [ + 1.8837699890136719, + 1.8838860988616943, + 1.7019884586334229, + 1.7169978618621826, + 1.7927045822143555 + ], + "9": [ + 3.0422322750091553, + 2.8414883613586426, + 2.9845988750457764, + 2.8628768920898438, + 2.875807523727417 + ], + "10": [ + 1.9554328918457031, + 1.746701955795288, + 1.7458853721618652, + 1.6303400993347168, + 1.6505646705627441 + ], + "11": [ + 10.3078453540802, + 9.928950548171997, + 10.273672103881836, + 9.962933778762817, + 9.891152143478394 + ], + "12": [ + 1.1306350231170654, + 0.966578483581543, + 1.0629677772521973, + 0.9184162616729736, + 0.8431236743927002 + ], + "13": [ + 2.5771689414978027, + 2.2377328872680664, + 2.2578840255737305, + 2.2780606746673584, + 2.208707332611084 + ], + "14": [ + 31.266183137893677, + 29.093640327453613, + 29.287079572677612, + 29.792733430862427, + 29.16390872001648 + ], + "15": [ + 2.7301526069641113, + 2.42869234085083, + 2.4819107055664062, + 2.494722604751587, + 2.5909152030944824 + ], + "16": [ + 8.37593412399292, + 8.275684833526611, + 8.2781822681427, + 8.58998966217041, + 8.340266942977905 + ], + "17": [ + 3.3585970401763916, + 3.002685546875, + 2.973276138305664, + 2.8865857124328613, + 2.9933559894561768 + ], + "18": [ + 2.930973529815674, + 2.7753474712371826, + 2.721234083175659, + 2.608856678009033, + 2.630030870437622 + ], + "19": [ + 2.173407793045044, + 1.8570218086242676, + 1.9925012588500977, + 1.915762186050415, + 1.8977746963500977 + ], + "20": [ + 1.1954548358917236, + 0.9028189182281494, + 0.9437844753265381, + 0.8968183994293213, + 0.8379025459289551 + ], + "21": [ + 1.4207208156585693, + 1.4522266387939453, + 1.318542718887329, + 1.3398542404174805, + 1.2218236923217773 + ], + "22": [ + 14.03326940536499, + 14.454235315322876, + 13.709498643875122, + 14.177965641021729, + 13.597661256790161 + ], + "23": [ + 57.87645149230957, + 56.65002155303955, + 57.25854849815369, + 56.565542221069336, + 56.94704866409302 + ], + "24": [ + 12.221173524856567, + 10.913657665252686, + 10.763681888580322, + 12.460498809814453, + 10.905694246292114 + ], + "25": [ + 3.1492040157318115, + 2.946575880050659, + 2.888327121734619, + 3.002459764480591, + 3.161397933959961 + ], + "26": [ + 1.3824872970581055, + 1.3174099922180176, + 1.4262938499450684, + 1.411545991897583, + 1.3012707233428955 + ], + "27": [ + 1.6621944904327393, + 1.7461235523223877, + 1.6490883827209473, + 1.6821620464324951, + 1.668259859085083 + ], + "28": [ + 4.79725980758667, + 4.714123010635376, + 4.665875196456909, + 5.1792051792144775, + 4.8896565437316895 + ], + "29": [ + 4.536823749542236, + 4.077563047409058, + 4.396845817565918, + 4.073688268661499, + 4.367259502410889 + ], + "30": [ + 1.7702891826629639, + 1.8158881664276123, + 1.6796913146972656, + 1.9046649932861328, + 1.8696742057800293 + ], + "31": [ + 4.611050367355347, + 4.022041320800781, + 4.182346343994141, + 4.287677764892578, + 4.402425050735474 + ], + "32": [ + 1.1875083446502686, + 1.101001501083374, + 1.261136531829834, + 1.2711787223815918, + 1.1264948844909668 + ], + "33": [ + 1.9605779647827148, + 2.101670980453491, + 1.995006799697876, + 2.0540874004364014, + 1.9772546291351318 + ], + "34": [ + 1.1797206401824951, + 1.037219762802124, + 1.116685152053833, + 1.3116002082824707, + 1.1500279903411865 + ], + "35": [ + 2.6695785522460938, + 2.653355121612549, + 2.738192081451416, + 2.6304309368133545, + 2.7922165393829346 + ], + "36": [ + 1.4320690631866455, + 1.3371284008026123, + 1.399195909500122, + 1.3704102039337158, + 1.3641293048858643 + ], + "37": [ + 2.7905285358428955, + 2.6404833793640137, + 2.481349229812622, + 2.54872989654541, + 2.605477809906006 + ], + "38": [ + 3.9898948669433594, + 4.339789867401123, + 4.0293896198272705, + 3.894653081893921, + 4.017303943634033 + ], + "39": [ + 6.200651168823242, + 5.982529163360596, + 6.708714723587036, + 6.462383508682251, + 6.6200456619262695 + ], + "40": [ + 5.8705267906188965, + 6.351257085800171, + 6.25710129737854, + 6.0561816692352295, + 6.249178171157837 + ], + "41": [ + 0.24708271026611328, + 0.2163989543914795, + 0.21043944358825684, + 0.19862890243530273, + 0.20019888877868652 + ], + "42": [ + 0.878232479095459, + 0.8881511688232422, + 0.9662492275238037, + 0.925433874130249, + 0.9298341274261475 + ], + "43": [ + 0.9265544414520264, + 0.8833436965942383, + 0.9058196544647217, + 0.9031116962432861, + 0.8841662406921387 + ], + "44": [ + 0.5191357135772705, + 0.48758602142333984, + 0.5332913398742676, + 0.5114614963531494, + 0.4971604347229004 + ], + "45": [ + 1.7107188701629639, + 1.6529803276062012, + 1.6080644130706787, + 1.671886920928955, + 1.6790966987609863 + ], + "46": [ + 2.0748560428619385, + 1.9469430446624756, + 2.0227723121643066, + 2.011340379714966, + 1.9434280395507812 + ], + "47": [ + 3.5550601482391357, + 3.700406312942505, + 3.5939836502075195, + 3.6490423679351807, + 3.4499003887176514 + ], + "48": [ + 3.7200522422790527, + 3.7572500705718994, + 3.7702255249023438, + 3.7124366760253906, + 3.730222463607788 + ], + "49": [ + 5.228905200958252, + 4.625717878341675, + 4.951889276504517, + 4.957994222640991, + 5.071847438812256 + ], + "50": [ + 9.543980360031128, + 9.599350452423096, + 9.469555377960205, + 9.601779699325562, + 9.497092962265015 + ], + "51": [ + 11.083372354507446, + 9.904197931289673, + 10.511804342269897, + 10.427511930465698, + 11.04982876777649 + ], + "52": [ + 1.1101248264312744, + 1.0503735542297363, + 1.034118413925171, + 0.858811616897583, + 1.0684659481048584 + ], + "53": [ + 1.2383568286895752, + 1.2415111064910889, + 1.2688398361206055, + 1.2551381587982178, + 1.2679004669189453 + ], + "54": [ + 2.482556104660034, + 2.4029476642608643, + 2.4188714027404785, + 2.504854440689087, + 2.386593818664551 + ], + "55": [ + 1.0882360935211182, + 1.1614463329315186, + 1.0238258838653564, + 1.2537846565246582, + 1.060547113418579 + ], + "56": [ + 1.7780375480651855, + 1.8225603103637695, + 1.851440668106079, + 1.7312126159667969, + 1.8368158340454102 + ], + "57": [ + 2.49904203414917, + 2.4126837253570557, + 2.4750289916992188, + 2.433041572570801, + 2.3518331050872803 + ], + "58": [ + 2.17509388923645, + 2.3151907920837402, + 2.259735345840454, + 2.428464651107788, + 2.1495883464813232 + ], + "59": [ + 2.7380449771881104, + 2.754039764404297, + 2.6889383792877197, + 2.604966878890991, + 2.636704921722412 + ], + "60": [ + 1.7363862991333008, + 1.6587703227996826, + 1.5419552326202393, + 1.4795036315917969, + 1.6812565326690674 + ], + "61": [ + 2.4846465587615967, + 2.387451410293579, + 2.4108707904815674, + 2.388557195663452, + 2.3161416053771973 + ], + "62": [ + 0.8136637210845947, + 0.7371957302093506, + 0.7617106437683105, + 0.7683372497558594, + 0.7747564315795898 + ], + "63": [ + 1.1109309196472168, + 1.1343533992767334, + 1.2317695617675781, + 1.133389949798584, + 1.1092209815979004 + ], + "64": [ + 14.743201732635498, + 15.078812599182129, + 14.671916007995605, + 15.006304025650024, + 15.00887680053711 + ], + "65": [ + 7.251803636550903, + 7.2695631980896, + 7.238022804260254, + 7.301697254180908, + 7.161722421646118 + ], + "66": [ + 1.9731743335723877, + 1.9496684074401855, + 1.9994518756866455, + 1.8531701564788818, + 1.930753231048584 + ], + "67": [ + 49.6675705909729, + 48.19621968269348, + 50.70038366317749, + 47.88284492492676, + 48.761271715164185 + ], + "68": [ + 2.0306437015533447, + 1.9414896965026855, + 1.9469645023345947, + 1.9012255668640137, + 1.9914145469665527 + ], + "69": [ + 1.7471072673797607, + 1.536611795425415, + 1.6588964462280273, + 1.6081433296203613, + 1.6223390102386475 + ], + "70": [ + 1.945021629333496, + 1.8145639896392822, + 1.812164545059204, + 1.849292278289795, + 1.8018312454223633 + ], + "71": [ + 1.9524719715118408, + 1.9845960140228271, + 1.9457154273986816, + 1.923093557357788, + 1.951244592666626 + ], + "72": [ + 12.546458959579468, + 11.85893964767456, + 12.32059645652771, + 11.475525379180908, + 11.872873306274414 + ], + "73": [ + 1.0386018753051758, + 1.0372083187103271, + 1.0216479301452637, + 0.9761593341827393, + 0.933098316192627 + ], + "74": [ + 9.800452470779419, + 10.76702070236206, + 11.209776163101196, + 9.91211724281311, + 10.263824701309204 + ], + "75": [ + 8.530277013778687, + 8.607342958450317, + 8.445864200592041, + 8.522737741470337, + 8.499200582504272 + ], + "76": [ + 1.8576176166534424, + 2.0158095359802246, + 1.891855239868164, + 1.8044593334197998, + 1.8446557521820068 + ], + "77": [ + 2.266920566558838, + 2.314894676208496, + 2.4184823036193848, + 2.4789552688598633, + 2.355562925338745 + ], + "78": [ + 22.44752526283264, + 23.02877902984619, + 22.419431447982788, + 22.97319006919861, + 22.363235473632812 + ], + "79": [ + 1.6027934551239014, + 1.4661269187927246, + 1.4280049800872803, + 1.4568893909454346, + 1.4736254215240479 + ], + "80": [ + 16.729133129119873, + 16.709152698516846, + 16.817840099334717, + 17.630494117736816, + 17.207946300506592 + ], + "81": [ + 2.1778812408447266, + 2.3530967235565186, + 2.1917331218719482, + 2.0935323238372803, + 2.1222338676452637 + ], + "82": [ + 6.663294792175293, + 7.8879075050354, + 7.217211961746216, + 6.868515968322754, + 6.5749123096466064 + ], + "83": [ + 1.5960721969604492, + 1.5132818222045898, + 1.4365019798278809, + 1.44840407371521, + 1.477241039276123 + ], + "84": [ + 1.163783073425293, + 1.1479411125183105, + 1.1228821277618408, + 1.2401597499847412, + 1.1172442436218262 + ], + "85": [ + 3.2570650577545166, + 2.7596423625946045, + 3.081651449203491, + 3.0925028324127197, + 3.0603017807006836 + ], + "86": [ + 0.7725980281829834, + 0.7427737712860107, + 0.7912232875823975, + 0.7065935134887695, + 0.7383038997650146 + ], + "87": [ + 4.294668912887573, + 4.660226345062256, + 4.278197765350342, + 4.472849130630493, + 3.904066562652588 + ], + "88": [ + 3.554309606552124, + 3.6045660972595215, + 3.5492982864379883, + 3.3328254222869873, + 3.5090348720550537 + ], + "89": [ + 1.3484902381896973, + 1.276850700378418, + 1.3466012477874756, + 1.2572429180145264, + 1.4886093139648438 + ], + "90": [ + 0.46999287605285645, + 0.529099702835083, + 0.578873872756958, + 0.47667670249938965, + 0.48769092559814453 + ], + "91": [ + 0.7944860458374023, + 0.8916025161743164, + 0.832402229309082, + 0.7235825061798096, + 0.65761399269104 + ], + "92": [ + 0.9741818904876709, + 0.9964475631713867, + 0.992856502532959, + 0.9798798561096191, + 0.9271073341369629 + ], + "93": [ + 14.810303688049316, + 14.715499639511108, + 14.565584897994995, + 14.738952398300171, + 14.814255237579346 + ], + "94": [ + 5.665013790130615, + 5.276642084121704, + 5.49097204208374, + 5.194403886795044, + 5.2361180782318115 + ], + "95": [ + 13.44327449798584, + 13.04519772529602, + 13.047563791275024, + 13.274654865264893, + 13.301786184310913 + ], + "96": [ + 0.5319077968597412, + 0.5078849792480469, + 0.5532786846160889, + 0.49875950813293457, + 0.529167890548706 + ], + "97": [ + 7.3789963722229, + 7.497219800949097, + 7.451964855194092, + 7.59662938117981, + 7.404102802276611 + ], + "98": [ + 1.5613372325897217, + 1.698850154876709, + 1.6474971771240234, + 1.6323800086975098, + 1.5777685642242432 + ], + "99": [ + 1.1006407737731934, + 1.109886884689331, + 1.0147747993469238, + 2.1191627979278564, + 1.0859904289245605 + ] +} \ No newline at end of file diff --git a/docs/source/contributor-guide/benchmark-results/0.4.0/spark-tpch.json b/docs/source/contributor-guide/benchmark-results/0.4.0/spark-tpch.json new file mode 100644 index 000000000..f0a080aa9 --- /dev/null +++ b/docs/source/contributor-guide/benchmark-results/0.4.0/spark-tpch.json @@ -0,0 +1,203 @@ +{ + "engine": "datafusion-comet", + "benchmark": "tpch", + "data_path": "/mnt/bigdata/tpch/sf100/", + "query_path": "/tpch", + "spark_conf": { + "spark.kubernetes.executor.podNamePrefix": "spark-benchmark-derived-from-tpch-91eee2934092023f", + "spark.kubernetes.memoryOverheadFactor": "0.4", + "spark.kubernetes.authenticate.driver.serviceAccountName": "spark", + "spark.kubernetes.driver.volumes.hostPath.data.mount.path": "/mnt/bigdata", + "spark.kubernetes.driver.volumes.persistentVolumeClaim.benchmark-results-pv.options.claimName": "benchmark-results-pvc", + "spark.memory.offHeap.enabled": "true", + "spark.app.startTime": "1731955130576", + "spark.app.id": "spark-35db63a6dc9b42c79428c048244d508f", + "spark.master": "k8s://https://kube1:6443", + "spark.memory.offHeap.size": "48g", + "spark.kubernetes.driver.pod.name": "tpcbench-py-bca54a934091f6cd-driver", + "spark.kubernetes.executor.container.image": "apache/spark:3.4.2", + "spark.kubernetes.driver.container.image": "woody:5000/spark-tpcbench:spark", + "spark.executor.memory": "16G", + "spark.serializer.objectStreamReset": "100", + "spark.submit.deployMode": "client", + "spark.driver.host": "tpcbench-py-bca54a934091f6cd-driver-svc.default.svc", + "spark.kubernetes.driver.volumes.hostPath.data.options.path": "/mnt/bigdata", + "spark.eventLog.enabled": "false", + "spark.kubernetes.container.image.pullPolicy": "Always", + "spark.executor.cores": "8", + "spark.kubernetes.submitInDriver": "true", + "spark.sql.warehouse.dir": "file:/opt/spark/work-dir/spark-warehouse", + "spark.driver.extraJavaOptions": "-Djava.net.preferIPv6Addresses=false -XX:+IgnoreUnrecognizedVMOptions --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/jdk.internal.ref=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/sun.nio.cs=ALL-UNNAMED --add-opens=java.base/sun.security.action=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED --add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED -Djdk.reflect.useDirectMethodHandle=false", + "spark.driver.blockManager.port": "7079", + "spark.driver.bindAddress": "10.42.0.12", + "spark.executor.id": "driver", + "spark.kubernetes.driver.volumes.persistentVolumeClaim.benchmark-results-pv.mount.readOnly": "false", + "spark.driver.memory": "8G", + "spark.driver.port": "7078", + "spark.kubernetes.driver.volumes.hostPath.data.options.readOnly": "false", + "spark.kubernetes.resource.type": "python", + "spark.kubernetes.executor.volumes.hostPath.data.mount.path": "/mnt/bigdata", + "spark.kubernetes.driver.volumes.persistentVolumeClaim.benchmark-results-pv.mount.path": "/mnt/benchmark-results", + "spark.rdd.compress": "True", + "spark.app.name": "spark benchmark derived from tpch", + "spark.kubernetes.executor.volumes.hostPath.data.options.path": "/mnt/bigdata", + "spark.executor.extraJavaOptions": "-Djava.net.preferIPv6Addresses=false -XX:+IgnoreUnrecognizedVMOptions --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/jdk.internal.ref=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/sun.nio.cs=ALL-UNNAMED --add-opens=java.base/sun.security.action=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED --add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED -Djdk.reflect.useDirectMethodHandle=false", + "spark.executor.instances": "1", + "spark.app.submitTime": "1731955130325", + "spark.submit.pyFiles": "" + }, + "1": [ + 76.3459792137146, + 77.43206644058228, + 77.43688368797302, + 77.57843589782715, + 77.36109328269958 + ], + "2": [ + 11.60047721862793, + 12.094002485275269, + 11.385731935501099, + 11.742280006408691, + 10.831515073776245 + ], + "3": [ + 23.393443822860718, + 23.679790496826172, + 23.2339928150177, + 23.296000957489014, + 23.57963228225708 + ], + "4": [ + 17.686111450195312, + 17.663344860076904, + 17.97491693496704, + 17.99352526664734, + 17.13844132423401 + ], + "5": [ + 47.576931953430176, + 47.90366792678833, + 47.885528802871704, + 47.82782196998596, + 47.35511922836304 + ], + "6": [ + 3.1415493488311768, + 3.0869905948638916, + 3.0410678386688232, + 3.0086350440979004, + 3.006296157836914 + ], + "7": [ + 20.144665241241455, + 20.645880699157715, + 20.30326247215271, + 20.52312994003296, + 20.44648313522339 + ], + "8": [ + 31.149712800979614, + 31.346466541290283, + 31.87547278404236, + 31.968525409698486, + 31.624362230300903 + ], + "9": [ + 70.20270848274231, + 73.088698387146, + 71.15446996688843, + 70.36094760894775, + 71.0561454296112 + ], + "10": [ + 19.035035133361816, + 19.235825538635254, + 19.032540559768677, + 18.992990732192993, + 18.960989236831665 + ], + "11": [ + 12.353803873062134, + 12.383912324905396, + 12.390283346176147, + 12.384623289108276, + 12.608469009399414 + ], + "12": [ + 12.46756649017334, + 12.692992210388184, + 13.037216424942017, + 14.199844360351562, + 12.41795563697815 + ], + "13": [ + 21.14127492904663, + 21.24750590324402, + 21.330607652664185, + 21.19257688522339, + 21.117241144180298 + ], + "14": [ + 5.365051031112671, + 5.244381904602051, + 5.224266290664673, + 5.279320478439331, + 5.351390600204468 + ], + "15": [ + 14.187044382095337, + 14.210954904556274, + 14.301335096359253, + 14.133733034133911, + 14.062178373336792 + ], + "16": [ + 6.709480047225952, + 6.949545383453369, + 6.819269180297852, + 6.797849178314209, + 7.115732192993164 + ], + "17": [ + 59.576388120651245, + 60.451228857040405, + 60.65900158882141, + 60.63210201263428, + 60.68089413642883 + ], + "18": [ + 69.60278511047363, + 70.1350531578064, + 69.89858436584473, + 70.29715323448181, + 69.83147168159485 + ], + "19": [ + 6.37906551361084, + 6.309690952301025, + 6.3234429359436035, + 6.329152345657349, + 6.348209381103516 + ], + "20": [ + 9.532709121704102, + 9.26326322555542, + 9.232454776763916, + 9.317341089248657, + 9.209791898727417 + ], + "21": [ + 65.31082701683044, + 65.26856255531311, + 64.04693102836609, + 64.84621214866638, + 64.52755498886108 + ], + "22": [ + 8.907754182815552, + 8.766010046005249, + 8.830661535263062, + 8.698703527450562, + 8.652528524398804 + ] +} \ No newline at end of file diff --git a/docs/source/contributor-guide/benchmark-results/0.2.0/datafusion-python-tpch.json b/docs/source/contributor-guide/benchmark-results/datafusion-40.1.0/datafusion-python-tpch.json similarity index 100% rename from docs/source/contributor-guide/benchmark-results/0.2.0/datafusion-python-tpch.json rename to docs/source/contributor-guide/benchmark-results/datafusion-40.1.0/datafusion-python-tpch.json diff --git a/docs/source/contributor-guide/benchmark-results/tpc-ds.md b/docs/source/contributor-guide/benchmark-results/tpc-ds.md index 5575fef02..3fa70eb86 100644 --- a/docs/source/contributor-guide/benchmark-results/tpc-ds.md +++ b/docs/source/contributor-guide/benchmark-results/tpc-ds.md @@ -19,27 +19,27 @@ under the License. # Apache DataFusion Comet: Benchmarks Derived From TPC-DS -The following benchmarks were performed on a Linux workstation with PCIe 5, AMD 7950X CPU (16 cores), 128 GB RAM, and +The following benchmarks were performed on a two node Kubernetes cluster with data stored locally in Parquet format on NVMe storage. Performance characteristics will vary in different environments and we encourage you to run these benchmarks in your own environments. The tracking issue for improving TPC-DS performance is [#858](https://github.com/apache/datafusion-comet/issues/858). -![](../../_static/images/benchmark-results/0.3.0/tpcds_allqueries.png) +![](../../_static/images/benchmark-results/0.4.0/tpcds_allqueries.png) Here is a breakdown showing relative performance of Spark and Comet for each query. -![](../../_static/images/benchmark-results/0.3.0/tpcds_queries_compare.png) +![](../../_static/images/benchmark-results/0.4.0/tpcds_queries_compare.png) The following chart shows how much Comet currently accelerates each query from the benchmark in relative terms. -![](../../_static/images/benchmark-results/0.3.0/tpcds_queries_speedup_rel.png) +![](../../_static/images/benchmark-results/0.4.0/tpcds_queries_speedup_rel.png) The following chart shows how much Comet currently accelerates each query from the benchmark in absolute terms. -![](../../_static/images/benchmark-results/0.3.0/tpcds_queries_speedup_abs.png) +![](../../_static/images/benchmark-results/0.4.0/tpcds_queries_speedup_abs.png) The raw results of these benchmarks in JSON format is available here: -- [Spark](0.3.0/spark-tpcds.json) -- [Comet](0.3.0/comet-tpcds.json) +- [Spark](0.4.0/spark-tpcds.json) +- [Comet](0.4.0/comet-tpcds.json) diff --git a/docs/source/contributor-guide/benchmark-results/tpc-h.md b/docs/source/contributor-guide/benchmark-results/tpc-h.md index 22cab0b45..228548935 100644 --- a/docs/source/contributor-guide/benchmark-results/tpc-h.md +++ b/docs/source/contributor-guide/benchmark-results/tpc-h.md @@ -25,22 +25,21 @@ and we encourage you to run these benchmarks in your own environments. The tracking issue for improving TPC-H performance is [#391](https://github.com/apache/datafusion-comet/issues/391). -![](../../_static/images/benchmark-results/0.3.0/tpch_allqueries.png) +![](../../_static/images/benchmark-results/0.4.0/tpch_allqueries.png) Here is a breakdown showing relative performance of Spark, Comet, and DataFusion for each query. -![](../../_static/images/benchmark-results/0.3.0/tpch_queries_compare.png) +![](../../_static/images/benchmark-results/0.4.0/tpch_queries_compare.png) The following chart shows how much Comet currently accelerates each query from the benchmark in relative terms. -![](../../_static/images/benchmark-results/0.3.0/tpch_queries_speedup_rel.png) +![](../../_static/images/benchmark-results/0.4.0/tpch_queries_speedup_rel.png) The following chart shows how much Comet currently accelerates each query from the benchmark in absolute terms. -![](../../_static/images/benchmark-results/0.3.0/tpch_queries_speedup_abs.png) +![](../../_static/images/benchmark-results/0.4.0/tpch_queries_speedup_abs.png) The raw results of these benchmarks in JSON format is available here: -- [Spark](0.3.0/spark-tpch.json) -- [Comet](0.3.0/comet-tpch.json) -- [DataFusion](0.3.0/datafusion-python-tpch.json) \ No newline at end of file +- [Spark](0.4.0/spark-tpch.json) +- [Comet](0.4.0/comet-tpch.json) diff --git a/docs/source/contributor-guide/benchmarking.md b/docs/source/contributor-guide/benchmarking.md index 08aa10abc..bd280f47f 100644 --- a/docs/source/contributor-guide/benchmarking.md +++ b/docs/source/contributor-guide/benchmarking.md @@ -54,11 +54,11 @@ $SPARK_HOME/bin/spark-submit \ --master $SPARK_MASTER \ --conf spark.driver.memory=8G \ --conf spark.executor.instances=1 \ - --conf spark.executor.memory=32G \ + --conf spark.executor.memory=16G \ --conf spark.executor.cores=8 \ --conf spark.cores.max=8 \ --conf spark.memory.offHeap.enabled=true \ - --conf spark.memory.offHeap.size=10g \ + --conf spark.memory.offHeap.size=32g \ --jars $COMET_JAR \ --conf spark.driver.extraClassPath=$COMET_JAR \ --conf spark.executor.extraClassPath=$COMET_JAR \ diff --git a/docs/source/user-guide/installation.md b/docs/source/user-guide/installation.md index e2a946758..22d482e47 100644 --- a/docs/source/user-guide/installation.md +++ b/docs/source/user-guide/installation.md @@ -51,12 +51,12 @@ is currently necessary to build from source. Here are the direct links for downloading the Comet jar file. -- [Comet plugin for Spark 3.3 / Scala 2.12](https://repo1.maven.org/maven2/org/apache/datafusion/comet-spark-spark3.3_2.12/0.3.0/comet-spark-spark3.3_2.12-0.3.0.jar) -- [Comet plugin for Spark 3.3 / Scala 2.13](https://repo1.maven.org/maven2/org/apache/datafusion/comet-spark-spark3.3_2.13/0.3.0/comet-spark-spark3.3_2.13-0.3.0.jar) -- [Comet plugin for Spark 3.4 / Scala 2.12](https://repo1.maven.org/maven2/org/apache/datafusion/comet-spark-spark3.4_2.12/0.3.0/comet-spark-spark3.4_2.12-0.3.0.jar) -- [Comet plugin for Spark 3.4 / Scala 2.13](https://repo1.maven.org/maven2/org/apache/datafusion/comet-spark-spark3.4_2.13/0.3.0/comet-spark-spark3.4_2.13-0.3.0.jar) -- [Comet plugin for Spark 3.5 / Scala 2.12](https://repo1.maven.org/maven2/org/apache/datafusion/comet-spark-spark3.5_2.12/0.3.0/comet-spark-spark3.5_2.12-0.3.0.jar) -- [Comet plugin for Spark 3.5 / Scala 2.13](https://repo1.maven.org/maven2/org/apache/datafusion/comet-spark-spark3.5_2.13/0.3.0/comet-spark-spark3.5_2.13-0.3.0.jar) +- [Comet plugin for Spark 3.3 / Scala 2.12](https://repo1.maven.org/maven2/org/apache/datafusion/comet-spark-spark3.3_2.12/0.4.0/comet-spark-spark3.3_2.12-0.4.0.jar) +- [Comet plugin for Spark 3.3 / Scala 2.13](https://repo1.maven.org/maven2/org/apache/datafusion/comet-spark-spark3.3_2.13/0.4.0/comet-spark-spark3.3_2.13-0.4.0.jar) +- [Comet plugin for Spark 3.4 / Scala 2.12](https://repo1.maven.org/maven2/org/apache/datafusion/comet-spark-spark3.4_2.12/0.4.0/comet-spark-spark3.4_2.12-0.4.0.jar) +- [Comet plugin for Spark 3.4 / Scala 2.13](https://repo1.maven.org/maven2/org/apache/datafusion/comet-spark-spark3.4_2.13/0.4.0/comet-spark-spark3.4_2.13-0.4.0.jar) +- [Comet plugin for Spark 3.5 / Scala 2.12](https://repo1.maven.org/maven2/org/apache/datafusion/comet-spark-spark3.5_2.12/0.4.0/comet-spark-spark3.5_2.12-0.4.0.jar) +- [Comet plugin for Spark 3.5 / Scala 2.13](https://repo1.maven.org/maven2/org/apache/datafusion/comet-spark-spark3.5_2.13/0.4.0/comet-spark-spark3.5_2.13-0.4.0.jar) ## Building from source