From de977b77e3ba689ee934037455d5a20d79f7eb34 Mon Sep 17 00:00:00 2001 From: Simeng Liu Date: Wed, 8 Dec 2021 23:41:40 -0600 Subject: [PATCH] add nightly test to run the pingpong and task-bench benchmarks --- .tmp/README.md | 1 + .tmp/cffi_vs_cython_pingpong.png | Bin 0 -> 54159 bytes .tmp/cffi_vs_cython_task-bench.png | Bin 0 -> 54170 bytes .tmp/compare_pingpong.py | 39 ++ .tmp/compare_task_bench.py | 42 ++ .tmp/udp-cffi-pingpong.log | 235 +++++++++++ .tmp/udp-cffi-task-bench.log | 656 +++++++++++++++++++++++++++++ .tmp/udp-cython-pingpong.log | 235 +++++++++++ .tmp/udp-cython-task-bench.log | 656 +++++++++++++++++++++++++++++ 9 files changed, 1864 insertions(+) create mode 100644 .tmp/README.md create mode 100644 .tmp/cffi_vs_cython_pingpong.png create mode 100644 .tmp/cffi_vs_cython_task-bench.png create mode 100644 .tmp/compare_pingpong.py create mode 100644 .tmp/compare_task_bench.py create mode 100644 .tmp/udp-cffi-pingpong.log create mode 100644 .tmp/udp-cffi-task-bench.log create mode 100644 .tmp/udp-cython-pingpong.log create mode 100644 .tmp/udp-cython-task-bench.log diff --git a/.tmp/README.md b/.tmp/README.md new file mode 100644 index 00000000..db4f22c5 --- /dev/null +++ b/.tmp/README.md @@ -0,0 +1 @@ +This directory is being used for storing nightly test logs. diff --git a/.tmp/cffi_vs_cython_pingpong.png b/.tmp/cffi_vs_cython_pingpong.png new file mode 100644 index 0000000000000000000000000000000000000000..ecc3d390b080e8c854f2579544618eadd84816e6 GIT binary patch literal 54159 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%0DtH5qElk^7$Z7zU# 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Ⓢ%L{Z=qLN{&Yxp;1|?oWC|`oXs++< z6co9uDb;g*v!4mpW|EufFtC~F^9-0E=89o5sOE>T{_AVq*hc2!u z_ues`Kkg7G$Hj&&gZxR&=}xH4K;ij8?$AeL!7R51>Zr9pt&oQ+A_TaMBtd6_%KNEa z(++4B;>#aDoZnBbfgX!G7^+i;W&)79kd?(g2EF$IkRBZ;c3)#Yo9qM}1W@My{k&Vj z5F-Vk>V_LyTnxnq{)Bqtax?bwGnWXIMW8o5NSkm0tive7OK7n{8&kl)`PCS(;PT_v zEO?fNi!En-h(G5OtayK{G%yKtK{r;z=3}8{Fw)x@0rDG?s3mA!{`m2uVG&O##oHfD z7idKiuwYpfpZ~FuS8Fsa&?)4XC=QGV0M&jKM+;?Cfq)8xG5%A7z@B{fK0?=%&^|_M7c;@p({PXG33z*h9 zc1Fo7r z=3l&F=@x`(#z|$od9=50uf>9Cx*l+$IP`r`MnCEV!I5EVeCyUNqz=1a<=n`YP$cU= zcmPUTN0(X4^S3=oiS_sGCVw7OHv;s%)DOWeQY;3bd79hg}9ZVmtC405Vkt7 z2|BWYf`DiQg8VHDSeFvN0uBU>ZbGCMV6|ZbmzGMK68UQvdlD#=zq(hOZ)T_JlBYD;!ne)IrQz^auuh}-h41DiC*5R}~#pKTdHN~flzEJ7R6 zV83&x-9Cgz@xnU@hfq-fq zIv&w)od84!eIMf*k>Z}OJ701_nqtoIUZVjYKNF{hJte?f_fr-#`(t#J5+JNG(3qJ8 zVl(di0rFt?GbJ-~9T>-@$gLUkGRK>t)jXzPcD>mJ!BwU*6Fd~+1wqRu;=!-Z7Em9W z{&HOIF<-fA#H&F2!5ZRoKfx2%<>u!s}45m-eT$H#b(U$GiE=Bya~4 z==>kg(E%HzchGIXO>;B_Bkcxu5?lfHK%Q89J`ZI6r-0k!OG0utEE$MY*h9;sqq7q- z@)BNuXrT%0htvWd^qS+(4v;cQ_FOtemu?s>oKknjGIJ5&02CvHjHDy&9zL*N;=3UH zO@};_#>@r?EsKvKXqEj3t^ehSPtyK>N-q5$rm|M9uAR{fFBv7CA+W$dmB*TjB?>P> F{s(n0*-QWc literal 0 HcmV?d00001 diff --git a/.tmp/cffi_vs_cython_task-bench.png b/.tmp/cffi_vs_cython_task-bench.png new file mode 100644 index 0000000000000000000000000000000000000000..1abd3e20b4f2752bd66d39128072d697152b4bbd GIT binary patch literal 54170 zcmeGEXHb-D6fTH1qM%4{1A-tyMKTfuBnK5ivVi0al98OVq9Bq~a#nIi1SHcSAd&?n zNe0PDa%gB~eV%is=GL95nVPEm@BXkh8@l^T@4MEMR);)Mk|83XCP1N3M6!>iR8gpN z0VovC^hG@Q4S(PGANY@u%OfopHG6XxcVj0rl%lbVgRQ-bt(D0QH!~+^D|SfNk@__9*>pL!&( zO}P7zn_(Nbdb{@5%*h_u%hgI{x^ojSzkM^m_VU7gm8O>jUIa_ppLfd6O};Rhc~Y9X zxSY2XazRC<_gszMUJuVLT_oHC>Z4~*x-~6kM9Seq5isycbRW!M! z&tvOdsbbf224sVYX;*6VU1zHoQ=8|V92XKShTPSO69gtb0#8nSn3PlX3g-Pz_l64% z>Jw$7m}d68Y%11PbjmIN6Z6`gKAejziQBn+Q%e6Gg``TsgHKnce0GQ|Qd}u04Lok< zq_|P9|E@6YjJ;z!)sVufmd)*V;-Mt6&ez}HUp4!dU8~mZxvyre#vQ|kx=_UVn>M1r&VF%U|jvUNRpe>QIa>FOsQWXdgJpl z6!$|?QfIP|v*7Vk#_~k1K!!}@!q+i72GWqvMos4;#P+pN3*AXF8X6Sv7xSS)Z9R{f z*C;*j^@?X^W;~9wQUTWCILRXJobXg`TqD%*vR&v(cxGW?dJPY?I#guZ5zR_?{a#pu zFXpb-uBCZzs(z6TW+@}G>hHJ9RNO`=Tzuj`g=Ian;R2H=Bkal1?#f_62amY_QK#WG zQ4j7Jhxon>nVp?piJewTLs%FwE=BXV-d{YJ^yX>~Cdu(X!|J&Xs;kFh#+`c|x7(Qq zYTfN4#E&gEs^%i(?ikOTdiovBQ^JCHjP^SfT!=UIm6xPowf;wOI}ezl)Uty+K+VUDp$Wb((1OhR{&;t}8GbLgS+}EA@3kl1Tkm)36+}Yc(-K0qg*n9( zu{WZzdtBcmXywzyeFb;Ac#pO_xky$Fq9xkw>-RJ&QY$wbFcF=cwP80O2K_|)`zwj< zJ&onm*O{*_soR#rBfQr5cc!`e42vP#oLD*h6QwM;UOuoikVC?p;zA1VwafDL5vO;b z@)gLC4o`RAoD8Gl4QiwJry1ZQ!`O~}4To)=>a#6t;Is88LIUgIb+FN`ZIPmG7THpQ z#&%Q;8+5_}md7f&Oxq&nXM*XA%ME2^FO`{hoBW+_LMjN{C(Yw=Hu{nyxXI4_vdn#z z_J-dh>3bt3uooLIbJaD*^Oz!MM8>RCxa)PiQc!~2r^7k=v&Wm0^;G=U>b_yug`TU?&!3@y<3{KR@s6egNd)J@ct2}#{8?P&HR~XU3eq$mXBaWO zYBu)uc^!N-MyyQ&yF~)$)l855i=VBOB4=&QwmMv5F_^EO?6s1Y?DpGAbbrLOZf{68 z#E4?HY5eU~cEOofWDbHfT?xFwP&T8Yqsg-slklD_>ulDna@HAeAuE2Y(%xdZKdUQ6 zBu<9T^LA-3tXi!qhnq6AuH=g;?sQ4_o|_zP&ll=eM$C7{nU;-`VkjsnotLxX?!uMB zHMGHjJf>gZ|LE#^_A6J#yMCc55Pt`Y*;LcfdD}L3pS5+^&_BF*)n{)|lg54AQS#)n z%&;pS5%p6up@D40jLgheDI)GnFP~SArIh!QDT}_ywnExPbZqRGXYHhRRWo=7uwmA)6j zt^4Kz6oN+se4JI&=iv2+P?xKZ7Lr)++?iOcYW3V%aO}KO`4d(V@@!GWB5T|?u%>fR zU1wl@XY1FxA@v!q-MQ}(<<_SE+4Z>23yn~1wd*{17L%QceKGr4<>k?5rH6VWUyN+HA3_Eb}>X;;i3Qh08O$%gYP< z@adwbZoL=3T8>hdV$wZ5m%c~k)`M>i{ZC^^Bu?Hzi(%a7B@BdKft;>g-IlaCW{o%1 zYlT(VeWUAWF%3PnI#%b&3oXs)+p9~-j^C;3U;`kfnM3=_ZAbdRrW;7_sjjY8i06K> zzdp9pEim=>=R=bBadB<%WAf7lxbBdtO^cJmEz8939~kB1#eId(j(Yt`H%p1G-*afX zKxtH=LnYxSN-N^_44PM=UiAkmUh~^A?h~%VeR*ok<~_;naJG$|TxbPpX*_@E_fh*8 z*oIowPG++;^!_J~unNCt#Tj%!4ey1sR(5pck&opt?nxGsZDybJT%?6wiLAZl<>f;C z+E|M;-&j~8cm1&^nL8~eJlP5f-#*?CtXj@a+CLUPhV6swaKYuwsH(+OZ`ei{UvVk2 zkFRpGuiMwD&^osKXAPY;hK^TJjWz2RpbB+!^K6|j&t&`O()_X29bH{d?a`-h{rg8d ziv?X>UB0Qqe2T7JJZ-tKahad{uNGB4g?Ai7t&CBXtB38##>-pQal9VdyQl_D?g^}d z2!huS)D7ZP<-+MD3{sqXgk&Spn2lO^p_(uDXffnDbDGbW8t8EBDT{-ehUy6k3D()qC0wfHKB5=#_2hQ+$Cfvor1Dc0Bd8Ay`=8Lh}+C-%KWY_ zg}vW4C5&HRHyg*Kr06gEty{t6{X5d(Ot2hl);-&ikH~xYhxMXdQecm%<)ry}&2DZl zewpQmB{;t_Vj5ZG60z;u7JfbF+l+$=rawy_xhcocjt;cj80BMg;V>1ht3z^;X6EMk z2K8QfQ+}8`rO%-{B1gKT`<0{gIXo~n5fR<1~AAag`A7Ksy+FiYZ94 ztI6x%&yT>snqm{9_dgy;`vq04q1SobWk4|>`ZSzt!|@6`zr(bo>(P81^F*0%J3I{J z-b~cEhCGMbqzNrmMN{8Z-9*=Q^O0*>r4~oFbR=C70z=gG^pc;Nw+7lxcii!#P>|{{_x!5AT>bs@uFE4XGK^``o)YR%;jDJLTs+fpXT0wD* z91*QBpOr4$zm*OUfN;3ANF6B8YM`>O<0q8NiS_4*A8E`vho>>pON{Cer3 zYRX{@0X(fhq0x|ItuSdN7%b4_a)o+y+jsI!wsK9tql)bt09Iil5lnUdWnJ!Sn#sQGeLDHkWptp;oLq#Z4W_X_Ezy5FEJ+vz-_hNgcYUgd*jHJ^5S_G78WCbA}m=S4BY4U>lUxp zL#Kki7q~Uo#_PVJM>Raw^_cQ=ZtTmK=j7z&j{prk;aZe{(x+A9!pg2${O6aNa_i>7 z4ze(6>`+0(v>hX*rrOZZdqsB$;bG51`&)z;O)OGcc}iBIZP+*Ij)u|LR;Wsf0JZ3S z{^CS2D~o?bdGvC9*yifl-trX^5<`5VeVN&h3{##wxUq?sBM4@j| zi-Q7g_PdLyGtAT((|1m)pr*m0WR#qWSmk9{| z9{JQA&W0lY)MFh#SC2u_52fT2Na-_kbEn-t z8Ry?tIZ)MQZpTm(2PX)-vO&q5eJ?}TWUYwx;ACZ$rCu~E8-1*-tbF1NB~dfqG>%gr z)*?AM`N!2`oT<=LG5h%!vYwPX4T3ZgnH%13Bs5!FTQOo3v%{5(t99~moRU7G=0H}C z)+?tDp(s-Em`KH#t$F%-H~4h~HU(CTk6=#OI60LF*7im1k4&Ke%l|gOW_+E++-7DD zhDK86G~Xe2VAm@-U|pfXRyO|i`Pd;a->wkm)E|b}?YL8eBug)l55gY+2VNd2Wq=lR zFDKQD4S4{cp1g@t5@s!p%(m)ElSqR<#gd302B;Tk@L2TFr1~9O0f26mo9icjs-r{Q zM(538U$=#az&U{a#P1)!k~m#f#(&x~>1U=%c!O9<@%t(vjo`aSp%niS2Oq&cjlcJt z+Mpy(;$(&dK~Gs`ov|o>Vw4Rgv2%U>cW37v`opsviPOCPS8-1GNpDViL^l5*4II}^`5hC!2NSZ(uaUL+#jG=5e=4w=vf`+Y_N}8?w$+D}ly1NVI`eb$ICIz) zm(L}gE0ZPlDenGzJcNOvTn&Oe8Q;uq#x~nCWqPEoJxbX z#S49G(qoPY!JU&{t3{byV{bcZulPd~XVX<-69&FhwcWw4UF&uSx#xhHpJl~1C%Og4 zRo=24uX^8;BEtMt=GK4kyuYi+(5h!_vr_|Wg=&i6*75OisgDBBeq2HNo(|MuSeW}F zRyoB%s9)vdaGv9K0@+qWE55i|r6w1Uwr!%p-J-k2_7xi=udKX?@M8G)ZS%kxu)r6n zbeY4M*;b;^!}L7oV-Tb#y46Ak{F-Cy5N>1QuBmA+=WxFHqTOU2Ra|F`rDwsqw+i<7 zWH~3z`V_md4EyvUYs_vU%cjOAtimh)T=?f+2v;`*O~cVmK)MLC4T+$v`v;dMd~)` z3=lh0U@Ee_FK~hJi(Bl|<@%i-8<&kD93I*5J~#+TL|7~r z`s9mFkw0f#K}Tawc85hjo$V+^=<8C`wl5~FZ`sf-1p}wR=v3!-wAF38VIi_*@w0Mp zC>)QiyE%^-2df_?mXED-=vBQF_dVu*{<}Og`Zgl#~yVUhAicIe^QBhG5Qr&%pY-Aq3jPXy0U1MsVHU_QE>{-OZm%M@U0Z#q|n^h0C zzwBJnqXFhS0qMUH$PFS%f}rCq0Kl98LYTR@BB7lHFQ)l7^u(>eA1QMFNnB!~Up+a|dhA^q$w~ zXJcF_O`wZNl$Lax&jD;%7_~@iH7RufEkjeg7g*8`^pY5WAjx52Vf7KR`EtMkpy!#* ze0#0uwVV|O>Kss;Eud-xIm&6c8%~pyah;D!4C)Vo&kF%EBP(Km7({sU%Ec=e&*xu7 z?XL`mBKy>PvpxX{1;z;05bAN6_OyE}%xpT#wKq zjo0qdec%^U{%2xozWY>$aO3<||H4^s?G7jd0K5*5N(zJ^L?HOFT7r&foBJdaN#_Gn zi_h_Lj_lkvN=f|a85AoyI7wJy7645PwMuWXraXD1loQn&N{J9d$5FGmQrpol*5UU% zfe3@fC2M7b%2rM@usJYMt|>;O8|T)mnhx-p&LAZA*SOl;vm5^btMprxvbd+@{5o_U z{VHhp+Ld;+fUo~RLuQnaNP`O(DD91ARRjLS2qz3mLC;6c5`*)B_hDBuYZPiV!2>b0 zqM5~xJ9XYcPz*x+!ssPZl~RODeKBr`*kIs)x~Egyu(C8%bUm2X?b^YVzXWty4^cY! z0F?~-WLSElfZC9^E2N4hz>^$+5~fpFVVMhEYH$eD3}k`O`R=M9wi_2j#0~&esTYYm01!t5dDt4#wJ-HPumgPrk#tBz|4OQATB{?E1!`aWT%<&g z;n}ffp$0qL(}KG)<5oE--+}RTzWI;A5-v5Xt)ym!&B@70>&vrCe(1DM4}$iD;EGLE<%Yb&_H=W1up|V z3=8t|U(ok|LM70-gu;N9hR9Bcas>T}TQLf5%~`;?MvWq!Ens{*z?HV3zm)=6?;jXg z?#pNsC!32+0@WFoC3~dk_C?qdygh<}P>39XPiL$OBaH!M$``o!+px$qsr~PPYKSyI z*oPrfw_E^@t`^ru0FPhWONN~W-0%Y&|D8N%^()xGcIalZjwo&k*bIOE{P~$7Lju=1 znc2?7Ur(tn1cD`k^&-XguPKY|k;@_6Klw+JmTry9@;5*hlpxNw0mEMUl}CnbkTx1; z1rz$X&Q>UKS|C{<2mxU>TOOh=%l)qb#%t+dE?+?DC2pj{DRRnAS(WX{v*}z6=x&NNi=w`mvd`Aove6G6P zetA968SsA*vBKNis7A7rnhiDB9@F4FM}!SpHGuW zb?N`>hlC4yxJady%hOTrVnE8*p+p#atVo}s{}a{q-$t(euf z2T2yAJq;y(h*@q7lQ@z5IbPj3UfssjmcFBCq-L={T7}|O6i0jUycXI|47!44?9sxX zcs=O8APqcK zzOkXO1wXh-l9S^Y)$`|Y;9VCaVP~v*|Bs>}NEVYo;$&Km7Z!EFO0Z z!Ae3hZ{u zFVYuKO1y->I1nuJt=ZOc0IbNKheE})A0nNBG)P3@#HaUpH)fAc0lxYQ&Q3h95RiW< z>?ZJkUJkDoZTlbu-OzXM>RemoBG3~HPzHQXw%U+=Gf1EXJKBc^nVIYy~kc&!dKG1`hsJ@?Yi>xHx&JO zN2p{-lWS*;NKfXaqAeBe`DZUh@A z-g4Wp%v>>MQS|6fRQ2@B%OCK9===_6kY?law+TOtR^%&FC9;oc**1%06%`e2%XEsg ziWCKs5{%i>gKp9A|KuYIeI)%n9Os~9gVM3NR|O72Vt>Et zKV99tatu^SLPTv;J%SY!GEH(rL?mf<*F_v4=M+~uHPtuWa!VB}jh{dqFTHzw4T??r zOaiY3F`|&7z;U|+Z&OGXe1G9G#Zzirt*dFhZSWAgb5$~yz!fw79ySAazKyTDrug{2 zn%sZkt*aJ^Z=bZ>pyqwjPs3s@8}29k90);Kk1)Gc((q~)G(;c>j%jT;vM*>Q4>l&W zp^SfeaxrJ19Zs2jJ;RC`#O4W$qrp9ZjslJbP%(%GztyFkGq^ zx(zSzK4;zE2Tsn;3Eal#z#v*gRO?T{bhiNh!H-8*^qO9TQV|S1)#4*6cqD@}ll#Kz zWp{Rld?K03Lw*93uef21=>~LA7EaE|MMt+<+TiB*Cx#`Ro8L`LV6eFtv5>S zjs}4^BEFB%_74Ui!!7sY)Ed?lo?pfbls&Vv`&as!UrYr$2!>fDUJH7!b^jv|yZy3? z9Dm5F(6#x4kA`SJsayXc5TWq}F4;pjg#QF&VltxTYAld8hWIc5c(MQlp^`y9MJ^Hu z2x6=9|Cs-FO9l7I#}|1DE{Za^xB9LHec}(j@tJ88rzd!|KiI89C5DEf{PJHx>=$OQ<$1R{r8lLX>yGb40@!25p=yIojU@5+ z9!(gKkoZE%aOq30AD}>K4rrPB>;3sj!#XT9Vm+25xiNBz4Dn_;oS|JoRaqi(=#mc@B(v9>~H1c%%i}G>nXlL@RsgFN(=8DZ z%*T~FFmFI4?E;CQjR&C16SJq8RyrxgVk=J7iF?1Zold(k$DfW5B!^vH^xI5I`9fN! zI&14Xa1$4DXT@03)-SYI^4RE6>j)b&rYPlLYiE`1E-vb*gEBVS4qegDfZ-F!n+z?#NMJJ_IoY zWF&FiasYUyd7z@5miUgfd=m5W=v2|KbK zsUYCTAtE)&p$F{n@J{1kTIm~C5MG(TnZFii#by!|VlcGV>Bn?pEv&_#5^rq6_IiSX zgywZ_1hf}2CIzF>FJ_3xt&k!d1C0#nz?}$<2XlwlqUZKC!n**fT2^k(gRk8K{$_wjWgmE$9^k^D z1VK>10hNvm=^x;*TL3teEr=+$8IAy)F!)CUNyh{rP9S0(R#>ZN8PKQo%E-yd1-3I@ z<5f^lqt&{S(;6t={PYzAUbeb%*-HO6#{B~6lH>AnK13@@ai45g*VKPKw!W}d)@%Mf zj7k<0)7w?B1kUV3)>buTu}AmsEe5|1EtH|8djhrFukJ$>vGmkz3tE(JtfdVPCDcNE}Xm+uCgfXk(A=sF3G)p{YNQ~xKxJi)q9yv4-a zM^%QX#=%ug9Lqz&tCIcAyzFt@=aGV-z6}U@JXk|Ke^N2w`TS#JG@?4T)lAqSk^ro; z)$$1ZPHqL0p!^tFnnagNq1GSL@Q_9;rXu$rzXCZy(btCeoi(rc?}!%&lJavaYCllA z9YrAtcO^abT6TWL5Lzt8{gRBSxrv^UVom&`fm1C)morZJIYP3IvaD(cZW z+s|C3PGs98#q%c96O($HCb|P>*K*VR8bLF6Db1{&FWUW5(klk(Tc=@`e*YtFMGUft zAwz0nmiU*l=nF4cE!q{fvU^ivb)BM_7+1uBY!l78i>9q3NN&N&1`yP8=H+Qn=%Bt)j?AXx*S zL;)&vLEn+7wDzjuoq1m>0XM>fao=Ga`h#N$!wkbT19A!q4KIaZeh!Kht*+bTA^-6{ z(=$?I{KtoA$k9{1NR$VX302@*0_Q`C0{*d`sEGlMIw~@l1U|zmF?}-xdV_uZ_E<-I?D04tc~a_ea4g`kzuWXl^W}zH{Hh3F$=R zO(TSuN{gU9?WwflF_^PN=Y7_?F59N79rxKPza?HWX|VtEch0xeR<}!}pmK;Kcj2n0 z-urUITtw~+s5dCk7pk|uUq|vlNXeP3^8{4kqTo3^4?&z3#H#?=98nLo0mN0T7$-6* zOPun-8Dv1{1T1*xZvNpXs;b}M#tQEJQp1TC^}Gvst}Bs06mWjS8P*#V5m&I{u8DcM z%qH#+U(lQM6|T+=T{op%JtE}s9;(b3&KzdvSYwp+?TCG2q{C&i1PSFEXMnt>$()0^GmzfJE2L&ah`rrEE zWm!o7bpZlG&Gc2E4FBW{2P4F>y_Irj#m4^KhgpT_y>Hu#RDupy+$VemlKe5@!Sp@> z(Egkz!V*wO|6WeN{6x-iZ`Wq&S2eG$-`F=O=O0#f`-15|n|0cEH5^gACAfTq_S~u3 zob--A@F#hSX}BKL6r-tNiuw9nPsEf75%i80Q%zUqI)-AR>XxIzUaN8Cuj7$CuOHOJL%)P#acc0C{? zQaq7NN$^w0X)uJmzy&|w2$<=ipP%@@K$?W#i9y>u(ESil^T5{#%Z#lB(TfRNTi03) z`xCe`eE|3$5Kd|T@#C>=LGkt}c#+DmPQhw}ps>j9&p{Q3U`A0_{=~`&c@QhnnWi#? z^zV1wD*=Ekrc{#omuT+@Jq#k2&o@-ZBceXKQ1ru1+*U%#DviY?9HIP0(%E@)GJgE3y{T-?w*mHk+4$+Z|h8 z4<3a2M%w%La8xibNarD?;MhhR=TQi`JtPv8o_?!PW7VLu5Kh?R$>g8C z4>qKPAn+$=-Nb6ID5tE#}U&@551R@biga-BtEc9(G*5ie#b zou4oe(UH|-0a$D@x*8U1mA(X;_p?}E#6@2@TC)$5oFKA-nH2-Mh&qkpg5(LilI`Rx z_DyW|gY014_kk+0cd)nx>{@9>da^7G7QGV$fe@nvkrQj&))PHWTF8`dlZH49C<@Ft zRU>`;3d!L<;W69qVc+xDVD}&y5G1-t5dP$L(4%3Y_;}01&odnQ$Aln{PXBGLq4B`M zhg8K2(Vg7^@N}#pdvg5^{s_BfLvO$fT$CmF81S%W14%TTY)7xj2argFRgQlrjB;pc zG#@B^>b&+T*D!olP37Xv#1~LM!Tl|9fS{lAw@b`_fzOqKo!Bx5BCrtzHDK$Cy=tCm z;g}ZFCF(??Ux^=TZDrVkp@}HIR`-`sM8!ogln|FHi|St1b=`!BHTxP5wJhr2KvkoQ7gd-P_VLM z1*tw8wjpBc#q{iejUVD5*i}?H`F3FW8N>oHMPpE#Asp5W#kw1)kKk!nS-a)?`}d8- z&rVn5@rY?!s-l#N_kFAWrpwlCeMiT;9hvF*9q|d%4kf^L-Wprz?uz&Ht?0zLHiG8L z!7lS{#Cu!BMAGv*k=J8(jeFL#^}Htt5sznkF^vJlD15GP{4;Q0;I4R(tL6NxY@z)5ud4{zwAyYt{t#32jkaEQbYj8kW!Z*!zY|2*@8h|IP zYtN;b;OfNG7cKd#sg&di;HHHaCM$55fBWvc>ltIw$94_E%y?HcxiAKDI2*wNe^PgBWWH zI{+RLt^oGPOVl6|_{k4TIcYn(^6i#S-m4wCA(A&5LEBy)En{Y7Wvwvqd&oRIRaZh! zd_wo?!A;o3Qp3gij>0LJ3G^p+?VLZuulvtW**D0dv8Scl&mlA%$KktR)k7;G&ibR@ zl}K^mO^o8p(lHLjZ9hIY#0P;lH}cK#`n&1}28|kNGAQMQ0?3PvGw^vKc|#KFZM^7_ zNw&VHdX{geTI=IDhi1lq%S#0|)EqSR!cA+w>pTpTvx84{YeAW6{J@-6jK$HZyFSi$ z^?mLORRUe2npcn3trJUB;b5~@?kYa&vaBic=l`@yO(E~I_s)SY$T)sbT!YudXvmPR zH(LQJC{W~}4&5`C<=H}2Par-I{xM{XzL*ph54Y*og~&%m|C1@>H1j3xj-YkafN5G? ziJ+EB$6GLXDPq=gg97LFVFCMHynlrHg;tjo>+7tLh|_}SHN~G;?=(D3J%^zy2xb{* z43nPi4(dr0^@Aw;0bEUr^XWIp!&_@#nf@1T^-=b(=3?e$EnxD37lZP+GxtiqyMzXr zKj0&kX2mU-V0y?(g5x2{D_ zkw`hDukc-xRoNy%!e8XB@bmR5-A%y#k)pZ4CD1!l$g3BE0jrSku$_RqW!z4saqXTzZh9toX-hK7d89pq`c z&H>Xg0?%eoKfGQCOux&NoTAgHpWIh@2BL@1zm2Gkr0x%s*fXj)GFQXlEr1}9s9c%m(gA6wEc>ZX zy8w|QQ{GUt)dLRdv&}CrqG8F{Y>f^E<=w_BWB}zKVy72Q{3PHi{s3X00oiS#*B{Hv zRrmKClr?WLP8wq5v^cB(kiwi3;ba15EukWEyN4f9A(tKI>6@%sR}9qJDPg$114~JY>KOcU{=HLWJ?C*^0Nt-%5zsmp=Rj;_5fXfzzK~tJgP0_N6bJrDZ%Ug)AOjb zVgneCN$q)eA2;4%L#Xg{qgD=6hwU8}#B}jqyK9MRqj%@HydaUdtK)H+R?=6Z%!TYW z_<*~%OGZj!o;3C+t9x>0zHlED5 zFSYILswr!*EP#tQS-mG zNc9Y=-E0uq5)BE|%#ghSej5)cB{#&x#7e>ZavXOXdyaUlpo*1s%r#(-Z9v$8C#7eS zG+}1}I|3PQk)5|NGwTBrwB;*Uxe&5Af=;^xff1A!f6{b8ZQ7OeVK*#%#n%c8ATDIj?kGR0#J0c+1u69m| zPjL=?cKUYA{`7JblVMjMkbHnC{;NYOv+Q}>K1l-4XTQkj{LHbZ-$*;~AF|bqu!nl!dH+_ z4brc50yJTfo?N?;+{v1g+R<#$Wij7z;Q41J7)FC`1Igd_6uWu~iEf1yFRDO%qS>>B z31vS&oSntqMHms9-|Q77+a%EVyQp2p!ol$;LSzG(%S5s<5rcrY>L z-K%^5GeT9>I~S1INc<5<7d)isCoHc3=7JCyvk&B>Sig3o%;)B-0FS?MI|oUZ>@lU2 zE7MCZ=V>`>3N!*6|KCU|=*I$JX2CN~0B;{G7DZcn5jWdebT5Fvjk+BrAoZYn;7)@` zX$D=;Ws{DC4QgU=@hS)|=zgJ&z^^J9(l|dWY&78-1;w$4rpVYQqDw%gvkIIRuw}ev zg)hS|)=JxuX+BcZ@B5k>>M*?|2myE$5`KfcR!AFEH_`(_qv^&MReGG}-HEMx{;7)j zZQWHWtW%R9Lib0I7->8Y7MiBZ+l>k>PdlyTeVv8?(2 zvFYJ8kp;n2{eAc1dOJKwTcJ<)c$f@*E)DB>)1nw6gb9GJ2c8K;wo@8@_$A3ZQ@2AU zag%QMV09`jQq#A~f6_a$GsjJawe=y1XycoV2!OJS%n?H7e}2gA3HxHFzz>x>9nwbGmv1IdA$rX6^~=XvFu>tuF@?u}$gqOePJ~6`apDpB@2;>RW+x8ezd`?Ow|6JDFa6|%m@4hf>H)C3jmIi92D}R zz?*^QK;g|=lIWJy!uSa#)c2TfC;qTM{El}h)u!&@C5v|r0j1kv)Yz6c3@_gWO z!-UOmgTf^NHIj<^qyKC*a1ug#@#IZlyd@=_+ZgLarY0lqWl!Z_GI_#Q3HA!NNsNdd zW%S9-F<1|PF}hl~_Fb~r-`Q95(uxZ&Gt$B{-!z|U2G0^q*=#E&G4l!?n8yXC zwY{@LwpWyo_4M>~f%ygRD5$#Sh^ zxU=T$G}7~6O8F=K4Vp^>_LBZ~=s6_=A7dd+1D>n36Fp0F5f^uVG%nhRGhZWg z*k;Wk4Pio4l*D@p!BF8;%ap%AdE6PP(PGkW!9wq?3yr?u&Xl z{H^J}r%dl1u5`bdWoNw!>~@LnfPsM_@Y}Zs>3tV#x3>XEGE;;z6;UO}#s;ZcrBM!zs&FY>PdzKF? z7aH~pf1X!S>8LHhuZ*EiBD_GPcXI02JUt5ik{7jVKRHZ-??(cx9Hv+xzmcr8NEdmp z*n7#TnzV?5SjLCY_$V%A!Y&6s2_6tk!}VJ{_w0Rqv=`^!6cZcEG!eDkyN*l=L5Dp&#kP2qF}Y^x6b)qxuiMvVTWJ*y zNzrz!8cwR~mSO?vd|!6aC@2J@B@L2i;#*p)4-iyo1JvE{Gl-95;_{={kG6J3ZI{e=pM?^HT29mu5!VLB-kCdC zgyhht=e2HYd8Tbjf@{QuLx=popGQd5Bm!kq|$oKx!_xzE3CN7!2kKsB{Y)M&+s zCJb87e{Lo&_%(KM%b2`d|Nk^Lazp(4pEnEcq}WMSGKLsshJWx^|O6XU~@HiWh!u+Q!KPqwP;J72*x$m5gw49)L~MJ zq`z^tR@VUOUm;QLXhTs4ArWelcU4#zc0x)^{|GYW8HuQwAoyi&vk9-{W`J*mJP{DW z=Dmw-05UFtdVZD95`AnA}&Bj6bNa!HKdp?Qy&4Cllm&0h)T#9$Osa)94!Zv`0| zgJME7D$|DEIrWo3ED(bd_q5HO?cvv*^Z9q5*ltXqpERQ!AR5D=Q_f<=F%4)uuy_?i z_!G3oH*Iq>hyZ*(09Y(yZ@s^YmmC38ApWPTh9MfL03>9Uo}S(!X$Wqybw{l_@`Mm( z1>(O5q}Shj)Pb3We9-`+3L*)v3wosmpVNCK&XVD=BJog-5`%6CQuct(SJRsi4JgA5 zgiyqqA*ZC|HEFpBvu6lWhg5G4@UReH1j|7fR320?Dn836szS(21x0A7%d#pAy204q zs0Hr*N3g(=Icp?04^0~)tG$Rhjl_JA2``;XyPeDhqL58ThAiL(h_wvs=n!ae50Y{R zx3tIR%qQjf)$L#BPWDP)BUU5K2Hm}@vkj%86sD<|lmUGp>-iP9|>f6g)VLAOkAoM&32SvC42L4&tc=qGnrzMIM zM7W*lh!H*f%P_cc9~N_hz<6Wf^|LNmMowUK8&{4UZq#lr4Z=5mNS~JK%%kdHMO3d3 zq5mF|Dc|+@@y_G!;x^~_7k)pkq`R*}nUu|sD~6pWUtNN4E!bIt@9Ef>NHUEOrw+&{ zD?`52We8MYu)jU(4PrU8UyiNEqKYYgv7nN{iiIsOmtRo)&+l4Tfb5Ydd>PEU-5GAH z{@W1uCuKGGf1O@R)f!~DMhF2M3S^M{hWO*^aY{oU_!gM^>B|RjS1lmc46T-Dc{mGF zvN-^bonT^Q2XuR|j_tXvf3d*#gb;(~kvsxX{0(FHmKkKa3Oad@;2a?`vsUN1!xkd| z0b%4zEMmC~BOtZ}1KC9y;=gq5>tkT(0+|~qgQWsg7QU+GqFtqk6@nGH-8aVNv~Qx2 zQQjVjGan?W3;+Om3EYr^{rW2S_8HL6E|fGJvq9D@9YlOY@P_8{>9^ThC$#_e-Q@v9 zN!Ese2*`T^!HPkGV89(=I^HK*mB#(#nq8t8C?E}Njql7EFS|oej%uih%^dGkCUO zKHe=Y@?oulG-E1E$-<;rJ8)|DBBBHs7u0v3Xaz?3a?sig#0LmSF|)=!ZGD#N4U_Lv z0}@Ew7xc9BesKi5S7>mJs(Jp@rff33am5J2DKNQJrtOB)@vpz&qVZwy1MWy4MAlCu zh^z?-n;&Pk2#>@TgAR)516yDe{aTJ3M-btdU2Qm|C*Fa+H>^`#;Yebwhd*$e{N7Lg z{n1u!%ILg{GT#K(A|Co}=$KM($!aCWYAt8fz^{W}R*loq6d!sEg9iq#Aures$T&zn zT`jsdu;v77$6+mcxeC}XGK+y3&&fCRPR!LakI!(nx$@D z3M7fYMR$^br)5oHp3G-QW0B&klzv(37u}II0}_2}0{ykQ<(5qkUHtZR@0-EgdF5YX zo@Pjf>uPl5>A=r--_f|wzBh(_50t3(B>Eq-3|Yp7XYACx%}-kt$m&ab>Wa9ssq9Y& zcD+cjf1HiZkW=EjG%wV9?uDe-uoRy;q}BS5;aV<9kJdEc3(ZyDi}5F>vE*!7kYaiP zrr`O|)&~%r2Z(X*1~OPdGATd^Noc~KOL1RCwDufH(s`mD^92p2GvAH>MVUqZ-tzp@ zhiPxpXO|74weM|kX^3PczJ1L1mX0_h-}6Y0_1p^-eAX>7vHH;l_xy+d{MbHlRRg51 zjKn8o%W_aOTUTs2w|~uEdjcS5NW$`(P3!lzTi=0R{jwTSFkxDv zxK3fyoU8Uh@@DkLxuml1N7(#yT6J;QpxM)3ehH->e}Y7a(ZYiH5Vmra?>Gm$o;w0oexOxPO8i#@vZ)A9EGgUW6wCo3=){g*8`sL zWd6vE%$A1Bpk`xu`}WaFEd@*ywPLw1G+bHkKdy9_Yi0I{UUckuOLRt3a4*Ye@R26W+1$E;M~Ofmm3QA zqYURC(7a3kaOF`0_Z`)&J^PXeSx=I2DXweHi}S0)RjWisTNxetw)l8n!7&+I#85?E*np_9R==uVHVcw|d4mk^a1+rCNu^ca+ZU=cySa))1kP zq~hs%{N~3-k!50#xwG+Brm^!DuWtM0N+nE>QPE@K`X88|+{1-i;dn9rrbOR|bA*QC zY}60RYCn7F4s~1;SFAL0tZ7=7W+l5y6c>KI>tSU~_;r_@HeEbgPAUPG#H@)&_vKFh z)5(%wHH?vSd)UtD;CVl;_ss&bu2Ab%N_Tf`x)nr9x=X=L zNJ-ZU32~>${sOW7ClOgh?uzZg78!$nZu4v#tP=+xA`l=2j|Cm^!G z8c+TN|0^50;GQcZN(isBI=@aw%%iIi4MXq|tv*Wnt>o5(j2o;s<3%Kbr}qcGl`PMl zc!6BUD3jM7xMH?*;U_V|;?CSeF>KBKZGDuo8YgZcEam!|mMeL-hQXVp?I?&VoY|cv zmxM8rn*!W)yxXl$!2=RW##?A+UK}rqvsrei;KVPaqa|-&IBV5F0Q$-^ ztERBlurfsxvq0A$G~@Ku9~ACTtj0QvgYWVjS{M)?INc^C2s1`aj0rDfz@@Eamd!E>?qSGJy5e=wMf);X zYpwFA7j=~R>xgDu*q$?2{dwBSos*YMA>73AAO&yW4@r9U!X{D^>T~E4@H=zkGyNQ^ z<#wJVcoQc(j1~R9B!#Y(CeSQP=wP}(6&Fi-^RLgejjuiQnD7DN7_$}G9-f4}8)v>L zEo=x?04YM8b6mvl!;9t*tK>4xGZ>0&VS(o*;hTv}sG_HD6AV1-+4Qq=Ma z;#srd)@o5|bRXS93aGB`@J?f7d{)6*nL_ho0iwZA6$E?)0Y?~0%rm6ynWxk-L|FfF zS_aHz8edE@(p2eK3%#mp3e4c5=A)2o6{&yEJITQJU~>3jB@eUmnb?{%^ERp+C7;UB z_h5vqM;$r=J_x2+C$bYkbl{a4eq0$HLfcKCCoKWc3(zqF)>Bcsk6!{3v=mQ(F6#_H z**-!XLqKkXJjaT+yWlhfWc?5*4`77;7iLUl$>!qsEOZuv4uYWR$O8@ntP@Y8WZQtF z3N)RdSBK1ujw@{^c{R7{GgSiYoH)8JN{(x~d+~%Rc=Wn;$?D%HLR)H{HCc&mc2*B6 zVsH;grSQT#mg0gnG3fObgfQM;>= zuMG#TKSUswha{_NYG}ROPoQHU#MuMZjY`q~y&e9f7vRSrTg*GKA#Vpa9uX49LOL`E z?glDUNWJh2UI6l&t1(sr&>KWZmYfOPGYFuIU49DKm`6LQdM2B|r?w3`@2F61h{E@v z9@06#_FA-h-cEFJbQw5_bVr3Nf99?}D%-lW%_6GVc@j9e>DW>!1~eakNJi4_&qxr3 zVPkPB)`PRr+{AZPtJptu0< zH)vLE7o9eOwo@Oqq?eZfAhh{`Hhj+;+2>hJ64yHf$}>BlBdY8OU?tB)L`3#KsmN)j zyBRw0M_>}g;EzwxHr>CJHku*or zBH7#z;s)#^TF_B}jYrKU$3L%jd?my1%5vTX`fF{TNK?TSO?A{(WEaN9ZjmfAG`fbe z{4SVj1&4#tXWYSzw|*S57EJ9Z0SCI2F>7}L3%dB2BhUOvd0c&dgZ%+wg$CvZa4o$6 z0{^6zcU>kxg3&cm@41_x^W*>l=6(DfGSxMsB?YluGnYVWdmsUOiJ zo3gSr?3=QaWWaIT!nw<#Zo36!RIXIVnS=7K)gSAY%G#t zccdTD4H;f}fG@7-mC8t`Hn61}S32DA0zX$HtQ%MSLui_bp4b}&B-7!ozBg^!)_2ie z6&eV8XV-rKpdcM|+?Rjpi{?&5tU8ZuzEYjs|KIy#F9cjb^Y!qPPU`N(dz`ka=oDZ9 z4+;?vaOux?y<6XOtxo@(x7h0((|Y$*L)-3g1v3~fL($gW1s$4Glq@GFA-W^9nCKyW zrqew*;ZIL3u41?qG1RBj{Ysh&*#jeGgKRlwTmGg>9DCl}30h{QW~|1&ZHo$hROZwZ zI28QT)k0-l(*1pw-`4(;4-P*nE7|aq)ZvlMa77Jy!d2o4UotJ-l!3U-Ke)~M8htbs zMM60v-_2iom*kcDMD1e-jKu{`N6BV=_x+hCj+P?LwicwD74xXfaYw4D$| z&Bd`nv39cUM%m-1c!n~d(0Bo#pMT%}J`Wu;F*#WaZgrflX*xU^3yw|*D8y`|<}!<` z%-Kj*^&vyLzxI)V635RJjX8`Mt02s8Z&Q^3DR^CBt9ulM2S7MW-8S;1jWPb}^-kHiuHWpOHH$-84J)TuO z4mq7D(?=fXXMX(j0Nc>@{R-itCO5lRipgcJT7=^F_}?F}7y5^U?mHqEUo&^veQR28 zcSn2BKSXQr@;#%v(JE9^`JY}1*DTN>D;ih(QjtW-qDKrUR0oRZ;;78vkG$_%Q)GEF zItHrE_lWb&6%Bsk>*8>j1nAvUiM^*dKk?n3SRIYOX#WrVptPT#W=k6zt}(@Ii@~0^ z$g#&_*E7LgGeq2P%KZg2)c`LPlXL!|!vpNw(>P|WQKdIjWxPEl9f~Y&|EJM{wRK&~ zbqhlS_c9i_kALbw_`M=)8X;HK%&H~quRmiz_tjq#;5Ct~jMdhpApYdV_MV<{y(C3C z42iT4|J$^*wtj>*S5}vkrk=Ch>^o}N0;VZSIS&Ckq31~4z4$VVjvLByi=Ry0pN~Fw z0j;AKB5(I5yR&kUXsO=^QKts@++~rs+w%AS-J%1n_X)EPWvj=FpxIxnJLV8;Ply1# zr`6N?ouEQ~dV0zlx4L{L6bMQ=|3SrCT!3pEn^G7!X9;dWX;)2Qgtd5~$&O%gaS`qH zJg5ZgVW?J;+4#`#tI#tR|FvNs{&XVP0Xoks2{#wF5ej~&HU^UVSrNev2E#Sr7kETo z==#PXNvDrBPuy0TYs5Kui zjb?0JxH}DgsHC{i!G@z@c@+ir%jypk0&^4LOGPAvgxp}M4#`620TeIs`*STn@i*qn z|8Et1#~As-PM~g!rFg+xeg|lw44y&%PX}xT9H^b+YT(e{iGuX=kP2Sm7vU{QZlB#q zQd0EnGKPb_5`Q)l(PO;Tu4c!y6P(bN`&SGS5#Xq0&HuWxF?QTG<5iz(@Uj5z(g_^u>%g-)=S5^bK=B#$0sJ`ZyhaqRh!?_lWHpUp=k`t)RHgzUuf%R6$j`H93! z%quUcG6r$8f_lD!6A!L>Tp=<&RU?fLRS@L~^spgo)JN)C7$|-Bf_in^?~2L{z_J7K zyKmWo36BYw7aO3KW8X3Juw& zL3tQ}a6n5u5m?L4#YzqER>?(iySkv}ymd^-sfdl$Qf zbbVL67UfTQ`LqXkK>{bw$btLk3-c1gVLz zgTbwRt#4fJIlZN+kI#h9=URHS{bJU$u4C(8N-MU!%*jSV!<o;*u_)evOx|^U6u z_Ij$w0x@*~hZ5@W0SJesIT3DTLah-fx0>j zy{_F}IO;F>eiu=hab5aw{767qjv1f6mgdX%)c{8UOx2Dsj|3#|=s3bstcYso8qWz% zlNs*GLsj-1VozACISobO7ZRqScL<37@8G7_3#K#da8}O1q|Pg^Y`(QHd$lNU62ToR zl;S)FK@)F1vM)GhZU|MlYLTzCwLR2PJdW2sgSxVH?yWY_Yx^w7&65cxb@2qyYx=*- z&P-70IRI|oy4((kz5h{rJ8H|sQjw$^M+4Qp2epLtDOi|gf_QoELQ^kefv7?EM9Z4)WlBH zJ^A1l8R6VqC?a-36!kkpGrE5ZmuH|iSu^BJ$B{CW)ewzx<9v{SW!V_3){|Quy?e!n zlKgERD;WdZpv?eaxWKyMbXkv8W~Llf>s};3lIA;jrfV2lVi$@<;2?#q;fuby+rOnO zCxZNjy_S25lh_#4jS_#hB>!&Neyi{HqUshaaND@^VV&T41d^3;CyVFYP=_F> zMD$N{JL_>woVG4({gdqUoMd*PT*1;c5~cAdejYp5r_Mt7YY^_>l#}^Lc3dCOn`|J! zwj$embhk2XBHZ7_jCsl)-ehxx-u`+T{5+th#mGp6S)NgkZe16uu7C)(<3q_*)L9#f zVhjY)1w0|^UN?WP>6=t*?|)F<4UtS0~2>*OfTjuk^mni)(D@IQAjY#98~gH@ieVDrinQw1r8 zevKCtTQ2J<`{(*>nN4u$QCapQets(WTA$-NX8>_@fF+>;+y`WJDqLZ80hR^+qTn?MdzU0v~o`NiE3e^^hp(}3G-T$0iL136P6O}<(Iq1zn1=Y=hC-v{>iZ_hNhIrW+ZCzNu zfn3omXpH>0fVcqFaw!q?bY%QGP5rD;_{jSHkPuV~nQ$|5gETy(ddbBZi0t!Plu3*E5+9AbvA|BiCqo0l4WVcJA^2Bn6cy$!^Z9V4jZ<-mfVD^ zgdEd^9lr7_C$Cy1>$6`hf?JnGg>&U-mHcj0kCA0G>RC~XaNkFK9Q3ivN>#XN9&^rd zEfZo9E|EUK<<|^SL(W_=T{&Qw7Fe}@*}Ayh&OuLW9@ajH!4^xRtPuB$WMzcpy&X-z zi-`XoS(KYkL?|yUMPMDy-4JffGyCDA=x0(j;a3M+SIwD#6~lLuD$jB%H|c>@sxp$i z70IP#(`eed-#ll0z!s-T7Mb+Z&XUh$%m|J0ZcUh!J$`~ywF$cyD+kp1MeZ)EqEu@0a6u#+ex#i5a+;-Y!m*I6|VLI-KGm?dV+{X8L^1qdbObw=B( zL**~EPv!c8B#ogd~R}G ztUKV0_TGIVda_Yf^5$TQCiMP<2dadlV0JW06+fQx#EKXQ9?;0|5F(?mYq73R9K-?_WxTIftZM=pf?(=dX z>TO~V#YbR!-+a2$H)|z3rrAm;)3$TTX<}nvh)%qOlmYoT{F zVP(ES>M4}h#kPrG3eyM8QIte`O#KY%`>!@WWD~sJ&s*N!zA2!MOdam<83>RZ(hB0w zgT~X;b9QVtRWzY$T;`7(YLPHgV-Q3D#-(=t0yXUf34Kc;a)cPgy8h;XiA)TdI}r}+ zKi>p|I?+2N47%p4?Gve4tL5`6R{5-wd_89FZWXmpYBL`sB#6eUd^qDq6Vj=37pip1 z+}|dW#gocnd2+X^M!qMBCq4LbNf4D)r1#9_^DN%Km*qaadJP0(Wc0;Fxc=Vg=MDa^ z*W{;$*g|cuET5Rlln~lEiwJa3j+)b^UiGa1(`6og(EIChaVx(2;aR*+211D&tF{(e|nWQg3EK<&&mHlzD9w9S%4NV`gikLN)l$OqWQ-+oa#K;Y7Hw2BzGuUgs#s`Ot zK4|;owxLkJ*`P#HFVy50gx-FQ=s4F^YYW=TSW%vUt8`(EMvEQ2T4K?<$dgJ(!SjXV zPqJRowwIy8nGo1kMuq(jD`N|Cjiu~R(vVct**5_X24a#L+ti-UZ#wLeKi5ii%j`ay zjz#U1MXyNe%aAt9`r=oMXVot0WSPJz6NABNId*#usM+};5xnC<#H(*RV{h&W)8v_1 zX8&Z;R*4kobCB6_Vy+Qlg8$mF=zbDV36^$KuYv?LiY)vp7C^poVN6YHuX25AR8o#E zhxHco(GHOv^ukr5t4bOQ8T{T@GhOH!L1wJoixhbbmfG*xt(i}iEOyd|@s|(gPV*+S z(6K)Y>>uLZ+8Dz;?7$-wDO?OEW5H%)A?k=kVic+(*3>#Ef*rOQ>$1cAY@_eNHs%e5 zrMFw6b}MDfw=1INL4Klj=f7He35Oqk@qWypt7VWk`FcDekT}fiqqJ~X+~3fhkjv+WpHXW z;D@z@9YwTjz_8v-<_X~z3fXR8QY^gR?~7F6Hcv9T^Ht9#CfOAk}R6OwD!!yh$ad=P#(x(lK=h;^Cl&pbjA-4O9iFlSXEM-xG-rz`+pv z-ay>nz-d`KMpwDSuK{(~gJugp8s^8e^^z3yk_=jLWeX*lk65+7B5~s*h$q`Q;AEtD z{>pu9sk7j(<2cUQ*?0A60hN%4h|&#D=0`(1)TMT0&JifB1Jbv|Cr*kicV>KePl(aX zQ$oKXVPGi9pcd1HeCl6^Z@C#J4HK3Kb0jI`Kdu8}*?-D+Zor#2ZzLCL`-;^IkGzDA zBC4K#J)xL8blHk={IK`4`G9k(ZePiF?&O)SSAV$dm7LvDj$2XKoQ`K+gw2_dZ@Lym z7yeb9;TKiKq$&-=wvx&(Cwxd$a5K29=dxAD=Pz?sE+b4yp_GyG%Qm4ROl!t1Db;rq z@yx_p|Dta*o`o{_MhLnFnZ?p1Za=smBU=!r54&T&AA?0|6~(kE06(vDcabk%GglA8 zsCUmbo0CLANDMZIeQm12Jin$fG58U-8XSABBB!u->AbyV+BvJH!^g}|bTtb5JZ9h# zr(K#us+N&vPCG;^WhP_o4}4+2JFuns$pm8J$E!y=BI%i~yK%t}XGAK0E2UaAWvK_A z;A2G=FC`d>23j-{Pxl%{*$<5QuDB4+YPfiLTa80evA%**{dBvPU$z;mVz9hkOnm!fAEzZlKcfUV>MC5)*{d;|pU%oleAIvYXI@}@_~Yl-Se)n$hWv(Y)lIHO zK|W)aKh&>AwWd-$Y0>CsaWJf&Cx=6-C;N}%6&8(4fK(Qhu|otd<7Y3n{Tv^X`T-{6 zK`aAq3VNGX>KSbx%i-EG#*Z0a^|J3$gNvUeq;^LX^Jmq+6^M}^(v`rkWNBUlcXN+m~O3mIbj?>SMJl1TjExe zSu*DqDkDDM;>Y7>gwJ24Z>ar9%E-TZ4=!GYaP3%sFXxf`x`=7(@20=t=Yfha92EQb zcefwMAk`~!Yb{ikDq6QFA|-u z0+F#e&|8D@CtUphBH}_$PQd4a)Y4G+S0~{6dK|4h4FoV05MzMR3#w?ZfaMW{O#A|l zD;r?Mj%t7yqBY$&_WxBfK{6Upe0~Qm&{&|y1wBY)(8GmX)Ii<_a8=K|IzESClJJ6l zHiR!tKErpn;ptx5m2XwP<$yyE*>0t(SV9Pi5Ui&AjV>Dtv$FxE5i(K( z4;^?*VCuvkM5-1!Y6}54K#&Tz%$k51F~ANY4!_b`U`1jdCV0#72gw#t4ve6tWisg*qk_$hQc{a==BYh8zen1SRgz2>>5f z_$7rKG6H}cZbF$1z)ht3Lncy2>c2XxYQ)7Q=T_$xSz`_%n-|+Os}K4v3ECngU6X^R zhx`*!OR^PA)$2j_at=KhG1*6(oe&JT^ak8u-O_c ztUZS{o!!U1HO`vG)1y6tS(-l4g3|(jFsoO|_OX#_Ipjf$`NFuFsZ>7K3n(L%F}~BR zNzeZeupe@pDvki#*Jof#mCm0u8JqvlWy&LWheEHU9{( zM?SoeFGOo0w$#!HSRKE(v6x~8=eFhi{BNYo?lL<^bAMomMehzk=~N{kN&4D1?{2-B zgOFz-=hri`=YNV8aC}y0VRI|%NRvXxQeXl1T$WBv(}B-?jhfHL-t(Lzt^H?e_u$9= zP9o&w7RPudR_#;N`z3tOW*Xg?^=8F#rhiXi5_7;mjC7LL3~U^wIh9)8sxNj4A;18X zdI+@2@gQ*mJpa#d(M{_q?zsMesR1BN9O_Hl7(2X?5?e)T=f<3scWyrPJY*n>c#&C! zlzWPDVyb4(?L1@O+0k~!Dl5;(|8hBm4kUt~i2Z#3br~LK-TESsO^7jL_b0qFt=PG= zOeeO{-EmI2)g*SnM$nZYbfY(-k}(bpe6{fUONF zeay2L&9}=0AWvDHxHvhPI5?bgN95@6fSXK{4VYAAW|{`;O=??5Q@B9etI1`Zil+WJ z=K@3^DI}DZmY#tGJ}B5H9wcHSKpC%qnD!maW`K{kmi#}cUo`)_HOK2~l7Q7r8MrR+ zyJfA%@RP-XZ>?6-6Ae#z%G9U+B&`2u!^gDWpe<-Vl|6UW>?))Tcxk{lRrbS3ogmz< z!NMCifvUs;N%e9Xx>s#SL0qOaDtw- zlc+7e4mI+k?|dGidbs4iKy82N`xlTp%4bi>=;5H|fBj419~9;g(2M2`^;NIh|Ifba z*Z+NQkz|w~ZnVRbs9fADmBLt5uuZsTl2nuGs z0`B}pkY@47VSwOagZ1k|KcYp@P2XV}zWw>hPMk#1(Mis2`9iV>1@ zB=;lh^uoVTr|NjQkvO=A=_SjTe^@QmacCcisHge0v#BO)p6OdQC>u9Ef+A`@fGjUG zzdxWO2*DIV1RoLj5R4!R6?7JP%=$x%C<4K{P6yJiKywl&@?XLKhwh{|l!yY66aXlX z4@8JSd?Cm_1tB7}*ZZbz0Qx)8C)BF))5yvk_+rU9oQYMqH47b>Tmw$^OLl5&U)zmWShY z7f4(wTKT4(FK-pkv|h(8uZ(RDDE?0XYKz_fOZ(163<4B@ zUv2(JXCP+tsFi}2ti#94pN+F4%yp2awO38bEs{Us^SL%!jdh}QNr5`UFc8>M2MaALN$l1>+yt&Jr1V#6MFcj7YfvaRQsb zHuVd5W~z>1=wS1&Yu4WGI%o>22mMLtCJAxGR&Z>=3rTJ=zQy`wHL&|1r+0{o&eBq> zcXkL|^{qOFH|;-hwuavxrQ?MdOXR0&t6CJYd)clNXinq!cOfIpK{_`OOLS8cfm?w6 z;(!=bwLWGjfc?SNGOxuM%7$(3aXT;l3ack1oa`S*CHsnk{%Us*x@X*^=J!s1d09PyJR33DZaN37@v z;DgEL4!rHiDq8iG+^@{QC2K|MdW_n(HF@jF1$J4#e-Ce`)E7S<5;2|UvaNV4@F>-d zwCRA(xEm|58RX+a4oJWn2M*-Qo0p zpd+PH%K`S;7!~~Xw-x-hWbCHftppF}&QF9*tcYFL))(2wa871OR_7cf0t3q#=K~k4JLgh?{qU*Wb%Eyb0~zV6c|AAKBtT&cH#IQ;CJo5=31jkEBU0bA z9hY@ROFq$g5uu{LjJ+qBlmxPHubq*ZE+NWkR(gA9Z-o?3qerPNmj`NOMYfK{MhLMLB-P1P0IoW_`Fl`pJUQyae+4bi>fvXUC<&l4hz8WKY1N&SB|Yo zrq9`T>cIud(;m=)SIX|oMo;$EH9Z?xOH>nDz&c45ObMTo?pDNM=^z)Tc>H(CxJT~? zCtEK_1cGo5{_}F^QwT38h$*l!H_M~~+!BM6xb3J!I7G2EKefEiHOqc=xs{N3^wEQ> z;AgO}!FsDPtm+suP(q@+C|jdlPx9SzTJz1mP*kr`j{2V?@2U+%(8ZVqA_z~ZF@p9gu9Vf#5H5<=}k8htSB*O`bh*aGm6}c zx(g7Ba_X-UXupUe{1-9i?#dqH97qIRkJ^7V04mad&vMk;1rG3-nYJ2yxeQxq8W?FY zW&~}53}4Phb(CVlju`2k+h9=tzDRm2&(Gm&wBD-ri_oxGU;tqxa>(ZT=;oP%j}}56z&ZVe?To)X)q^>qT_q zCIa2P_O9wd+j!`B zLGsV|U-;)}g(+9`peojM4twSK4EzQP-44-^>q6Cn)3}FZciD5fhl=^j!>PHiX5()D zZ`M`6+&@*xOr_G~5SFRr%=>yQE}MT)>*{YAEY0%N)GvmIo`Tm#aXng4{>b&N0E)hWoU;eBHv1aM$^xmxR_X zQIMJH?q1RKcM^t1(Z5R}cRvLs72ni^;7T)0jcI-<67ncZ3D=GM9rHB$pY!Q9&NH+R z`{PdjZ>*%(YHdXV$_VdRR)g)mk( zG)C@Fqd^1ZNc^FGOF-_gDf<22 zYnARbR`6eqcdChC*p<)RbnEbhJWXxtu1yca`WM&YZjqjz@;MMGK3IDImr(f$<2~TK z{{%&&osRYUBlUF9-47+j&DZQ~%)aoK;9)U%0S@Gcffp_XRxp9nvfuTt8&6!5WYoEN zetc8n>Pmquy}$=yUN#0q9n$C7n$bGcMQpzQZ;DMvZtL#vYaFia4f*G4tv@k%)tEB% z?tD$=QBkM|stfZgUl*k`tmV}tC!*%=+GF|3_f5yYPm>zVxsNPxE7vY}@vVl={d1x4 z^BGkUr~ma1W4FrO-HLtRqkr?yvD&N22*@rhg<8b?IPVFv5o(x2R#=|$5mHwMyr z@|vBGPm_2L%ffTucE8=NU3Lrpu)-}k4W+fr!jQ^MbAr#BWohEJO;x9-lpNE( zIv|w&owoCcU|_UHAXlPmJ^nW+g=lk2Fq~-hTwZ_!qpsIvvU>4>cUhpUi{++B?P#G)q;E1BF>j1k{ zvTbgw19a?%l;EG^f2MqmAJUiuVIijHQm4KwUX_pJ2QheLA5l+t2pe9*u5r4a<(q}r z74kPv1P_UFJfV4#mu{tt+syF0%hBo^+Q-vfh8r_)_-%Y;vycZv?J+rO-EOTd2es!r zg{Q;^-pmZ}@H|skRO53CQR8WMaI)bRG^uj-Z;w$`Cz$GX_*V|x>L^3W5!GbA>Y1>=w zI0M4K^`TMk0O-Qg-wo&*58CMaKjZVbW~NK?6rKt&y!1r&4@pf>nt8ig!-NaKyo9Xh zzEjisgxp6lb1#Y~8>%(n_A?PvOe$Ph=oYi4!wk$-2vTKN+c1Hw8KS0c7t;Q;SzDEC zSZ9$3{pg{du>=@&1DWski_;rG;sgX72ml?c%WGs{(lMJVkh=pxkqnv2r(s-vK`wsV z;k>ifNyP{q5cxtZtPsU`HM5Rv0=`&vP; zPv**C9P=JrX|j-?L$N236eS8~J3jsvOOwC45VIv6cARzeB9bEVBsL49Ftl~QB))-E zw=|EN@v+Ox40V<@llAX^=KyOZ;B9ElaV45Ttcpt^igAQ4b1AFhiTUMet|)DE2Et29 zPeOo=K050I;cKr!Bt1kz03d&eqtX5E{y6!oCFEi975xj2ty|zkX!>w>t(+|o2SwEZ zGHM2d=|jR6LO_@}YXbp}h*why0kTZVW}s02+W%sf-KeF?wMKBwC#2T@(Ba!>k#s;e z`~#>NZjgISnF*8aQ(KLZ&^+*&m6exo0>Iaemaan~hP{LJP4DRg>wa&m%713%{G9^oP*0(`0^h$i9Z=lAe^Es$*m*D6<>- zA1Is<0VMEIKzRz_QZpk5Lfj!cN5>tKo+}iH421wB$U6Xu4aF^_BGe_Zpg8-!WP1ZE zSF6@m6r?f9#=QBx({my=iMp9RF|%pCYFi7&Z&ATT8M*~JPRqS#il%;{uQss)xrYl*A^yQ4y+s)vSG*a z+6x4>#kFy`ZzJVjd(E^>G~0@%5h*)ieu_us_h2_e8=VPs>Ko;yIa`=-uB3Bu0zjh+ zN@%6MLdpOUd+XQVy?sDA?**uPb%-4SEKfmmb1H}-A#7P}83&Y&cL1EO^j!jES4jUs z<93*1w|8(b03JI4=o#@ehN4vOuFsU#wt;-;7uZi*1KuN`q#&**z@Ai8iV*kCd49I! zjarImWR%N9?~GrB9g0ldB+}!&HRih3?e>X#(n-Y*3yPi(oZ;zKxOS!`{kHyI+CL@$Ymty{% zvV!ERlH&R5w$+4Z{DqR-y8O5L0YAIab2nER+s4E$8@nFv9lZ0$FQ-JRRcF*KKDx4& z-fHR04=j|oM;S|>=eC1fsV?!h_V!F|)>$iG6%{NnPpnc*xqWh4HimuHDhD~VSy@@& zpv(^{giQ;c-Vb;FzuxZT{(2**k_>%C&~x}S;rEjdiq&)OI1~W5;<7c}cFbbJ!$W^^ z`Z@AN#~*aN@4DWcIxu{l?|5@@*=T#%F*z+VHPcbxX5Ce6$6QL5N-9TM8#f%kYZUtE zripNQjWqEF$KAgJ6?LI`ibJl(s0WKV4a5xDFAhREN|EFf?tB5`Se1|Vc5b(L_dv=U3eX=l^Kt_B^umi z!_6d3g)CoEM)Led_%pzKp&j<+!{5fmgTN0Hti|%qHD63BGCnZ!W)#!9iss#N z&pr89%OpS#iib$WP+AM9YFpQShrgo&r!}&TY3Z?+y%-yKOEpr!(Poj_g&u9meE4pQ zX*&mL0JYxQq?2eV*+k87Yehl5|5KWoC;XTDuaSzUKRj^b&eLGaQ<&41q!0gD=IQcM zmWZP|uZB}cj}_o$V0UNI)Zt%Qf9j3J`r?XEY^p~FLeK4g8{gla8PDD4W5`^S=EppR zWtb6H{#h78_su-$0# z%3GGE*Dv1Q5_ZWSJx~4cNu=fMUE!IBuuJJ#S;6I=VRwQ1K}%=*hz{AffvNjEA$KZ> zj>oY(yWBc!LGvBe<(>q&BAYj~jalUkScmE29QjY;`RsaI3)o>cp*?`^WB? zJ6%x_+tgL#%`?^@1WqxRzZY_<-rQ3;2)GmkD2t`(yrb5fa9@NuIZRyWvD!PmI+k@= zk4kfjHl*~Ru}1Q3bIyv7p2uaf*ErEI9U8M<(X0I}(SMlifa{|HH|;Lwo@rPf{L%3% z#2&TwsUPJo113jkMZ)&u5cPVy^pV?T(Is9gr^7=Ag2(4l_I5wC1BtBbwTVT%UBVXo z1-i1G&k@ikgC1%d$!&>ijyCoMa(-^?tA6$03uT<&=$#@)JNTuoJf>0%xaXqjI9Xox z>jB$Be-eZ4bNs>jgL>{apwaWF7c3jzPvIcO1LA~t#D0bQQS<_T+Y7KA!CWRMCx_Gm z_4-wH>mXKpKFK0gv&y(54WtSox^4uanHvzt#lrDvL?4CEN8NsZFtwzb!|0!-3xNap6_tPj$@q0cspd3|LO!DBT2uC~T}Mu?I6 za2C?Gxg^oa(^|4V#}3XRS;83bgxoY$R?CzUuda#}3IfEgIU^zP~eLQ7JLc%>i*fddvNnAZN8yb0;UZ4xYO=~AO> z#Pa`zT6Y-FiKqf!-3E6({q{FyHR0}gj7CN$9!Il$NqYhuo|Ra3h<;-kr#wZV5+hEp z`=nw-emO!%uJf= zxI61JAy}HPX3m3iewjHyy!PcSS=#yYIQ8k>V;=pR=crJE&~6YK)kZX1jVaimK$Q?i zr8KCDleU8Z*~}N4?6hcyVzz}KuNm0rY3k{XfL0z9!L!)xK$8CYt-@v-2wqGDK|c`Z z`t7Wa-bd9^h&%S|vxg=v8ci<*C`BQ8-3xN31|c3dpjHCzEk8s;G|PnusL(%Mv`Rmj ztqo}AM*Rbtr50b481LJkAhFsy6kI1v47@aYW!YMI%su({Z_mH3qW471e+3W@@AQvn z-LifqJDMb9u11zz&_1J<C?Bc3N1v&K(93Jc{4XN_BP=>{!gv1lk+(+y^dv zF<#e;q&0s8@e9CKEtxCeB*tI3t)wIzTIPW1D~zqCE!dLxE65?a{wdgF(C~&d99e4L zu^J@Cfy{1DIdU;$X@i>Fbr|Tf+wdcBR)>Odp#)63tZzAD*{@*0Fc)X3CX*g3 z2K4ZwcqI;FPZur7uS_Wnc{W&kQkG&M;1wGJ_gjRy(conRnEBBH>EngWd%y1sx)koJan-pm>$W(r zNFHX?`$|06ke=NKrp;MbRB9UkUa#+VHvTbclhBz;QNY!WLn`6?FPid}@1R!7Ow}gR$FJ$7I>ghElUG2 za9P>-l=(5@23j=Ma%0u<&!h`4>Z>94&ruiH1iuT2@2Q>=vuebUIKTy5KrYaE`ZZ9H zH2_dWK4-+2^4hq|_aDz6FriLx}MP8PWyAnzIc0|c-h)swVpPF>Ge;| zsDCO```09v?L1C0>`4&L{Fne$Cb^$SGO6_qLKtiER|`scz0A{uX50eD zOq4kzJb-xhY)Rx1g%ko}OdSq&3x}HmOXW(E{Y9(_S^Wip`B2FF={=sBr3tsE)>zfJ;i#hxvn1j!36&QM{!>PR8{-#3rZ*^0gLFtLNQ2yG@%_)4GxwaCTW98eGkiJ%d#|R>0Nyoa~Y$X#a7u4GUNXFmLUoQmhbTK~RsQ10#|M_axXr$JS7wtH~x zr@gk6Kw`suU{UWTH8?&qt7IqKRa{vu`W7U_mh@`TQ9@oQotNU;jquG#8nrb`qLIO$ z_@6jS$`}RKy5$HA_wl5^2G@%q12=ipYub#Q95Zf#FCu~ZYh zkyRvIjh&Indo}W+bz4Byd@Js*Q;?$-!}691b)}Hs7ta@@HBMw20#eu+hI6}&ZVtJ@ zl-^MVc1oX`F|%&6CVA2YkYa+{Tys>0)c~D><&~S%&)|q-E5l*{mne93H!-nBn2dvN zF3{R$gH*$O1u7m={(O5!*++LH-2San+HhtNl9-6H-(P=rNANg+_;xs!ui-uLY|S=$ zu=_*x$`KIPV{ zysPW~JIk6O(&?el6}VI8SS(+uKd(*92h@}3Cj%w(%{zkVC(&$hqeW>|CemXS1_o^N zL}TMzU92da>Vm74Jl3k{avn-~G#BsNV+U0<--oc2ca+Ru7j>zu#M}G&q%Vm}4-4p5 zb+xz$C(i%6Dy1d>`Y}?BppxsYdkaiC59Ic>nV*WhR-nQ1|O z5lu5g%5%+$*6dSX8v|QX8G7)}VLPnH)DpQ%Cj`2ySFVkjDt8!e{NU>-IvORqwpwH6 z=3^CaO(b}1_(bMX;|$dr9&L*R*cpa+vEtP_wyL>c1xjirC!5NI%cDMRTG8%-dBxZy z<4fnqRXTePc1p{MEA1tXHa>h&h=04&#OSu|Owt%UIw~t;wlzXJXIUJ!dWl3T z*KKT&=mtz>r!Cg^w_f zOM3Xlnz`s~Dr3&CbLtmxTwFHY3%jqX9ySqO^G@Hb9g};`@S)cBbF$5^rJFXSts7>m zQ6=0-JVOSKZ?L?jF7!SHMFH12b8Vg{-Fz9zsj4aalI)~^)Jse_Naz;Rj_~+h#5LXT z7JS`1uRX?7ScDRnk&gVDU9Olhs0J2}n{Ce&X_+ICU01U2r(2^^K@?3d$A_0l8oH#~6d3sVg88tOa>67kb%r`$M$Gs2moVa(+q6`AH3H7=J92#~2;X+1Vn{ zHImYeYkvNCat8cecaaFPdyOCmF!41Z^{{?}-=tU^_Kx9$aTr4lhGvkV%BQX`b1?!j zAGI#f;zYm`3Gr&};hn7>Dw1Whu}Fxn=Bf1YzYTO2DFV)eBIW=_VdbLCAcd9dQXyYp zVTbfE+IxX8rjRDz*<6F}*9B#RGn-9F|K>zQiSSQqq=*<2zT+$+u20Rzt@irxCPs-? zWsuJ?+GidxEn{GOv1(Od4Lj|*zEufJgFs2hsE|d15P{kjj6kBgyW_yD1rJ?%1f)h& zIuIaS@#5lQ-CYkjr0qilW%p$n$}a#mwsSyWam+A;5ZQrM@zDA@1dfib9wKhAhWf6O z59RC8QHumx;xs==TW)IY+HwA2x$FoC1fcV@h_qPUM3Le4^36krIqh(Of7=PzM=-WEYv<`~|8vZ!CT8EZl=AS7P$f}u0Z+f@Xj zwR(0$4wOA40qo=MnAOCKWLV5W>KT;bBHH01oVS||o^2Q&=qmfpFjJbj8UL5#(!Q;XPs z^!D`htlN!R$0O%2z+D}HV2AlD^s%QO^bsQwk90_3zUT{wTqKhcycx*AYK=gG`OPdm zF2su6^zhG5jN?Cf;wJDHL}-9P35kZtc?XzaS;QDagM-Q%8X785kY;wVnNt94Esh+> zkP*;}YmooV6;o?Cdg!K$LhC>)6uYz4FLN!7xsx*37ej_h*{8vc`!$4^-T)#u0KUXQ zw2;TRWgG1QrgG*sHYVTS3I^I#+uVipSMb;V8ngX4g|C?S7!z@Z8ynLGW;~|vDhgbl zD~OjD-gzJXd=JAZl7fGuni4sEBDgs~te;9MkuiFx$aJ5NqO6El-ofJrp?SVMw}mHR zZ0j&*E}vu*SFiEKbg#^3nEFOWMzSw(l<{@FyhH&a5v9U)6m)KnV}h{n0^%JP7w<>? ziO^V|pFY-J@Gyvq zT3m#~P?3j-&))_I!L4o=jVOpbAV=HnubGLDOB3!XFx~g?@M!$r`wmP#e3#bUq`Dr) zmDUV2a<3BE6Ec7LOEau5Fg!&h#ck_L9iW-3$Ze{uJNN2^0;?*nl*sVc)fviz%`esr z!qZcgas^?}E#7~7{le?co)l~IO3<(NRM=2pJgu?0`OAUm zj>>6!iTF3({6B~OI{q^%r<_>BM87=)4a{3u-vwm(=geV~3yOX=9wsop)$C-CZdyp%XD}{?Cy|kkt_uA<^x1Mi_Rf~)yVdLMOQrR381ZUcicdCa#;m~`TQ%gTt z|AE`$mN@=4(Cn11{rg2T)*J@Q%`EzfDG5Y9Ix!C}ti9jKh3hGjcGUsr*rU3y-X|k1 zRszwD=z#~FloiEiuwVo`pFoUaVeslpFDwiL@<4T2*S3iF(fCyS{Jbz&7DA%?-zJpP zD&DxB*N!?+dekrcupVC=F^V>U{uKQtlIO??)`j3oq*O8Kq?_vV*9}tcbbog>B8&cW z#vHs@!DQ{q0LBM-h6-_Ql+8~XwK2Ly_jIUSr!kRSGcXlG1MNl=pdtX{Y-KNfMq=~8 zUF$bQ6Q5UJ9RdS=O$cgsa&khFRgr`?2xNHkzTFOBxeDu1?h>Gpl%Q6a`+oAs$FnlM zr;2fbUXjBWY!V~{7$M3d4IoHY?Xszv9LniLz~H(%Hwlyv>@^{;JGZ5|M=>}ql(G3I zGl#1+(O#~!j}>frF<6RG_P;`Dlq%LMI@lrg8ywao*gm^Q@=mmj=I923pw|45L%S1Wa3l`oGxhnx-?^k1Yn#{R_jg-Wh6>phdt~}yT zl8(y@Q#g-UrK_R(+9-)@2+3EjsL`{|R)@0B9X#MU+nz)4GUA$cGU>W9@a(Mpxp=t> zukeK?hGulsHpu<6*>g25+;P}HXrmnDE6A4SHZ>$)Ao;_Tb74{;PFI@%@1Iw>%y{9N z#V~qXT0#2GW&Q$L2HBR*inpB^O};%{=@YDB#Mh-><==OSk=CucEDQAsY{~)4w%q6u z<=>cENk*LcpYJ%{4ba1R)Zg=7z*P7AgOB8F0~f|0{Yk{~^+)W6;TK5p!{d$meQS*> zo-se*)=P~QlSKtwj(sjUiz#2*=pGl@{K3iQwWG5>FXA@*p800!~2RD^F ztys;eq1k3l_>!cV0=Kx8_iTyNpYow%TgXK*CuP&oSIo5!;%ZdR{Jfjqe zhS-n|JP}sAvtE$`_k*!uaNl3+n z6X+fLdtJr)rJ}D#E;-DayB}1^g-xD$jt7vQlT811h*?6Cer+UPk=a7|x=RR}Ky5mM zdt6pPS~ymtbvshwpMvcuWGUEq66Q{i(@lVbOCP-oNou)ywPP*u+v~P{=_lVOqn5(e zv(UyOQx9p*?v?AIRL-x7R}s|2IJEH=#0~_l40A1%v57WukJ{sVT$D>9mWr-z^P*EVISvX|Sc|9wGn#hJRp?b+35MBZ$S~N3WjFr0{80pV z;s<>0)W?p9suSu{l4FV2PF_0V68${Z@@8txH=NeT7^-s;9<6Hqb`|RaKdgX=rK|Mw zSAmu#)|s0{9|9wEa%cuB3S)>8NRC-SD2$?zm3T_MQ`5S?kdKWKCcRs*bqz-Mn5oz z7iw0mY1hp!`bYitlpJTTQn;ESOwPtD2XBaZ7H%AJnJM{mZ&!ttU2Lr`YHdtum9#tI zJB$p@m=9P5zekQ9(?3zw;KM8=B|9tGxo#2UnGB~JiKK0DzoPEuFT}i^Diuxt8DB}5 zd)ZmXPn>J|pP#edfp?x@DxL7eXy3cAeQ@A-vrATgP~mfkdIrp$puzIWVKGPS>$g+S zKBAz=nW{DN`PS_Nt+*7)12JuO@ib9O$_FB3Y>f4v<)Am7Wf2wKdf!mALYf! zk%~)^Z+|c4*#96pkF&@!ORK&who#;3?Dg8CmV&FyM6~-cyVlv&+ceuMtfF-FicOgb zz(U&=N6GvNL1ix0ZM{fX0>;ZT*fWXg|GDmYKZ%*ezN!E@12UZI990byZabJgDs2@j zV}ZwXQ9Kzbk*(XKT%9O8(%+U5npe82c0I4q28Eox>u%kwai?T{j}sw!?P2TM2o5vw zOxEe--5fyU1D(~r-Dl@W1FRn?cEYc;@K6`CAAM?0|IMYQ< z^V&Ri;Lt~@9>c`+r^H1#ED!RNjL*MwOrOaz(&Dp2>wDV13A#7YRK9Eb`J)NBX09Z& zMKj|Csry4aZMB%|7SZv}30158V;dPtiKr+W3W4007MDKLoN%t03lezXF>GTRvWKYM z|6(lmia`1^hs|p>ye=oMN;dO#;mWDW<+9OH`ZV>;p7P#-h~2M9Ot-@SUo78NLbB?I1s`o9{_vPQqinbzY3bVx5Gp8`8!TwOQ%KS2tcPPsc z>p6q}Y?@+fAE(;p>`0H$AA+geL!fQ?V#FZW4#Jik=3mRiuhjsx3~778Y1@Of!*F+P z6mdvbQ&)epw%3Hu@d9X3mCozhNG+w&c&Og+Cx^r7=?|pQk5J`YQ_&FHT(_8PmB?%L z#D^o0xcM2aCeuoF7cN&IO*fV>rZXi0E&)El)tr>t48>Ob7oYNZ8BHl76a}(loDJUK zcoA#+6Nr*?B!*}WriRM*1}kIVTKN$vBMB|B~j>ZRX0lA=S|*tbNf#e)y%% ztNt`s0~fYe1`iWuV=ac2vvzUEvBdEk@Lwhzjn1Fj^4$B7$-}rt$-0rl8Npy{eDaD0 zSe)hyk%xt(zY}FUx!bFslE9<9s~pv!qhfkHsYyXj#Z-9|PDOmYymkO)aNEt^i)Ytu zhw^zJG&zqMVrPKtv-W!gd5UoO_6NW9yEbDyRGz;ik%)3cFn&p38UsV5d#+EO1AAIV z{P1#;LJ+ulIzXOrC7>Bib%@@*VfRBRxX$Y!+1G$Gv=Z`9NN^|313isptp-p4NK_I* z)TiFR{HgV|ZXn(5pN=R%B0^^F5Xk#~S-jo&Zn1BWK^9gPG1;1Aj z6t5JI7#EC|o|u#JkAB~=u$U!Yr(4_ zd}!zid|!3Mbes>NwnF4Khu|p$l;VA%zK8kL#)b`!Vfp|V)s}R$zhOxd_wjD?cnkOp z;(CfGd%@7Q40yIbJhvY~BzneQHLZ{>)i}kR9&)T}k3WC5|6GX85^weOuCU)H(Foe@ z<5v-@v36cOJl0S1Q0=+Z?X;Kg)+_uVWe3w`Q<=M}Ukn<1WshlC9Vu#ZbhXDs`?S(> ztIa>Ay<6pD-@8$k|AvEP+U53z>j0sp*!}h*628Qxs!YxQaD+UH%&^F}rz5k8(VXC} z7VNS1u{u1D&g;tbcP;&Tr)6Uqu75B0K5-Z6UftC>*h_}cyVH}Y zQ^I?9@qv-f`ghOgGy$R|?Sbd$&_>=!yHIWpgsNR&zjA>*!7myLAeNi{fk-?H) z!OU~)E>%WYE7e$C$)bIySwfy#0~PE`POGhyv0P5-YIoeJ(h8a|-lQxPpA*MBCrz|) z#3)WdFS{!mx0IpAH-`Hr1?wHrm8=a@HkWX!y%Tq)>x(hmW^%FI8iR%cvOKcwtoKTH zSTL+@Z5iIkIgRS6s!FS>sz#$nt0U*)qM9G(s4(ULymjkFc<;o70-W`um%681*k%5@ z{oMh3SWHgHt7Atk-zxdEtBo+GxBaP)eStMmx0E_QZkeDYcfC)YAo~p7szYdUG|x7} z@_m-HvJ8ATO*to@_~k~wV5{U*lwUwEj;iaAq7w?E@5iQ04%-u-N`iD&-3WT_-0aFG{&6*)szT0tBp=*Ho?+wB_#j! zsV@m*&u6|rQW7I+7dZ|ZF%OO!+D{cK^>`Zk%L%STwIvD#*BTLXbPlPfi*P6XI977d z?G8GBU$jszkQhtZ%7AqK+Yy zB14JPy~;Aw#L{EX=Ht)iN1w(x2(r@hmRQc^a1s)Z4?Juon2nFRvAo~Vx?3$qVxZ3` zVL|MdTP1Z!$+kwCl8;T5+@6OHJ*Pn!*_EOzm4|17R%Yl)eR=aX%gCy1-RUKQ>Mw<- zsTFS`98d5tfOyKr#->}%&&#W&7B)8PG1|HOtR1t6&UxF;qhikA$=duh1anB4h_3R<7LH@61;+#wlJ2vWj^XKkKM{D1VnApz8h7jO{IX89yNOR7ZhCz+l2AWl< zdw(=L?pz#N*3^`WHgzjJR_O2ye`i6WEgWY$Z~DWzv%M3=o+38UvTrw6Ulq5hZl})v zMyBLVcPG7^B0X#273C|Yd7TW;v->T8?1xl4q3Ahj-M3b@S4?C(W^36)0WBc z6!Q5p#R2toi$I}7cT4>49>A9ZbJ%jn!mBq1FABG}nNj%1IGdH_>rCg_Urp#+F9tCG z_4zyndgZ|n{N~vd-y6@LH{e`7{o%1mxO@o^bdt_jv{5Rm*7ee2kpPSb>X@J@s$8P@sR4ey7~8#8&3Rc`80Av zC@pYFd*^@}pCpY^mlNdF#&GK=)& zG`q22(1Gjn>Erjh6G}AG!NFeOlFU`|ic})=k?OCBE5_{aWOx>>1QdQi{H*_$Fkhlj zLbU+)Baha+IyMUWVrPHGBzqzz^Dy!A2cP?PJbh!*EW9b7)iD_Spm1jm9joxar@m8m zL_m-|voFl~3McFD!r{9b4pdGTRH^HK&ttekxrPw$(*FL*dzpW6?_YQq!)1O>!dh^h{7e-XYRB9t+1yYgLhZz6`$7wNu1#wT;O zs~u%9^skVR-IbLU#0wwfb(|1|$ei@r1znddREYQaFUZrTqYF&9Vl1uPmR z^B@aYgn%8EHPGT9-NUJ)AA6uJF=&k-`v?k^W1!~E#6PwD*=@oo97t0htQ9JmXmy`J z+EbiPN%=F#Yzz!+9*bXSL($3w1{7vBj`ql%|C+z*cEPXZSd(_}QIT$bn0w=Phxt$C zX;UF(t9M#Fp_u~dEQ&EtbK_KM>z;`5^H=tl69TXR>`irdd+*-eo$~Rqty{S9 zcVqK!iFks6X1mLI|4a2h4G0}14T&F2wtMGi(r{h)4bqxF_H)TP9CQTRl7>7NO0vQQ zNjS-GzBDQgkgUpl`J-U4B=7V0vM+W*=jvm8zf<0Lsr&div!sPnO~AQot95_HIOBf) z+y2)fldEt2OdUUj4j}WM>wca{#CGKQ zkB?N*Hs+-zM~eVFmz}Aa9@%qiwBO66tUUNwyz_!O!(cT2?%tD%N}`YMgY7?AP&632LwPp z?&)=>bS;Tv#tQZ({Xm1GmC(~YYuZG2rChae?aCuK&l7Gv$b=fQ@ z$uMGg$6#KQSz26< zQp@XBhk;{kqSR!^6?I({YUlIWA`*zV2* zT~#KAe$Yr&&IQzNQbjJ~9LGxQ&LksYcu7_gfb{oDiyzd?-PEl^IjSQ3g62Rh-*Xt( z_m%leHm@9d$LV!f^(s(g72dcVf3K3#ktN7fTUu8Keo*QUM3P=NPiL@1I_rk6F&Jg% zzTG24zH=@1`O)QEjjOzCngbPguJXb^g@n;zPIEGx{T&uCItqvsbuz4nSurCQV@NmBf^sS7s&cw@F##Pa)v}gsx1=niCiPzKfQ+kBO1nk zd>K`_f(-VS7m&I39J)W%>zLv-DtO)7Wvuv*`f-kr7Zg{Xjqc#q;k?oFd1XbjL;dlv zz9c-?0(LSZiEiPyiPE~hGuE6ww7icf;y&BgzB<%!K9MYu%o(PhCx3W?TlzOSSKU}i zS3&!X00QqEfr&H${xdh^KVH;-&%L!$uAB=I?J(vBx^#&6@eC34>JW860~C5hPUX9y zkeuxR#0Zkq&562L6iO%+Q~?<*17g*NU-1xaQk)8D(3i&Jj>Z=Q$})uT8wEb6dp=8u z`mSMfyFA(}V$*xCzQqs_=Am>H=pqj$H@(qF_WSAI&C~dg)o{*j*eQPAJ2oaKEqxxj z1TtagHR3mpFaD^Vrs`41I%{;l6Lzuh;vFtCXvTs5E0}he%`^p$REq}W+;puk@*xd+ z3%qGKRW@-N_hrjYxUUuiHb!V*5llI)RP1{hNUD7oO8Uglr4!}ly17An- zOuLeEAo9LAPGu#KL{AC2z`Mi==2P0A+&>5%%*U#$s>Z4?AA0S#J@)2q$szXy+{NTieBS|4Xyb z3tp0cc6cQ@w|8i$b!(yHp!D>xvitwE6#0VaNM}r1Cx^9pIqw|%sT%jV{Pw+V)fvm93 z;f7saKI@Us%e`4zKnOyhQ8JKL59>G(0v5WgMB*i}R`B;LB=~$+mbuBBc`p6Oz$vcy zJ|@_z36^VuN&qUKU&IOS`s+W*5t;3#*QN(TO@hZ$=6SGXuxB!?^-OHENb;pD0DO8K-nxq>-g%nv-U$bsx`Ej7733au zKuE%^Yq{N{#4q^-1=GT1ba(x^&(p3%E@^DZ^dD|ZH+dmRT*{>z%nq^@#SZ4ZbUP(0 z^A1Ul+BF(70e)=rQm^tde7v(K@>mz>I+hUZD94n8xc2QtpYBH=p%VQI`O{v4M}ib^ zm9k=%|+*%QQb9pLiT; z*HMI65o5hPgjRY9R4DP1Omq6=`Q5&oM=M8DrwxY(-9BQ|CX_#oZ~P)IDk@s7Scfd@ zED)6L?m7c}{8)sF!*LIZ-mI#rsf1Vd(jAa2&pTWKb!jL>_HcRZu6b#Fl&r}+EY#A_}=6wDAEwC zI{fbOv9WKamCd<3M28yi_-RVMfIOqu=^Y3<2poUoOiFm+5HwG}ulzm>^fAhBv+7tE zF*8y8q6)Ya7o1_yuh`)un6Lu_x7?5-&R z?oCJH)8Evmn4f`?@MIs?PGHsMM5dxa#~<_~Wp3N15F-^)5*<;x^<&5f9d$GC0ddZ? zjs%V+P@j&H+^19qxB4Wvxk!Fj&_>C%-bF}faC<#{eNrM+OV3Vsp4BV7B4t7qiQmJV z24fA8dpTn+Lc@)~fj|guFpjP@b3UZI;<;Bpb#qqbQptwcd1PKtd;PgwvTFZbaOnkj zyb&2(#MN_gY5;dCWMW|;VVi=xBSr^bh`ce*6i1*g>4>41$FtB6s%#i)%o`3Wf_p%g z0^p)>f{Omk95qjDr@%n;QVGWncv^!HE@8g-^#ykuhPlVXcG0&Ma!kAffyA%7 zQuw!BeD+)rNiG!EE-l9z!%xq+PHKz1`7J^uMQ4O3xzbam*BE6A03&QKaQKk7(m)~jTry+E5~BI2svoz z=5P2-NKQfF2G=R07FGY_Y;(=vE|sJos?$8%Vb$DEI$mP=N?XI8alGNuI0p$O$cRS> zlYzrxyXDc5wI6N@$0ED(fBwY?OiDu#>~m8?8=Skey5dE zs1y5>pZ^p9r}qE!`jJ|rZV1`L|69tCUKu#18IM(20GZD|KO78HJnlmQ(DKRy@be^a zEk?|2F%VQ4s(oo4W>NKpve)$%yog= zLKplgij{LkD&#N1giyX5rvf}gOu>YbRe>n~l8!VbkSWmldX8ObxJ-GywQD7#giJus71gv^XvAa}6co&hAWv?4v1<-|iDv;GN7#~x^c3TGE1_{7 zrkg&%IFUHFU_ShG&i#k9-0($_#cad!cNYwr7t)ojD5CX** z25kVNGfbXeaL>QNN3YVjErz{x%5^UCctxWTxz0t{am_#{kL2+l!;-l;6HMJ&@xH0S zYPe(palrvI$r)sM1`nYt#7^r}_TOmV!U7M)6I46GH`sMTRKgH~Ee7J_jOg6%-TESa z(l3t52};Y!_#?0uM7)`oLT*P*7Z#Nm9__9l&yqAwgSvk<^iC?x8@cPdgnqt=>G9A0 zyzS!WUg5x$eFKv%0h}XzefEQWFs6~71MmZyRRVvma?tWK#cF?YYS~~(miUQtQNY;y^eYCjZt=G$a^uh*BSc(EO0qjemUkwA%0BIub zBA^-%f)qtqTKkslPr6T!iNj<;XhY!da`F>VPODwHQ4~c)w?lEF!7h28xbKRs6e;!#7{yU zg><*H<>m1Q2M4{Fhk;0qfv4N~6^UbpjY_Mc%Z?J(JGtt?fq}RPqvK$oeO$n`wAky{ zxXH=Mp&NU{VX<=t6uE1vqdl%qV7CMC0y_I$w5hdqA#Ha+9OB@0C{Dk zhyqn(8EZH)p{Km|E(gt|$9+mPAoZ9q`?K7OplZj^5nX~d)jaZr47TuR$G2dDQ2pV? zJJXKNS&WX{dl{L6!*wYz$yVQ zCnF7T%s`w@W$(PJLOVEC13Nrs2~|SUH*>8q7!(SG7I0LGdk0n090qcPfx3eVXx4KP zcM(%ufu*+&h$Aal2^hkwXvTkqvKARywKG8!0_#=%?jkOK6MYWzd}g60&nYgBL=G>= z`&&<TL1 z(Kruus3+{uKra6bLt?-2bnnz2`uSWY?Qvphk1x=MAxtMmVWc4;2%dQdfLS$z3N%n9 z?Cy7g^S&^2k`Px{87jAcaoc*rX3i04njIkI{RpzVyRI8BlpTP)eb)AO1)ISLvS#pE zk scalable start enabled. +Charmrun> started all node programs in 0.133 seconds. +Charm++> Running in non-SMP mode: 2 processes (PEs) +Converse/Charm++ Commit ID: v7.1.0-devel-114-ge1a85fbae +Charm++ built with internal error checking enabled. +Do not use for performance benchmarking (build without --enable-error-checking to do so). +Isomalloc> Synchronized global address space. +Charm++> scheduler running in netpoll mode. +CharmLB> Load balancer assumes all CPUs are same. +Charm4py> Running Charm4py version 1.0 on Python 3.8.10 (CPython). Using 'cython' interface to access Charm++ +Charm++> Running on 1 hosts (1 sockets x 2 cores x 1 PUs = 2-way SMP) +Charm++> cpu topology info is gathered in 0.001 seconds. +My PE: 0 +[0] neighbor = <__main__.PingArrayProxy object at 0x7ffff7517490> +My PE: 1 +[1] neighbor = <__main__.PingArrayProxy object at 0x7ffff7517d30> +Array length = 1 +RES:: [plain] 1 40.15648365020752 +Array length = 2 +RES:: [plain] 2 39.112091064453125 +Array length = 4 +RES:: [plain] 4 38.93387317657471 +Array length = 8 +RES:: [plain] 8 41.063129901885986 +Array length = 16 +RES:: [plain] 16 41.2411093711853 +Array length = 32 +RES:: [plain] 32 41.03374481201172 +Array length = 64 +RES:: [plain] 64 37.12218999862671 +Array length = 128 +RES:: [plain] 128 39.837539196014404 +Array length = 256 +RES:: [plain] 256 40.46440124511719 +Array length = 512 +RES:: [plain] 512 44.843971729278564 +Array length = 1024 +RES:: [plain] 1024 45.204877853393555 +Array length = 2048 +RES:: [plain] 2048 43.63143444061279 +Array length = 4096 +RES:: [plain] 4096 57.63280391693115 +Array length = 8192 +RES:: [plain] 8192 76.37739181518555 +Array length = 16384 +RES:: [plain] 16384 114.97676372528076 +[Partition 0][Node 0] End of program +Charmrun> scalable start enabled. +Charmrun> started all node programs in 0.138 seconds. +Charm++> Running in non-SMP mode: 2 processes (PEs) +Converse/Charm++ Commit ID: v7.1.0-devel-114-ge1a85fbae +Charm++ built with internal error checking enabled. +Do not use for performance benchmarking (build without --enable-error-checking to do so). +Isomalloc> Synchronized global address space. +Charm++> scheduler running in netpoll mode. +CharmLB> Load balancer assumes all CPUs are same. +Charm4py> Running Charm4py version 1.0 on Python 3.8.10 (CPython). Using 'cython' interface to access Charm++ +Charm++> Running on 1 hosts (1 sockets x 2 cores x 1 PUs = 2-way SMP) +Charm++> cpu topology info is gathered in 0.001 seconds. +My PE: 0 +[0] neighbor = <__main__.PingArrayProxy object at 0x7ffff7516490> +My PE: 1 +[1] neighbor = <__main__.PingArrayProxy object at 0x7ffff7516d30> +Array length = 1 +RES:: [plain] 1 39.1005277633667 +Array length = 2 +RES:: [plain] 2 38.743793964385986 +Array length = 4 +RES:: [plain] 4 43.201565742492676 +Array length = 8 +RES:: [plain] 8 38.9094352722168 +Array length = 16 +RES:: [plain] 16 41.18305444717407 +Array length = 32 +RES:: [plain] 32 40.7448410987854 +Array length = 64 +RES:: [plain] 64 42.01465845108032 +Array length = 128 +RES:: [plain] 128 45.90874910354614 +Array length = 256 +RES:: [plain] 256 45.57478427886963 +Array length = 512 +RES:: [plain] 512 50.64809322357178 +Array length = 1024 +RES:: [plain] 1024 55.482685565948486 +Array length = 2048 +RES:: [plain] 2048 49.16834831237793 +Array length = 4096 +RES:: [plain] 4096 54.6494722366333 +Array length = 8192 +RES:: [plain] 8192 82.3284387588501 +Array length = 16384 +RES:: [plain] 16384 112.06519603729248 +[Partition 0][Node 0] End of program +Charmrun> scalable start enabled. +Charmrun> started all node programs in 0.152 seconds. +Charm++> Running in non-SMP mode: 2 processes (PEs) +Converse/Charm++ Commit ID: v7.1.0-devel-114-ge1a85fbae +Charm++ built with internal error checking enabled. +Do not use for performance benchmarking (build without --enable-error-checking to do so). +Isomalloc> Synchronized global address space. +Charm++> scheduler running in netpoll mode. +CharmLB> Load balancer assumes all CPUs are same. +Charm4py> Running Charm4py version 1.0 on Python 3.8.10 (CPython). Using 'cython' interface to access Charm++ +Charm++> Running on 1 hosts (1 sockets x 2 cores x 1 PUs = 2-way SMP) +Charm++> cpu topology info is gathered in 0.001 seconds. +My PE: 0 +[0] neighbor = <__main__.PingArrayProxy object at 0x7ffff7516490> +My PE: 1 +[1] neighbor = <__main__.PingArrayProxy object at 0x7ffff7516d30> +Array length = 1 +RES:: [plain] 1 45.69602012634277 +Array length = 2 +RES:: [plain] 2 43.62159967422485 +Array length = 4 +RES:: [plain] 4 45.28534412384033 +Array length = 8 +RES:: [plain] 8 42.55479574203491 +Array length = 16 +RES:: [plain] 16 41.91511869430542 +Array length = 32 +RES:: [plain] 32 41.01341962814331 +Array length = 64 +RES:: [plain] 64 40.20887613296509 +Array length = 128 +RES:: [plain] 128 40.787458419799805 +Array length = 256 +RES:: [plain] 256 43.34598779678345 +Array length = 512 +RES:: [plain] 512 41.78130626678467 +Array length = 1024 +RES:: [plain] 1024 41.22030735015869 +Array length = 2048 +RES:: [plain] 2048 46.240150928497314 +Array length = 4096 +RES:: [plain] 4096 46.45693302154541 +Array length = 8192 +RES:: [plain] 8192 73.711097240448 +Array length = 16384 +RES:: [plain] 16384 95.82799673080444 +[Partition 0][Node 0] End of program +Charmrun> scalable start enabled. +Charmrun> started all node programs in 0.132 seconds. +Charm++> Running in non-SMP mode: 2 processes (PEs) +Converse/Charm++ Commit ID: v7.1.0-devel-114-ge1a85fbae +Charm++ built with internal error checking enabled. +Do not use for performance benchmarking (build without --enable-error-checking to do so). +Isomalloc> Synchronized global address space. +Charm++> scheduler running in netpoll mode. +CharmLB> Load balancer assumes all CPUs are same. +Charm4py> Running Charm4py version 1.0 on Python 3.8.10 (CPython). Using 'cython' interface to access Charm++ +Charm++> Running on 1 hosts (1 sockets x 2 cores x 1 PUs = 2-way SMP) +Charm++> cpu topology info is gathered in 0.001 seconds. +My PE: 0 +[0] neighbor = <__main__.PingArrayProxy object at 0x7ffff7516490> +My PE: 1 +[1] neighbor = <__main__.PingArrayProxy object at 0x7ffff7516d30> +Array length = 1 +RES:: [plain] 1 41.44507646560669 +Array length = 2 +RES:: [plain] 2 44.38084363937378 +Array length = 4 +RES:: [plain] 4 43.155670166015625 +Array length = 8 +RES:: [plain] 8 39.33978080749512 +Array length = 16 +RES:: [plain] 16 39.40623998641968 +Array length = 32 +RES:: [plain] 32 41.42165184020996 +Array length = 64 +RES:: [plain] 64 40.746212005615234 +Array length = 128 +RES:: [plain] 128 40.216803550720215 +Array length = 256 +RES:: [plain] 256 40.44085741043091 +Array length = 512 +RES:: [plain] 512 43.04009675979614 +Array length = 1024 +RES:: [plain] 1024 42.25742816925049 +Array length = 2048 +RES:: [plain] 2048 43.71988773345947 +Array length = 4096 +RES:: [plain] 4096 50.69148540496826 +Array length = 8192 +RES:: [plain] 8192 74.50670003890991 +Array length = 16384 +RES:: [plain] 16384 108.46364498138428 +[Partition 0][Node 0] End of program +Charmrun> scalable start enabled. +Charmrun> started all node programs in 0.149 seconds. +Charm++> Running in non-SMP mode: 2 processes (PEs) +Converse/Charm++ Commit ID: v7.1.0-devel-114-ge1a85fbae +Charm++ built with internal error checking enabled. +Do not use for performance benchmarking (build without --enable-error-checking to do so). +Isomalloc> Synchronized global address space. +Charm++> scheduler running in netpoll mode. +CharmLB> Load balancer assumes all CPUs are same. +Charm4py> Running Charm4py version 1.0 on Python 3.8.10 (CPython). Using 'cython' interface to access Charm++ +Charm++> Running on 1 hosts (1 sockets x 2 cores x 1 PUs = 2-way SMP) +Charm++> cpu topology info is gathered in 0.001 seconds. +My PE: 0 +[0] neighbor = <__main__.PingArrayProxy object at 0x7ffff7516490> +My PE: 1 +[1] neighbor = <__main__.PingArrayProxy object at 0x7ffff7516d30> +Array length = 1 +RES:: [plain] 1 63.12370300292969 +Array length = 2 +RES:: [plain] 2 44.25305128097534 +Array length = 4 +RES:: [plain] 4 47.86252975463867 +Array length = 8 +RES:: [plain] 8 49.58748817443848 +Array length = 16 +RES:: [plain] 16 45.912861824035645 +Array length = 32 +RES:: [plain] 32 52.34187841415405 +Array length = 64 +RES:: [plain] 64 45.03321647644043 +Array length = 128 +RES:: [plain] 128 45.86869478225708 +Array length = 256 +RES:: [plain] 256 47.442495822906494 +Array length = 512 +RES:: [plain] 512 46.772122383117676 +Array length = 1024 +RES:: [plain] 1024 48.66296052932739 +Array length = 2048 +RES:: [plain] 2048 49.2098331451416 +Array length = 4096 +RES:: [plain] 4096 52.45620012283325 +Array length = 8192 +RES:: [plain] 8192 78.18669080734253 +Array length = 16384 +RES:: [plain] 16384 103.56521606445312 +[Partition 0][Node 0] End of program diff --git a/.tmp/udp-cffi-task-bench.log b/.tmp/udp-cffi-task-bench.log new file mode 100644 index 00000000..d4758d91 --- /dev/null +++ b/.tmp/udp-cffi-task-bench.log @@ -0,0 +1,656 @@ +Charmrun> scalable start enabled. +Charmrun> started all node programs in 0.174 seconds. +Charm++> Running in non-SMP mode: 2 processes (PEs) +Converse/Charm++ Commit ID: v7.1.0-devel-115-ga4b8220a7 +Charm++ built with internal error checking enabled. +Do not use for performance benchmarking (build without --enable-error-checking to do so). +Isomalloc> Synchronized global address space. +Charm++> scheduler running in netpoll mode. +CharmLB> Load balancer assumes all CPUs are same. +Charm4py> Running Charm4py version 1.0 on Python 3.8.10 (CPython). Using 'cython' interface to access Charm++ +Charm++> Running on 1 hosts (1 sockets x 2 cores x 1 PUs = 2-way SMP) +Charm++> cpu topology info is gathered in 0.000 seconds. +Running Task Benchmark + Configuration: + Task Graph 1: + Time Steps: 4 + Max Width: 4 + Dependence Type: stencil_1d + Radix: 3 + Period: 0 + Fraction Connected: 0.250000 + Kernel: + Type: compute_bound + Iterations: 64 + Samples: 16 + Imbalance: 0.000000 + Output Bytes: 16 + Scratch Bytes: 0 +Time for last run: 0.0097006599999645 +Time for last run: 0.0005995039999788787 +Total Tasks 16 +Total Dependencies 30 + Unable to estimate local/nonlocal dependencies +Total FLOPs 132096 +Total Bytes 0 +Elapsed Time 5.995040e-04 seconds +FLOP/s 2.203421e+08 +B/s 0.000000e+00 +Transfer (estimated): + Unable to estimate local/nonlocal transfer +[Partition 0][Node 0] End of program +Charmrun> scalable start enabled. +Charmrun> started all node programs in 0.174 seconds. +Charm++> Running in non-SMP mode: 2 processes (PEs) +Converse/Charm++ Commit ID: v7.1.0-devel-115-ga4b8220a7 +Charm++ built with internal error checking enabled. +Do not use for performance benchmarking (build without --enable-error-checking to do so). +Isomalloc> Synchronized global address space. +Charm++> scheduler running in netpoll mode. +CharmLB> Load balancer assumes all CPUs are same. +Charm4py> Running Charm4py version 1.0 on Python 3.8.10 (CPython). Using 'cython' interface to access Charm++ +Charm++> Running on 1 hosts (1 sockets x 2 cores x 1 PUs = 2-way SMP) +Charm++> cpu topology info is gathered in 0.000 seconds. +Running Task Benchmark + Configuration: + Task Graph 1: + Time Steps: 4 + Max Width: 4 + Dependence Type: stencil_1d + Radix: 3 + Period: 0 + Fraction Connected: 0.250000 + Kernel: + Type: compute_bound + Iterations: 128 + Samples: 16 + Imbalance: 0.000000 + Output Bytes: 16 + Scratch Bytes: 0 +Time for last run: 0.008754253999995854 +Time for last run: 0.0005851040000379726 +Total Tasks 16 +Total Dependencies 30 + Unable to estimate local/nonlocal dependencies +Total FLOPs 263168 +Total Bytes 0 +Elapsed Time 5.851040e-04 seconds +FLOP/s 4.497799e+08 +B/s 0.000000e+00 +Transfer (estimated): + Unable to estimate local/nonlocal transfer +[Partition 0][Node 0] End of program +Charmrun> scalable start enabled. +Charmrun> started all node programs in 0.174 seconds. +Charm++> Running in non-SMP mode: 2 processes (PEs) +Converse/Charm++ Commit ID: v7.1.0-devel-115-ga4b8220a7 +Charm++ built with internal error checking enabled. +Do not use for performance benchmarking (build without --enable-error-checking to do so). +Isomalloc> Synchronized global address space. +Charm++> scheduler running in netpoll mode. +CharmLB> Load balancer assumes all CPUs are same. +Charm4py> Running Charm4py version 1.0 on Python 3.8.10 (CPython). Using 'cython' interface to access Charm++ +Charm++> Running on 1 hosts (1 sockets x 2 cores x 1 PUs = 2-way SMP) +Charm++> cpu topology info is gathered in 0.000 seconds. +Running Task Benchmark + Configuration: + Task Graph 1: + Time Steps: 4 + Max Width: 4 + Dependence Type: stencil_1d + Radix: 3 + Period: 0 + Fraction Connected: 0.250000 + Kernel: + Type: compute_bound + Iterations: 256 + Samples: 16 + Imbalance: 0.000000 + Output Bytes: 16 + Scratch Bytes: 0 +Time for last run: 0.00867615399999977 +Time for last run: 0.0005850040000154877 +Total Tasks 16 +Total Dependencies 30 + Unable to estimate local/nonlocal dependencies +Total FLOPs 525312 +Total Bytes 0 +Elapsed Time 5.850040e-04 seconds +FLOP/s 8.979631e+08 +B/s 0.000000e+00 +Transfer (estimated): + Unable to estimate local/nonlocal transfer +[Partition 0][Node 0] End of program +Charmrun> scalable start enabled. +Charmrun> started all node programs in 0.173 seconds. +Charm++> Running in non-SMP mode: 2 processes (PEs) +Converse/Charm++ Commit ID: v7.1.0-devel-115-ga4b8220a7 +Charm++ built with internal error checking enabled. +Do not use for performance benchmarking (build without --enable-error-checking to do so). +Isomalloc> Synchronized global address space. +Charm++> scheduler running in netpoll mode. +CharmLB> Load balancer assumes all CPUs are same. +Charm4py> Running Charm4py version 1.0 on Python 3.8.10 (CPython). Using 'cython' interface to access Charm++ +Charm++> Running on 1 hosts (1 sockets x 2 cores x 1 PUs = 2-way SMP) +Charm++> cpu topology info is gathered in 0.000 seconds. +Running Task Benchmark + Configuration: + Task Graph 1: + Time Steps: 4 + Max Width: 4 + Dependence Type: stencil_1d + Radix: 3 + Period: 0 + Fraction Connected: 0.250000 + Kernel: + Type: compute_bound + Iterations: 512 + Samples: 16 + Imbalance: 0.000000 + Output Bytes: 16 + Scratch Bytes: 0 +Time for last run: 0.008673054000041702 +Time for last run: 0.0006215039999801775 +Total Tasks 16 +Total Dependencies 30 + Unable to estimate local/nonlocal dependencies +Total FLOPs 1049600 +Total Bytes 0 +Elapsed Time 6.215040e-04 seconds +FLOP/s 1.688807e+09 +B/s 0.000000e+00 +Transfer (estimated): + Unable to estimate local/nonlocal transfer +[Partition 0][Node 0] End of program +Charmrun> scalable start enabled. +Charmrun> started all node programs in 0.173 seconds. +Charm++> Running in non-SMP mode: 2 processes (PEs) +Converse/Charm++ Commit ID: v7.1.0-devel-115-ga4b8220a7 +Charm++ built with internal error checking enabled. +Do not use for performance benchmarking (build without --enable-error-checking to do so). +Isomalloc> Synchronized global address space. +Charm++> scheduler running in netpoll mode. +CharmLB> Load balancer assumes all CPUs are same. +Charm4py> Running Charm4py version 1.0 on Python 3.8.10 (CPython). Using 'cython' interface to access Charm++ +Charm++> Running on 1 hosts (1 sockets x 2 cores x 1 PUs = 2-way SMP) +Charm++> cpu topology info is gathered in 0.000 seconds. +Running Task Benchmark + Configuration: + Task Graph 1: + Time Steps: 4 + Max Width: 4 + Dependence Type: stencil_1d + Radix: 3 + Period: 0 + Fraction Connected: 0.250000 + Kernel: + Type: compute_bound + Iterations: 1024 + Samples: 16 + Imbalance: 0.000000 + Output Bytes: 16 + Scratch Bytes: 0 +Time for last run: 0.008711155000014514 +Time for last run: 0.000591804000009688 +Total Tasks 16 +Total Dependencies 30 + Unable to estimate local/nonlocal dependencies +Total FLOPs 2098176 +Total Bytes 0 +Elapsed Time 5.918040e-04 seconds +FLOP/s 3.545390e+09 +B/s 0.000000e+00 +Transfer (estimated): + Unable to estimate local/nonlocal transfer +[Partition 0][Node 0] End of program +Charmrun> scalable start enabled. +Charmrun> started all node programs in 0.172 seconds. +Charm++> Running in non-SMP mode: 2 processes (PEs) +Converse/Charm++ Commit ID: v7.1.0-devel-115-ga4b8220a7 +Charm++ built with internal error checking enabled. +Do not use for performance benchmarking (build without --enable-error-checking to do so). +Isomalloc> Synchronized global address space. +Charm++> scheduler running in netpoll mode. +CharmLB> Load balancer assumes all CPUs are same. +Charm4py> Running Charm4py version 1.0 on Python 3.8.10 (CPython). Using 'cython' interface to access Charm++ +Charm++> Running on 1 hosts (1 sockets x 2 cores x 1 PUs = 2-way SMP) +Charm++> cpu topology info is gathered in 0.000 seconds. +Running Task Benchmark + Configuration: + Task Graph 1: + Time Steps: 4 + Max Width: 4 + Dependence Type: stencil_1d + Radix: 3 + Period: 0 + Fraction Connected: 0.250000 + Kernel: + Type: compute_bound + Iterations: 2048 + Samples: 16 + Imbalance: 0.000000 + Output Bytes: 16 + Scratch Bytes: 0 +Time for last run: 0.008710554000003867 +Time for last run: 0.0006275039999650289 +Total Tasks 16 +Total Dependencies 30 + Unable to estimate local/nonlocal dependencies +Total FLOPs 4195328 +Total Bytes 0 +Elapsed Time 6.275040e-04 seconds +FLOP/s 6.685739e+09 +B/s 0.000000e+00 +Transfer (estimated): + Unable to estimate local/nonlocal transfer +[Partition 0][Node 0] End of program +Charmrun> scalable start enabled. +Charmrun> started all node programs in 0.173 seconds. +Charm++> Running in non-SMP mode: 2 processes (PEs) +Converse/Charm++ Commit ID: v7.1.0-devel-115-ga4b8220a7 +Charm++ built with internal error checking enabled. +Do not use for performance benchmarking (build without --enable-error-checking to do so). +Isomalloc> Synchronized global address space. +Charm++> scheduler running in netpoll mode. +CharmLB> Load balancer assumes all CPUs are same. +Charm4py> Running Charm4py version 1.0 on Python 3.8.10 (CPython). Using 'cython' interface to access Charm++ +Charm++> Running on 1 hosts (1 sockets x 2 cores x 1 PUs = 2-way SMP) +Charm++> cpu topology info is gathered in 0.000 seconds. +Running Task Benchmark + Configuration: + Task Graph 1: + Time Steps: 4 + Max Width: 4 + Dependence Type: stencil_1d + Radix: 3 + Period: 0 + Fraction Connected: 0.250000 + Kernel: + Type: compute_bound + Iterations: 4096 + Samples: 16 + Imbalance: 0.000000 + Output Bytes: 16 + Scratch Bytes: 0 +Time for last run: 0.008808055000031345 +Time for last run: 0.0006666049999921597 +Total Tasks 16 +Total Dependencies 30 + Unable to estimate local/nonlocal dependencies +Total FLOPs 8389632 +Total Bytes 0 +Elapsed Time 6.666050e-04 seconds +FLOP/s 1.258561e+10 +B/s 0.000000e+00 +Transfer (estimated): + Unable to estimate local/nonlocal transfer +[Partition 0][Node 0] End of program +Charmrun> scalable start enabled. +Charmrun> started all node programs in 0.174 seconds. +Charm++> Running in non-SMP mode: 2 processes (PEs) +Converse/Charm++ Commit ID: v7.1.0-devel-115-ga4b8220a7 +Charm++ built with internal error checking enabled. +Do not use for performance benchmarking (build without --enable-error-checking to do so). +Isomalloc> Synchronized global address space. +Charm++> scheduler running in netpoll mode. +CharmLB> Load balancer assumes all CPUs are same. +Charm4py> Running Charm4py version 1.0 on Python 3.8.10 (CPython). Using 'cython' interface to access Charm++ +Charm++> Running on 1 hosts (1 sockets x 2 cores x 1 PUs = 2-way SMP) +Charm++> cpu topology info is gathered in 0.000 seconds. +Running Task Benchmark + Configuration: + Task Graph 1: + Time Steps: 4 + Max Width: 4 + Dependence Type: stencil_1d + Radix: 3 + Period: 0 + Fraction Connected: 0.250000 + Kernel: + Type: compute_bound + Iterations: 8192 + Samples: 16 + Imbalance: 0.000000 + Output Bytes: 16 + Scratch Bytes: 0 +Time for last run: 0.008760154000015064 +Time for last run: 0.0007135039999752735 +Total Tasks 16 +Total Dependencies 30 + Unable to estimate local/nonlocal dependencies +Total FLOPs 16778240 +Total Bytes 0 +Elapsed Time 7.135040e-04 seconds +FLOP/s 2.351527e+10 +B/s 0.000000e+00 +Transfer (estimated): + Unable to estimate local/nonlocal transfer +[Partition 0][Node 0] End of program +Charmrun> scalable start enabled. +Charmrun> started all node programs in 0.188 seconds. +Charm++> Running in non-SMP mode: 2 processes (PEs) +Converse/Charm++ Commit ID: v7.1.0-devel-115-ga4b8220a7 +Charm++ built with internal error checking enabled. +Do not use for performance benchmarking (build without --enable-error-checking to do so). +Isomalloc> Synchronized global address space. +Charm++> scheduler running in netpoll mode. +CharmLB> Load balancer assumes all CPUs are same. +Charm4py> Running Charm4py version 1.0 on Python 3.8.10 (CPython). Using 'cython' interface to access Charm++ +Charm++> Running on 1 hosts (1 sockets x 2 cores x 1 PUs = 2-way SMP) +Charm++> cpu topology info is gathered in 0.000 seconds. +Running Task Benchmark + Configuration: + Task Graph 1: + Time Steps: 4 + Max Width: 4 + Dependence Type: stencil_1d + Radix: 3 + Period: 0 + Fraction Connected: 0.250000 + Kernel: + Type: compute_bound + Iterations: 64 + Samples: 16 + Imbalance: 0.000000 + Output Bytes: 16 + Scratch Bytes: 0 +Time for last run: 0.009781355000029635 +Time for last run: 0.0009580060000189405 +Total Tasks 16 +Total Dependencies 30 + Unable to estimate local/nonlocal dependencies +Total FLOPs 132096 +Total Bytes 0 +Elapsed Time 9.580060e-04 seconds +FLOP/s 1.378864e+08 +B/s 0.000000e+00 +Transfer (estimated): + Unable to estimate local/nonlocal transfer +[Partition 0][Node 0] End of program +Charmrun> scalable start enabled. +Charmrun> started all node programs in 0.185 seconds. +Charm++> Running in non-SMP mode: 2 processes (PEs) +Converse/Charm++ Commit ID: v7.1.0-devel-115-ga4b8220a7 +Charm++ built with internal error checking enabled. +Do not use for performance benchmarking (build without --enable-error-checking to do so). +Isomalloc> Synchronized global address space. +Charm++> scheduler running in netpoll mode. +CharmLB> Load balancer assumes all CPUs are same. +Charm4py> Running Charm4py version 1.0 on Python 3.8.10 (CPython). Using 'cython' interface to access Charm++ +Charm++> Running on 1 hosts (1 sockets x 2 cores x 1 PUs = 2-way SMP) +Charm++> cpu topology info is gathered in 0.000 seconds. +Running Task Benchmark + Configuration: + Task Graph 1: + Time Steps: 4 + Max Width: 4 + Dependence Type: stencil_1d + Radix: 3 + Period: 0 + Fraction Connected: 0.250000 + Kernel: + Type: compute_bound + Iterations: 128 + Samples: 16 + Imbalance: 0.000000 + Output Bytes: 16 + Scratch Bytes: 0 +Time for last run: 0.010087557000019842 +Time for last run: 0.0009556059999908939 +Total Tasks 16 +Total Dependencies 30 + Unable to estimate local/nonlocal dependencies +Total FLOPs 263168 +Total Bytes 0 +Elapsed Time 9.556060e-04 seconds +FLOP/s 2.753938e+08 +B/s 0.000000e+00 +Transfer (estimated): + Unable to estimate local/nonlocal transfer +[Partition 0][Node 0] End of program +Charmrun> scalable start enabled. +Charmrun> started all node programs in 0.183 seconds. +Charm++> Running in non-SMP mode: 2 processes (PEs) +Converse/Charm++ Commit ID: v7.1.0-devel-115-ga4b8220a7 +Charm++ built with internal error checking enabled. +Do not use for performance benchmarking (build without --enable-error-checking to do so). +Isomalloc> Synchronized global address space. +Charm++> scheduler running in netpoll mode. +CharmLB> Load balancer assumes all CPUs are same. +Charm4py> Running Charm4py version 1.0 on Python 3.8.10 (CPython). Using 'cython' interface to access Charm++ +Charm++> Running on 1 hosts (1 sockets x 2 cores x 1 PUs = 2-way SMP) +Charm++> cpu topology info is gathered in 0.000 seconds. +Running Task Benchmark + Configuration: + Task Graph 1: + Time Steps: 4 + Max Width: 4 + Dependence Type: stencil_1d + Radix: 3 + Period: 0 + Fraction Connected: 0.250000 + Kernel: + Type: compute_bound + Iterations: 256 + Samples: 16 + Imbalance: 0.000000 + Output Bytes: 16 + Scratch Bytes: 0 +Time for last run: 0.00945535400001063 +Time for last run: 0.0009060049999902731 +Total Tasks 16 +Total Dependencies 30 + Unable to estimate local/nonlocal dependencies +Total FLOPs 525312 +Total Bytes 0 +Elapsed Time 9.060050e-04 seconds +FLOP/s 5.798114e+08 +B/s 0.000000e+00 +Transfer (estimated): + Unable to estimate local/nonlocal transfer +[Partition 0][Node 0] End of program +Charmrun> scalable start enabled. +Charmrun> started all node programs in 0.182 seconds. +Charm++> Running in non-SMP mode: 2 processes (PEs) +Converse/Charm++ Commit ID: v7.1.0-devel-115-ga4b8220a7 +Charm++ built with internal error checking enabled. +Do not use for performance benchmarking (build without --enable-error-checking to do so). +Isomalloc> Synchronized global address space. +Charm++> scheduler running in netpoll mode. +CharmLB> Load balancer assumes all CPUs are same. +Charm4py> Running Charm4py version 1.0 on Python 3.8.10 (CPython). Using 'cython' interface to access Charm++ +Charm++> Running on 1 hosts (1 sockets x 2 cores x 1 PUs = 2-way SMP) +Charm++> cpu topology info is gathered in 0.003 seconds. +Running Task Benchmark + Configuration: + Task Graph 1: + Time Steps: 4 + Max Width: 4 + Dependence Type: stencil_1d + Radix: 3 + Period: 0 + Fraction Connected: 0.250000 + Kernel: + Type: compute_bound + Iterations: 512 + Samples: 16 + Imbalance: 0.000000 + Output Bytes: 16 + Scratch Bytes: 0 +Time for last run: 0.0095319540000105 +Time for last run: 0.0008442040000318229 +Total Tasks 16 +Total Dependencies 30 + Unable to estimate local/nonlocal dependencies +Total FLOPs 1049600 +Total Bytes 0 +Elapsed Time 8.442040e-04 seconds +FLOP/s 1.243301e+09 +B/s 0.000000e+00 +Transfer (estimated): + Unable to estimate local/nonlocal transfer +[Partition 0][Node 0] End of program +Charmrun> scalable start enabled. +Charmrun> started all node programs in 0.176 seconds. +Charm++> Running in non-SMP mode: 2 processes (PEs) +Converse/Charm++ Commit ID: v7.1.0-devel-115-ga4b8220a7 +Charm++ built with internal error checking enabled. +Do not use for performance benchmarking (build without --enable-error-checking to do so). +Isomalloc> Synchronized global address space. +Charm++> scheduler running in netpoll mode. +CharmLB> Load balancer assumes all CPUs are same. +Charm4py> Running Charm4py version 1.0 on Python 3.8.10 (CPython). Using 'cython' interface to access Charm++ +Charm++> Running on 1 hosts (1 sockets x 2 cores x 1 PUs = 2-way SMP) +Charm++> cpu topology info is gathered in 0.008 seconds. +Running Task Benchmark + Configuration: + Task Graph 1: + Time Steps: 4 + Max Width: 4 + Dependence Type: stencil_1d + Radix: 3 + Period: 0 + Fraction Connected: 0.250000 + Kernel: + Type: compute_bound + Iterations: 1024 + Samples: 16 + Imbalance: 0.000000 + Output Bytes: 16 + Scratch Bytes: 0 +Time for last run: 0.009661155000003419 +Time for last run: 0.0009981059999972786 +Total Tasks 16 +Total Dependencies 30 + Unable to estimate local/nonlocal dependencies +Total FLOPs 2098176 +Total Bytes 0 +Elapsed Time 9.981060e-04 seconds +FLOP/s 2.102157e+09 +B/s 0.000000e+00 +Transfer (estimated): + Unable to estimate local/nonlocal transfer +[Partition 0][Node 0] End of program +Charmrun> scalable start enabled. +Charmrun> started all node programs in 0.188 seconds. +Charm++> Running in non-SMP mode: 2 processes (PEs) +Converse/Charm++ Commit ID: v7.1.0-devel-115-ga4b8220a7 +Charm++ built with internal error checking enabled. +Do not use for performance benchmarking (build without --enable-error-checking to do so). +Isomalloc> Synchronized global address space. +Charm++> scheduler running in netpoll mode. +CharmLB> Load balancer assumes all CPUs are same. +Charm4py> Running Charm4py version 1.0 on Python 3.8.10 (CPython). Using 'cython' interface to access Charm++ +Charm++> Running on 1 hosts (1 sockets x 2 cores x 1 PUs = 2-way SMP) +Charm++> cpu topology info is gathered in 0.004 seconds. +Running Task Benchmark + Configuration: + Task Graph 1: + Time Steps: 4 + Max Width: 4 + Dependence Type: stencil_1d + Radix: 3 + Period: 0 + Fraction Connected: 0.250000 + Kernel: + Type: compute_bound + Iterations: 2048 + Samples: 16 + Imbalance: 0.000000 + Output Bytes: 16 + Scratch Bytes: 0 +Time for last run: 0.01043335899998965 +Time for last run: 0.0009620060000088415 +Total Tasks 16 +Total Dependencies 30 + Unable to estimate local/nonlocal dependencies +Total FLOPs 4195328 +Total Bytes 0 +Elapsed Time 9.620060e-04 seconds +FLOP/s 4.361021e+09 +B/s 0.000000e+00 +Transfer (estimated): + Unable to estimate local/nonlocal transfer +[Partition 0][Node 0] End of program +Charmrun> scalable start enabled. +Charmrun> started all node programs in 0.187 seconds. +Charm++> Running in non-SMP mode: 2 processes (PEs) +Converse/Charm++ Commit ID: v7.1.0-devel-115-ga4b8220a7 +Charm++ built with internal error checking enabled. +Do not use for performance benchmarking (build without --enable-error-checking to do so). +Isomalloc> Synchronized global address space. +Charm++> scheduler running in netpoll mode. +CharmLB> Load balancer assumes all CPUs are same. +Charm4py> Running Charm4py version 1.0 on Python 3.8.10 (CPython). Using 'cython' interface to access Charm++ +Charm++> Running on 1 hosts (1 sockets x 2 cores x 1 PUs = 2-way SMP) +Charm++> cpu topology info is gathered in 0.000 seconds. +Running Task Benchmark + Configuration: + Task Graph 1: + Time Steps: 4 + Max Width: 4 + Dependence Type: stencil_1d + Radix: 3 + Period: 0 + Fraction Connected: 0.250000 + Kernel: + Type: compute_bound + Iterations: 4096 + Samples: 16 + Imbalance: 0.000000 + Output Bytes: 16 + Scratch Bytes: 0 +Time for last run: 0.010313959000029627 +Time for last run: 0.0012098069999524341 +Total Tasks 16 +Total Dependencies 30 + Unable to estimate local/nonlocal dependencies +Total FLOPs 8389632 +Total Bytes 0 +Elapsed Time 1.209807e-03 seconds +FLOP/s 6.934686e+09 +B/s 0.000000e+00 +Transfer (estimated): + Unable to estimate local/nonlocal transfer +[Partition 0][Node 0] End of program +Charmrun> scalable start enabled. +Charmrun> started all node programs in 0.194 seconds. +Charm++> Running in non-SMP mode: 2 processes (PEs) +Converse/Charm++ Commit ID: v7.1.0-devel-115-ga4b8220a7 +Charm++ built with internal error checking enabled. +Do not use for performance benchmarking (build without --enable-error-checking to do so). +Isomalloc> Synchronized global address space. +Charm++> scheduler running in netpoll mode. +CharmLB> Load balancer assumes all CPUs are same. +Charm4py> Running Charm4py version 1.0 on Python 3.8.10 (CPython). Using 'cython' interface to access Charm++ +Charm++> Running on 1 hosts (1 sockets x 2 cores x 1 PUs = 2-way SMP) +Charm++> cpu topology info is gathered in 0.000 seconds. +Running Task Benchmark + Configuration: + Task Graph 1: + Time Steps: 4 + Max Width: 4 + Dependence Type: stencil_1d + Radix: 3 + Period: 0 + Fraction Connected: 0.250000 + Kernel: + Type: compute_bound + Iterations: 8192 + Samples: 16 + Imbalance: 0.000000 + Output Bytes: 16 + Scratch Bytes: 0 +Time for last run: 0.010317658000019492 +Time for last run: 0.001109207000013157 +Total Tasks 16 +Total Dependencies 30 + Unable to estimate local/nonlocal dependencies +Total FLOPs 16778240 +Total Bytes 0 +Elapsed Time 1.109207e-03 seconds +FLOP/s 1.512634e+10 +B/s 0.000000e+00 +Transfer (estimated): + Unable to estimate local/nonlocal transfer +[Partition 0][Node 0] End of program diff --git a/.tmp/udp-cython-pingpong.log b/.tmp/udp-cython-pingpong.log new file mode 100644 index 00000000..e5155a40 --- /dev/null +++ b/.tmp/udp-cython-pingpong.log @@ -0,0 +1,235 @@ +Charmrun> scalable start enabled. +Charmrun> started all node programs in 0.160 seconds. +Charm++> Running in non-SMP mode: 2 processes (PEs) +Converse/Charm++ Commit ID: v7.1.0-devel-114-ge1a85fbae +Charm++ built with internal error checking enabled. +Do not use for performance benchmarking (build without --enable-error-checking to do so). +Isomalloc> Synchronized global address space. +Charm++> scheduler running in netpoll mode. +CharmLB> Load balancer assumes all CPUs are same. +Charm4py> Running Charm4py version 1.0 on Python 3.8.10 (CPython). Using 'cython' interface to access Charm++ +Charm++> Running on 1 hosts (1 sockets x 2 cores x 1 PUs = 2-way SMP) +Charm++> cpu topology info is gathered in 0.001 seconds. +My PE: 0 +[0] neighbor = <__main__.PingArrayProxy object at 0x7ffff75ba610> +My PE: 1 +[1] neighbor = <__main__.PingArrayProxy object at 0x7ffff75e3970> +Array length = 1 +RES:: [plain] 1 43.888092041015625 +Array length = 2 +RES:: [plain] 2 43.76024007797241 +Array length = 4 +RES:: [plain] 4 43.49935054779053 +Array length = 8 +RES:: [plain] 8 44.67439651489258 +Array length = 16 +RES:: [plain] 16 47.05125093460083 +Array length = 32 +RES:: [plain] 32 47.47962951660156 +Array length = 64 +RES:: [plain] 64 46.534717082977295 +Array length = 128 +RES:: [plain] 128 47.661781311035156 +Array length = 256 +RES:: [plain] 256 47.47897386550903 +Array length = 512 +RES:: [plain] 512 48.288166522979736 +Array length = 1024 +RES:: [plain] 1024 50.57644844055176 +Array length = 2048 +RES:: [plain] 2048 54.69226837158203 +Array length = 4096 +RES:: [plain] 4096 57.62690305709839 +Array length = 8192 +RES:: [plain] 8192 84.42598581314087 +Array length = 16384 +RES:: [plain] 16384 106.35274648666382 +[Partition 0][Node 0] End of program +Charmrun> scalable start enabled. +Charmrun> started all node programs in 0.131 seconds. +Charm++> Running in non-SMP mode: 2 processes (PEs) +Converse/Charm++ Commit ID: v7.1.0-devel-114-ge1a85fbae +Charm++ built with internal error checking enabled. +Do not use for performance benchmarking (build without --enable-error-checking to do so). +Isomalloc> Synchronized global address space. +Charm++> scheduler running in netpoll mode. +CharmLB> Load balancer assumes all CPUs are same. +Charm4py> Running Charm4py version 1.0 on Python 3.8.10 (CPython). Using 'cython' interface to access Charm++ +Charm++> Running on 1 hosts (1 sockets x 2 cores x 1 PUs = 2-way SMP) +Charm++> cpu topology info is gathered in 0.001 seconds. +My PE: 0 +[0] neighbor = <__main__.PingArrayProxy object at 0x7ffff7516460> +My PE: 1 +[1] neighbor = <__main__.PingArrayProxy object at 0x7ffff7516d00> +Array length = 1 +RES:: [plain] 1 38.94263505935669 +Array length = 2 +RES:: [plain] 2 43.44892501831055 +Array length = 4 +RES:: [plain] 4 39.50059413909912 +Array length = 8 +RES:: [plain] 8 52.47640609741211 +Array length = 16 +RES:: [plain] 16 38.996338844299316 +Array length = 32 +RES:: [plain] 32 45.6354022026062 +Array length = 64 +RES:: [plain] 64 39.72911834716797 +Array length = 128 +RES:: [plain] 128 40.835022926330566 +Array length = 256 +RES:: [plain] 256 38.59835863113403 +Array length = 512 +RES:: [plain] 512 40.82232713699341 +Array length = 1024 +RES:: [plain] 1024 43.23399066925049 +Array length = 2048 +RES:: [plain] 2048 41.06622934341431 +Array length = 4096 +RES:: [plain] 4096 49.25590753555298 +Array length = 8192 +RES:: [plain] 8192 74.65660572052002 +Array length = 16384 +RES:: [plain] 16384 100.98874568939209 +[Partition 0][Node 0] End of program +Charmrun> scalable start enabled. +Charmrun> started all node programs in 0.134 seconds. +Charm++> Running in non-SMP mode: 2 processes (PEs) +Converse/Charm++ Commit ID: v7.1.0-devel-114-ge1a85fbae +Charm++ built with internal error checking enabled. +Do not use for performance benchmarking (build without --enable-error-checking to do so). +Isomalloc> Synchronized global address space. +Charm++> scheduler running in netpoll mode. +CharmLB> Load balancer assumes all CPUs are same. +Charm4py> Running Charm4py version 1.0 on Python 3.8.10 (CPython). Using 'cython' interface to access Charm++ +Charm++> Running on 1 hosts (1 sockets x 2 cores x 1 PUs = 2-way SMP) +Charm++> cpu topology info is gathered in 0.003 seconds. +My PE: 0 +[0] neighbor = <__main__.PingArrayProxy object at 0x7ffff7516460> +My PE: 1 +[1] neighbor = <__main__.PingArrayProxy object at 0x7ffff7516d00> +Array length = 1 +RES:: [plain] 1 39.76237773895264 +Array length = 2 +RES:: [plain] 2 40.10319709777832 +Array length = 4 +RES:: [plain] 4 40.839552879333496 +Array length = 8 +RES:: [plain] 8 37.33038902282715 +Array length = 16 +RES:: [plain] 16 40.25566577911377 +Array length = 32 +RES:: [plain] 32 41.12619161605835 +Array length = 64 +RES:: [plain] 64 38.93637657165527 +Array length = 128 +RES:: [plain] 128 41.21506214141846 +Array length = 256 +RES:: [plain] 256 38.67143392562866 +Array length = 512 +RES:: [plain] 512 42.545437812805176 +Array length = 1024 +RES:: [plain] 1024 49.97760057449341 +Array length = 2048 +RES:: [plain] 2048 48.38055372238159 +Array length = 4096 +RES:: [plain] 4096 53.62778902053833 +Array length = 8192 +RES:: [plain] 8192 84.78057384490967 +Array length = 16384 +RES:: [plain] 16384 116.44357442855835 +[Partition 0][Node 0] End of program +Charmrun> scalable start enabled. +Charmrun> started all node programs in 0.155 seconds. +Charm++> Running in non-SMP mode: 2 processes (PEs) +Converse/Charm++ Commit ID: v7.1.0-devel-114-ge1a85fbae +Charm++ built with internal error checking enabled. +Do not use for performance benchmarking (build without --enable-error-checking to do so). +Isomalloc> Synchronized global address space. +Charm++> scheduler running in netpoll mode. +CharmLB> Load balancer assumes all CPUs are same. +Charm4py> Running Charm4py version 1.0 on Python 3.8.10 (CPython). Using 'cython' interface to access Charm++ +Charm++> Running on 1 hosts (1 sockets x 2 cores x 1 PUs = 2-way SMP) +Charm++> cpu topology info is gathered in 0.001 seconds. +My PE: 0 +[0] neighbor = <__main__.PingArrayProxy object at 0x7ffff7516460> +My PE: 1 +[1] neighbor = <__main__.PingArrayProxy object at 0x7ffff7516d00> +Array length = 1 +RES:: [plain] 1 48.63160848617554 +Array length = 2 +RES:: [plain] 2 46.269893646240234 +Array length = 4 +RES:: [plain] 4 47.40065336227417 +Array length = 8 +RES:: [plain] 8 45.58128118515015 +Array length = 16 +RES:: [plain] 16 42.2205924987793 +Array length = 32 +RES:: [plain] 32 43.89834403991699 +Array length = 64 +RES:: [plain] 64 40.28666019439697 +Array length = 128 +RES:: [plain] 128 40.53777456283569 +Array length = 256 +RES:: [plain] 256 45.09943723678589 +Array length = 512 +RES:: [plain] 512 40.409207344055176 +Array length = 1024 +RES:: [plain] 1024 42.40846633911133 +Array length = 2048 +RES:: [plain] 2048 45.08596658706665 +Array length = 4096 +RES:: [plain] 4096 50.440847873687744 +Array length = 8192 +RES:: [plain] 8192 76.10297203063965 +Array length = 16384 +RES:: [plain] 16384 97.93758392333984 +[Partition 0][Node 0] End of program +Charmrun> scalable start enabled. +Charmrun> started all node programs in 0.137 seconds. +Charm++> Running in non-SMP mode: 2 processes (PEs) +Converse/Charm++ Commit ID: v7.1.0-devel-114-ge1a85fbae +Charm++ built with internal error checking enabled. +Do not use for performance benchmarking (build without --enable-error-checking to do so). +Isomalloc> Synchronized global address space. +Charm++> scheduler running in netpoll mode. +CharmLB> Load balancer assumes all CPUs are same. +Charm4py> Running Charm4py version 1.0 on Python 3.8.10 (CPython). Using 'cython' interface to access Charm++ +Charm++> Running on 1 hosts (1 sockets x 2 cores x 1 PUs = 2-way SMP) +Charm++> cpu topology info is gathered in 0.001 seconds. +My PE: 0 +[0] neighbor = <__main__.PingArrayProxy object at 0x7ffff7516460> +My PE: 1 +[1] neighbor = <__main__.PingArrayProxy object at 0x7ffff7516d00> +Array length = 1 +RES:: [plain] 1 37.310123443603516 +Array length = 2 +RES:: [plain] 2 38.25861215591431 +Array length = 4 +RES:: [plain] 4 40.13127088546753 +Array length = 8 +RES:: [plain] 8 40.22252559661865 +Array length = 16 +RES:: [plain] 16 39.460837841033936 +Array length = 32 +RES:: [plain] 32 38.31470012664795 +Array length = 64 +RES:: [plain] 64 40.29017686843872 +Array length = 128 +RES:: [plain] 128 38.038671016693115 +Array length = 256 +RES:: [plain] 256 37.92917728424072 +Array length = 512 +RES:: [plain] 512 40.43787717819214 +Array length = 1024 +RES:: [plain] 1024 42.65230894088745 +Array length = 2048 +RES:: [plain] 2048 43.689846992492676 +Array length = 4096 +RES:: [plain] 4096 48.7285852432251 +Array length = 8192 +RES:: [plain] 8192 73.81588220596313 +Array length = 16384 +RES:: [plain] 16384 101.6358733177185 +[Partition 0][Node 0] End of program diff --git a/.tmp/udp-cython-task-bench.log b/.tmp/udp-cython-task-bench.log new file mode 100644 index 00000000..c2b7a9dd --- /dev/null +++ b/.tmp/udp-cython-task-bench.log @@ -0,0 +1,656 @@ +Charmrun> scalable start enabled. +Charmrun> started all node programs in 0.201 seconds. +Charm++> Running in non-SMP mode: 2 processes (PEs) +Converse/Charm++ Commit ID: v7.1.0-devel-115-ga4b8220a7 +Charm++ built with internal error checking enabled. +Do not use for performance benchmarking (build without --enable-error-checking to do so). +Isomalloc> Synchronized global address space. +Charm++> scheduler running in netpoll mode. +CharmLB> Load balancer assumes all CPUs are same. +Charm4py> Running Charm4py version 1.0 on Python 3.8.10 (CPython). Using 'cython' interface to access Charm++ +Charm++> Running on 1 hosts (1 sockets x 2 cores x 1 PUs = 2-way SMP) +Charm++> cpu topology info is gathered in 0.000 seconds. +Running Task Benchmark + Configuration: + Task Graph 1: + Time Steps: 4 + Max Width: 4 + Dependence Type: stencil_1d + Radix: 3 + Period: 0 + Fraction Connected: 0.250000 + Kernel: + Type: compute_bound + Iterations: 64 + Samples: 16 + Imbalance: 0.000000 + Output Bytes: 16 + Scratch Bytes: 0 +Time for last run: 0.008624055000041153 +Time for last run: 0.0005591039999899294 +Total Tasks 16 +Total Dependencies 30 + Unable to estimate local/nonlocal dependencies +Total FLOPs 132096 +Total Bytes 0 +Elapsed Time 5.591040e-04 seconds +FLOP/s 2.362637e+08 +B/s 0.000000e+00 +Transfer (estimated): + Unable to estimate local/nonlocal transfer +[Partition 0][Node 0] End of program +Charmrun> scalable start enabled. +Charmrun> started all node programs in 0.175 seconds. +Charm++> Running in non-SMP mode: 2 processes (PEs) +Converse/Charm++ Commit ID: v7.1.0-devel-115-ga4b8220a7 +Charm++ built with internal error checking enabled. +Do not use for performance benchmarking (build without --enable-error-checking to do so). +Isomalloc> Synchronized global address space. +Charm++> scheduler running in netpoll mode. +CharmLB> Load balancer assumes all CPUs are same. +Charm4py> Running Charm4py version 1.0 on Python 3.8.10 (CPython). Using 'cython' interface to access Charm++ +Charm++> Running on 1 hosts (1 sockets x 2 cores x 1 PUs = 2-way SMP) +Charm++> cpu topology info is gathered in 0.000 seconds. +Running Task Benchmark + Configuration: + Task Graph 1: + Time Steps: 4 + Max Width: 4 + Dependence Type: stencil_1d + Radix: 3 + Period: 0 + Fraction Connected: 0.250000 + Kernel: + Type: compute_bound + Iterations: 128 + Samples: 16 + Imbalance: 0.000000 + Output Bytes: 16 + Scratch Bytes: 0 +Time for last run: 0.008715055999971355 +Time for last run: 0.0005877039999973022 +Total Tasks 16 +Total Dependencies 30 + Unable to estimate local/nonlocal dependencies +Total FLOPs 263168 +Total Bytes 0 +Elapsed Time 5.877040e-04 seconds +FLOP/s 4.477900e+08 +B/s 0.000000e+00 +Transfer (estimated): + Unable to estimate local/nonlocal transfer +[Partition 0][Node 0] End of program +Charmrun> scalable start enabled. +Charmrun> started all node programs in 0.175 seconds. +Charm++> Running in non-SMP mode: 2 processes (PEs) +Converse/Charm++ Commit ID: v7.1.0-devel-115-ga4b8220a7 +Charm++ built with internal error checking enabled. +Do not use for performance benchmarking (build without --enable-error-checking to do so). +Isomalloc> Synchronized global address space. +Charm++> scheduler running in netpoll mode. +CharmLB> Load balancer assumes all CPUs are same. +Charm4py> Running Charm4py version 1.0 on Python 3.8.10 (CPython). Using 'cython' interface to access Charm++ +Charm++> Running on 1 hosts (1 sockets x 2 cores x 1 PUs = 2-way SMP) +Charm++> cpu topology info is gathered in 0.000 seconds. +Running Task Benchmark + Configuration: + Task Graph 1: + Time Steps: 4 + Max Width: 4 + Dependence Type: stencil_1d + Radix: 3 + Period: 0 + Fraction Connected: 0.250000 + Kernel: + Type: compute_bound + Iterations: 256 + Samples: 16 + Imbalance: 0.000000 + Output Bytes: 16 + Scratch Bytes: 0 +Time for last run: 0.00856105499997284 +Time for last run: 0.0006010039999750916 +Total Tasks 16 +Total Dependencies 30 + Unable to estimate local/nonlocal dependencies +Total FLOPs 525312 +Total Bytes 0 +Elapsed Time 6.010040e-04 seconds +FLOP/s 8.740574e+08 +B/s 0.000000e+00 +Transfer (estimated): + Unable to estimate local/nonlocal transfer +[Partition 0][Node 0] End of program +Charmrun> scalable start enabled. +Charmrun> started all node programs in 0.174 seconds. +Charm++> Running in non-SMP mode: 2 processes (PEs) +Converse/Charm++ Commit ID: v7.1.0-devel-115-ga4b8220a7 +Charm++ built with internal error checking enabled. +Do not use for performance benchmarking (build without --enable-error-checking to do so). +Isomalloc> Synchronized global address space. +Charm++> scheduler running in netpoll mode. +CharmLB> Load balancer assumes all CPUs are same. +Charm4py> Running Charm4py version 1.0 on Python 3.8.10 (CPython). Using 'cython' interface to access Charm++ +Charm++> Running on 1 hosts (1 sockets x 2 cores x 1 PUs = 2-way SMP) +Charm++> cpu topology info is gathered in 0.000 seconds. +Running Task Benchmark + Configuration: + Task Graph 1: + Time Steps: 4 + Max Width: 4 + Dependence Type: stencil_1d + Radix: 3 + Period: 0 + Fraction Connected: 0.250000 + Kernel: + Type: compute_bound + Iterations: 512 + Samples: 16 + Imbalance: 0.000000 + Output Bytes: 16 + Scratch Bytes: 0 +Time for last run: 0.008673455999996804 +Time for last run: 0.0006210040000382833 +Total Tasks 16 +Total Dependencies 30 + Unable to estimate local/nonlocal dependencies +Total FLOPs 1049600 +Total Bytes 0 +Elapsed Time 6.210040e-04 seconds +FLOP/s 1.690166e+09 +B/s 0.000000e+00 +Transfer (estimated): + Unable to estimate local/nonlocal transfer +[Partition 0][Node 0] End of program +Charmrun> scalable start enabled. +Charmrun> started all node programs in 0.175 seconds. +Charm++> Running in non-SMP mode: 2 processes (PEs) +Converse/Charm++ Commit ID: v7.1.0-devel-115-ga4b8220a7 +Charm++ built with internal error checking enabled. +Do not use for performance benchmarking (build without --enable-error-checking to do so). +Isomalloc> Synchronized global address space. +Charm++> scheduler running in netpoll mode. +CharmLB> Load balancer assumes all CPUs are same. +Charm4py> Running Charm4py version 1.0 on Python 3.8.10 (CPython). Using 'cython' interface to access Charm++ +Charm++> Running on 1 hosts (1 sockets x 2 cores x 1 PUs = 2-way SMP) +Charm++> cpu topology info is gathered in 0.000 seconds. +Running Task Benchmark + Configuration: + Task Graph 1: + Time Steps: 4 + Max Width: 4 + Dependence Type: stencil_1d + Radix: 3 + Period: 0 + Fraction Connected: 0.250000 + Kernel: + Type: compute_bound + Iterations: 1024 + Samples: 16 + Imbalance: 0.000000 + Output Bytes: 16 + Scratch Bytes: 0 +Time for last run: 0.008787357000016982 +Time for last run: 0.0006138039999541434 +Total Tasks 16 +Total Dependencies 30 + Unable to estimate local/nonlocal dependencies +Total FLOPs 2098176 +Total Bytes 0 +Elapsed Time 6.138040e-04 seconds +FLOP/s 3.418316e+09 +B/s 0.000000e+00 +Transfer (estimated): + Unable to estimate local/nonlocal transfer +[Partition 0][Node 0] End of program +Charmrun> scalable start enabled. +Charmrun> started all node programs in 0.173 seconds. +Charm++> Running in non-SMP mode: 2 processes (PEs) +Converse/Charm++ Commit ID: v7.1.0-devel-115-ga4b8220a7 +Charm++ built with internal error checking enabled. +Do not use for performance benchmarking (build without --enable-error-checking to do so). +Isomalloc> Synchronized global address space. +Charm++> scheduler running in netpoll mode. +CharmLB> Load balancer assumes all CPUs are same. +Charm4py> Running Charm4py version 1.0 on Python 3.8.10 (CPython). Using 'cython' interface to access Charm++ +Charm++> Running on 1 hosts (1 sockets x 2 cores x 1 PUs = 2-way SMP) +Charm++> cpu topology info is gathered in 0.000 seconds. +Running Task Benchmark + Configuration: + Task Graph 1: + Time Steps: 4 + Max Width: 4 + Dependence Type: stencil_1d + Radix: 3 + Period: 0 + Fraction Connected: 0.250000 + Kernel: + Type: compute_bound + Iterations: 2048 + Samples: 16 + Imbalance: 0.000000 + Output Bytes: 16 + Scratch Bytes: 0 +Time for last run: 0.008677954999996018 +Time for last run: 0.0005995040000357221 +Total Tasks 16 +Total Dependencies 30 + Unable to estimate local/nonlocal dependencies +Total FLOPs 4195328 +Total Bytes 0 +Elapsed Time 5.995040e-04 seconds +FLOP/s 6.997998e+09 +B/s 0.000000e+00 +Transfer (estimated): + Unable to estimate local/nonlocal transfer +[Partition 0][Node 0] End of program +Charmrun> scalable start enabled. +Charmrun> started all node programs in 0.172 seconds. +Charm++> Running in non-SMP mode: 2 processes (PEs) +Converse/Charm++ Commit ID: v7.1.0-devel-115-ga4b8220a7 +Charm++ built with internal error checking enabled. +Do not use for performance benchmarking (build without --enable-error-checking to do so). +Isomalloc> Synchronized global address space. +Charm++> scheduler running in netpoll mode. +CharmLB> Load balancer assumes all CPUs are same. +Charm4py> Running Charm4py version 1.0 on Python 3.8.10 (CPython). Using 'cython' interface to access Charm++ +Charm++> Running on 1 hosts (1 sockets x 2 cores x 1 PUs = 2-way SMP) +Charm++> cpu topology info is gathered in 0.000 seconds. +Running Task Benchmark + Configuration: + Task Graph 1: + Time Steps: 4 + Max Width: 4 + Dependence Type: stencil_1d + Radix: 3 + Period: 0 + Fraction Connected: 0.250000 + Kernel: + Type: compute_bound + Iterations: 4096 + Samples: 16 + Imbalance: 0.000000 + Output Bytes: 16 + Scratch Bytes: 0 +Time for last run: 0.008611556000005294 +Time for last run: 0.0006403040000009241 +Total Tasks 16 +Total Dependencies 30 + Unable to estimate local/nonlocal dependencies +Total FLOPs 8389632 +Total Bytes 0 +Elapsed Time 6.403040e-04 seconds +FLOP/s 1.310258e+10 +B/s 0.000000e+00 +Transfer (estimated): + Unable to estimate local/nonlocal transfer +[Partition 0][Node 0] End of program +Charmrun> scalable start enabled. +Charmrun> started all node programs in 0.173 seconds. +Charm++> Running in non-SMP mode: 2 processes (PEs) +Converse/Charm++ Commit ID: v7.1.0-devel-115-ga4b8220a7 +Charm++ built with internal error checking enabled. +Do not use for performance benchmarking (build without --enable-error-checking to do so). +Isomalloc> Synchronized global address space. +Charm++> scheduler running in netpoll mode. +CharmLB> Load balancer assumes all CPUs are same. +Charm4py> Running Charm4py version 1.0 on Python 3.8.10 (CPython). Using 'cython' interface to access Charm++ +Charm++> Running on 1 hosts (1 sockets x 2 cores x 1 PUs = 2-way SMP) +Charm++> cpu topology info is gathered in 0.000 seconds. +Running Task Benchmark + Configuration: + Task Graph 1: + Time Steps: 4 + Max Width: 4 + Dependence Type: stencil_1d + Radix: 3 + Period: 0 + Fraction Connected: 0.250000 + Kernel: + Type: compute_bound + Iterations: 8192 + Samples: 16 + Imbalance: 0.000000 + Output Bytes: 16 + Scratch Bytes: 0 +Time for last run: 0.008716956000000664 +Time for last run: 0.0006808040000123583 +Total Tasks 16 +Total Dependencies 30 + Unable to estimate local/nonlocal dependencies +Total FLOPs 16778240 +Total Bytes 0 +Elapsed Time 6.808040e-04 seconds +FLOP/s 2.464474e+10 +B/s 0.000000e+00 +Transfer (estimated): + Unable to estimate local/nonlocal transfer +[Partition 0][Node 0] End of program +Charmrun> scalable start enabled. +Charmrun> started all node programs in 0.212 seconds. +Charm++> Running in non-SMP mode: 2 processes (PEs) +Converse/Charm++ Commit ID: v7.1.0-devel-115-ga4b8220a7 +Charm++ built with internal error checking enabled. +Do not use for performance benchmarking (build without --enable-error-checking to do so). +Isomalloc> Synchronized global address space. +Charm++> scheduler running in netpoll mode. +CharmLB> Load balancer assumes all CPUs are same. +Charm4py> Running Charm4py version 1.0 on Python 3.8.10 (CPython). Using 'cython' interface to access Charm++ +Charm++> Running on 1 hosts (1 sockets x 2 cores x 1 PUs = 2-way SMP) +Charm++> cpu topology info is gathered in 0.000 seconds. +Running Task Benchmark + Configuration: + Task Graph 1: + Time Steps: 4 + Max Width: 4 + Dependence Type: stencil_1d + Radix: 3 + Period: 0 + Fraction Connected: 0.250000 + Kernel: + Type: compute_bound + Iterations: 64 + Samples: 16 + Imbalance: 0.000000 + Output Bytes: 16 + Scratch Bytes: 0 +Time for last run: 0.011686076999978923 +Time for last run: 0.001018707000014274 +Total Tasks 16 +Total Dependencies 30 + Unable to estimate local/nonlocal dependencies +Total FLOPs 132096 +Total Bytes 0 +Elapsed Time 1.018707e-03 seconds +FLOP/s 1.296703e+08 +B/s 0.000000e+00 +Transfer (estimated): + Unable to estimate local/nonlocal transfer +[Partition 0][Node 0] End of program +Charmrun> scalable start enabled. +Charmrun> started all node programs in 0.194 seconds. +Charm++> Running in non-SMP mode: 2 processes (PEs) +Converse/Charm++ Commit ID: v7.1.0-devel-115-ga4b8220a7 +Charm++ built with internal error checking enabled. +Do not use for performance benchmarking (build without --enable-error-checking to do so). +Isomalloc> Synchronized global address space. +Charm++> scheduler running in netpoll mode. +CharmLB> Load balancer assumes all CPUs are same. +Charm4py> Running Charm4py version 1.0 on Python 3.8.10 (CPython). Using 'cython' interface to access Charm++ +Charm++> Running on 1 hosts (1 sockets x 2 cores x 1 PUs = 2-way SMP) +Charm++> cpu topology info is gathered in 0.000 seconds. +Running Task Benchmark + Configuration: + Task Graph 1: + Time Steps: 4 + Max Width: 4 + Dependence Type: stencil_1d + Radix: 3 + Period: 0 + Fraction Connected: 0.250000 + Kernel: + Type: compute_bound + Iterations: 128 + Samples: 16 + Imbalance: 0.000000 + Output Bytes: 16 + Scratch Bytes: 0 +Time for last run: 0.009927465000032498 +Time for last run: 0.000985606000028838 +Total Tasks 16 +Total Dependencies 30 + Unable to estimate local/nonlocal dependencies +Total FLOPs 263168 +Total Bytes 0 +Elapsed Time 9.856060e-04 seconds +FLOP/s 2.670114e+08 +B/s 0.000000e+00 +Transfer (estimated): + Unable to estimate local/nonlocal transfer +[Partition 0][Node 0] End of program +Charmrun> scalable start enabled. +Charmrun> started all node programs in 0.192 seconds. +Charm++> Running in non-SMP mode: 2 processes (PEs) +Converse/Charm++ Commit ID: v7.1.0-devel-115-ga4b8220a7 +Charm++ built with internal error checking enabled. +Do not use for performance benchmarking (build without --enable-error-checking to do so). +Isomalloc> Synchronized global address space. +Charm++> scheduler running in netpoll mode. +CharmLB> Load balancer assumes all CPUs are same. +Charm4py> Running Charm4py version 1.0 on Python 3.8.10 (CPython). Using 'cython' interface to access Charm++ +Charm++> Running on 1 hosts (1 sockets x 2 cores x 1 PUs = 2-way SMP) +Charm++> cpu topology info is gathered in 0.000 seconds. +Running Task Benchmark + Configuration: + Task Graph 1: + Time Steps: 4 + Max Width: 4 + Dependence Type: stencil_1d + Radix: 3 + Period: 0 + Fraction Connected: 0.250000 + Kernel: + Type: compute_bound + Iterations: 256 + Samples: 16 + Imbalance: 0.000000 + Output Bytes: 16 + Scratch Bytes: 0 +Time for last run: 0.010256968000021516 +Time for last run: 0.001045707000002949 +Total Tasks 16 +Total Dependencies 30 + Unable to estimate local/nonlocal dependencies +Total FLOPs 525312 +Total Bytes 0 +Elapsed Time 1.045707e-03 seconds +FLOP/s 5.023510e+08 +B/s 0.000000e+00 +Transfer (estimated): + Unable to estimate local/nonlocal transfer +[Partition 0][Node 0] End of program +Charmrun> scalable start enabled. +Charmrun> started all node programs in 0.193 seconds. +Charm++> Running in non-SMP mode: 2 processes (PEs) +Converse/Charm++ Commit ID: v7.1.0-devel-115-ga4b8220a7 +Charm++ built with internal error checking enabled. +Do not use for performance benchmarking (build without --enable-error-checking to do so). +Isomalloc> Synchronized global address space. +Charm++> scheduler running in netpoll mode. +CharmLB> Load balancer assumes all CPUs are same. +Charm4py> Running Charm4py version 1.0 on Python 3.8.10 (CPython). Using 'cython' interface to access Charm++ +Charm++> Running on 1 hosts (1 sockets x 2 cores x 1 PUs = 2-way SMP) +Charm++> cpu topology info is gathered in 0.000 seconds. +Running Task Benchmark + Configuration: + Task Graph 1: + Time Steps: 4 + Max Width: 4 + Dependence Type: stencil_1d + Radix: 3 + Period: 0 + Fraction Connected: 0.250000 + Kernel: + Type: compute_bound + Iterations: 512 + Samples: 16 + Imbalance: 0.000000 + Output Bytes: 16 + Scratch Bytes: 0 +Time for last run: 0.010232867000013357 +Time for last run: 0.0010051070000258733 +Total Tasks 16 +Total Dependencies 30 + Unable to estimate local/nonlocal dependencies +Total FLOPs 1049600 +Total Bytes 0 +Elapsed Time 1.005107e-03 seconds +FLOP/s 1.044267e+09 +B/s 0.000000e+00 +Transfer (estimated): + Unable to estimate local/nonlocal transfer +[Partition 0][Node 0] End of program +Charmrun> scalable start enabled. +Charmrun> started all node programs in 0.181 seconds. +Charm++> Running in non-SMP mode: 2 processes (PEs) +Converse/Charm++ Commit ID: v7.1.0-devel-115-ga4b8220a7 +Charm++ built with internal error checking enabled. +Do not use for performance benchmarking (build without --enable-error-checking to do so). +Isomalloc> Synchronized global address space. +Charm++> scheduler running in netpoll mode. +CharmLB> Load balancer assumes all CPUs are same. +Charm4py> Running Charm4py version 1.0 on Python 3.8.10 (CPython). Using 'cython' interface to access Charm++ +Charm++> Running on 1 hosts (1 sockets x 2 cores x 1 PUs = 2-way SMP) +Charm++> cpu topology info is gathered in 0.000 seconds. +Running Task Benchmark + Configuration: + Task Graph 1: + Time Steps: 4 + Max Width: 4 + Dependence Type: stencil_1d + Radix: 3 + Period: 0 + Fraction Connected: 0.250000 + Kernel: + Type: compute_bound + Iterations: 1024 + Samples: 16 + Imbalance: 0.000000 + Output Bytes: 16 + Scratch Bytes: 0 +Time for last run: 0.009402862000001733 +Time for last run: 0.0009570059999646219 +Total Tasks 16 +Total Dependencies 30 + Unable to estimate local/nonlocal dependencies +Total FLOPs 2098176 +Total Bytes 0 +Elapsed Time 9.570060e-04 seconds +FLOP/s 2.192438e+09 +B/s 0.000000e+00 +Transfer (estimated): + Unable to estimate local/nonlocal transfer +[Partition 0][Node 0] End of program +Charmrun> scalable start enabled. +Charmrun> started all node programs in 0.179 seconds. +Charm++> Running in non-SMP mode: 2 processes (PEs) +Converse/Charm++ Commit ID: v7.1.0-devel-115-ga4b8220a7 +Charm++ built with internal error checking enabled. +Do not use for performance benchmarking (build without --enable-error-checking to do so). +Isomalloc> Synchronized global address space. +Charm++> scheduler running in netpoll mode. +CharmLB> Load balancer assumes all CPUs are same. +Charm4py> Running Charm4py version 1.0 on Python 3.8.10 (CPython). Using 'cython' interface to access Charm++ +Charm++> Running on 1 hosts (1 sockets x 2 cores x 1 PUs = 2-way SMP) +Charm++> cpu topology info is gathered in 0.000 seconds. +Running Task Benchmark + Configuration: + Task Graph 1: + Time Steps: 4 + Max Width: 4 + Dependence Type: stencil_1d + Radix: 3 + Period: 0 + Fraction Connected: 0.250000 + Kernel: + Type: compute_bound + Iterations: 2048 + Samples: 16 + Imbalance: 0.000000 + Output Bytes: 16 + Scratch Bytes: 0 +Time for last run: 0.009789064000017333 +Time for last run: 0.00100620699998899 +Total Tasks 16 +Total Dependencies 30 + Unable to estimate local/nonlocal dependencies +Total FLOPs 4195328 +Total Bytes 0 +Elapsed Time 1.006207e-03 seconds +FLOP/s 4.169448e+09 +B/s 0.000000e+00 +Transfer (estimated): + Unable to estimate local/nonlocal transfer +[Partition 0][Node 0] End of program +Charmrun> scalable start enabled. +Charmrun> started all node programs in 0.190 seconds. +Charm++> Running in non-SMP mode: 2 processes (PEs) +Converse/Charm++ Commit ID: v7.1.0-devel-115-ga4b8220a7 +Charm++ built with internal error checking enabled. +Do not use for performance benchmarking (build without --enable-error-checking to do so). +Isomalloc> Synchronized global address space. +Charm++> scheduler running in netpoll mode. +CharmLB> Load balancer assumes all CPUs are same. +Charm4py> Running Charm4py version 1.0 on Python 3.8.10 (CPython). Using 'cython' interface to access Charm++ +Charm++> Running on 1 hosts (1 sockets x 2 cores x 1 PUs = 2-way SMP) +Charm++> cpu topology info is gathered in 0.000 seconds. +Running Task Benchmark + Configuration: + Task Graph 1: + Time Steps: 4 + Max Width: 4 + Dependence Type: stencil_1d + Radix: 3 + Period: 0 + Fraction Connected: 0.250000 + Kernel: + Type: compute_bound + Iterations: 4096 + Samples: 16 + Imbalance: 0.000000 + Output Bytes: 16 + Scratch Bytes: 0 +Time for last run: 0.015119499999968866 +Time for last run: 0.0009688070000493099 +Total Tasks 16 +Total Dependencies 30 + Unable to estimate local/nonlocal dependencies +Total FLOPs 8389632 +Total Bytes 0 +Elapsed Time 9.688070e-04 seconds +FLOP/s 8.659756e+09 +B/s 0.000000e+00 +Transfer (estimated): + Unable to estimate local/nonlocal transfer +[Partition 0][Node 0] End of program +Charmrun> scalable start enabled. +Charmrun> started all node programs in 0.181 seconds. +Charm++> Running in non-SMP mode: 2 processes (PEs) +Converse/Charm++ Commit ID: v7.1.0-devel-115-ga4b8220a7 +Charm++ built with internal error checking enabled. +Do not use for performance benchmarking (build without --enable-error-checking to do so). +Isomalloc> Synchronized global address space. +Charm++> scheduler running in netpoll mode. +CharmLB> Load balancer assumes all CPUs are same. +Charm4py> Running Charm4py version 1.0 on Python 3.8.10 (CPython). Using 'cython' interface to access Charm++ +Charm++> Running on 1 hosts (1 sockets x 2 cores x 1 PUs = 2-way SMP) +Charm++> cpu topology info is gathered in 0.000 seconds. +Running Task Benchmark + Configuration: + Task Graph 1: + Time Steps: 4 + Max Width: 4 + Dependence Type: stencil_1d + Radix: 3 + Period: 0 + Fraction Connected: 0.250000 + Kernel: + Type: compute_bound + Iterations: 8192 + Samples: 16 + Imbalance: 0.000000 + Output Bytes: 16 + Scratch Bytes: 0 +Time for last run: 0.009021359000030316 +Time for last run: 0.0011290080000208036 +Total Tasks 16 +Total Dependencies 30 + Unable to estimate local/nonlocal dependencies +Total FLOPs 16778240 +Total Bytes 0 +Elapsed Time 1.129008e-03 seconds +FLOP/s 1.486105e+10 +B/s 0.000000e+00 +Transfer (estimated): + Unable to estimate local/nonlocal transfer +[Partition 0][Node 0] End of program