From 66d33c0fb75ce010c5bc54b9f949f5faadda8ab0 Mon Sep 17 00:00:00 2001 From: NunoSempere Date: Mon, 27 Nov 2023 14:13:50 +0000 Subject: [PATCH] generalize parallelism to arbitrary num of samples, fix off by one error --- examples/more/00_example_template/example | Bin 23152 -> 23064 bytes examples/more/01_sample_from_cdf/example | Bin 27576 -> 27488 bytes examples/more/02_sample_from_cdf_beta/example | Bin 27520 -> 27432 bytes examples/more/03_ci_beta/example | Bin 27288 -> 23104 bytes examples/more/04_nuclear_war/example | Bin 27416 -> 27328 bytes examples/more/05_burn_10kg_fat/example | Bin 27376 -> 27288 bytes examples/more/06_nuclear_recovery/example | Bin 27664 -> 27576 bytes examples/more/07_algebra/example | Bin 27248 -> 27160 bytes .../more/08_algebra_and_conversion/example | Bin 27248 -> 27160 bytes examples/more/09_ergonomic_algebra/example | Bin 27248 -> 27160 bytes .../more/10_twitter_thread_example/example | Bin 27408 -> 27320 bytes .../11_billion_lognormals_paralell/example | Bin 27288 -> 23104 bytes .../more/12_time_to_botec_parallel/example | Bin 27448 -> 27360 bytes examples/more/13_parallelize_min/example | Bin 0 -> 27264 bytes examples/more/13_parallelize_min/example.c | 67 ++++++++++++++++++ examples/more/makefile | 3 + scratchpad/makefile | 2 +- scratchpad/scratchpad | Bin 21816 -> 22672 bytes scratchpad/scratchpad.c | 14 +++- squiggle_more.c | 33 +++++++-- 20 files changed, 110 insertions(+), 9 deletions(-) create mode 100755 examples/more/13_parallelize_min/example create mode 100644 examples/more/13_parallelize_min/example.c diff --git a/examples/more/00_example_template/example b/examples/more/00_example_template/example index 92e31166613a83f99293b2f867c99ad93e83f6a5..f2b1432e7d613f42b4322fa34cb47e659eded7d2 100755 GIT binary patch delta 4799 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 diff --git a/examples/more/01_sample_from_cdf/example b/examples/more/01_sample_from_cdf/example index aefd99d7494e728c7e7f596502f563a896d57a6e..4920d36df0aa4131594eb4daac327e4cbb407f21 100755 GIT binary patch delta 5569 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 delta 5801 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 diff --git a/examples/more/02_sample_from_cdf_beta/example b/examples/more/02_sample_from_cdf_beta/example index ffb38833a6e98f19f36569b46f9b4949e7034167..521640a38fa96fe03d2e7a70c05b79e635dd26fc 100755 GIT binary patch delta 5579 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 delta 6492 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 diff --git a/examples/more/04_nuclear_war/example b/examples/more/04_nuclear_war/example index bb6534bada4edc0f1b41f13dc66041b38c6b3303..522f037df559ddc2c8dbe0e7ecda4933163a006d 100755 GIT binary patch delta 5361 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%0DRmuKj}(5gBs_I$9;?RBaH`@JF+ zMq<-O+(t5|AVhX8Z1<`>Qed6i9!^!{ksO8Uv+!)jvf0Qx$7=7+RjhweKzK&&TSX19 zM*k*KZy;<|tyol8JMOw~k7`{+y>r}1F_-5|Vck?bx1hnIu?yx!>Mc~TVQ*VBNy6Qe zRroJ>A9((>W_3^hMDn^ z8s?&XO%GyCziV<^^w97U#T8V%*lk&>W}YZ|Xx(DBVTa1@pxuinSfaTkiedT=J)@~B zio2+|xn1u;wDUp@%~txb* zcFdk7h+#%ImyC^zt|3BtT+6+dXby@ZhTq~Qsl`L5TFjKU)J!*8Jcj6=canGMgnwpY z&va#E{j_fB3QII-%>0Bw(bE9(?0d@+$iA!|C+fOo6AXRx6k96oTQ(u?Y=hcj^m=2) F{{c|8xDfyV delta 5589 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 IhnQLaACbUsxBvhE delta 5457 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 diff --git a/examples/more/06_nuclear_recovery/example b/examples/more/06_nuclear_recovery/example index 92e14a0b8dbe9b44e7ab9c7d34312833fcfec389..0a8f64230c5b892cdc9b05d03b29ed0c5bbb2a3e 100755 GIT binary patch delta 5324 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 k6%I15T83v-Yt3CeP13XA!LsK2ZEv0zW@LL delta 5639 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 delta 5224 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 J=|*eD-vKSqWTXH9 diff --git a/examples/more/10_twitter_thread_example/example b/examples/more/10_twitter_thread_example/example index 0095d68d1882d66a3845efab1c80613b5237aefa..1960f0dff8c29af95b9ff34497081c45ecceb429 100755 GIT binary patch delta 5017 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 W=Icft4D&`h0_p79u#|}Pvi%46I828C delta 5320 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 EA9%Wy&;S4c diff --git a/examples/more/11_billion_lognormals_paralell/example b/examples/more/11_billion_lognormals_paralell/example index 81d03cddb59c518ae416fa7c5fb0276242283232..f46aaef4b75a713a06560a0f450a59ca9950b7e7 100755 GIT binary patch delta 6018 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 delta 6442 zcmZ`-3sh5Ay58r6V2GLruOvJqfdCN^f)&JG(F6hPFq7u?HDm@ z(0|&&-p;)^z3p}NE@yD;JZd`?v|8(3b)ut=bvYwi9b@ZMidt>2dhWl^1CN=`UhAB1 z|KI=b_rL#r&hC4U=|0PJnWG1ziI7|(kn{CBv)<8aMv9_l^!5|t=hMTDO)#%QZ#Yn5!Ri{V}7WVF{Unm$I@ z&MvY2tC|N{(R>i1R7+#)-ktfY%grUL$)@8U=4E_w@8@s5cL-ikIqW91qJyKIB+N_n z%~H;cu!O_PT@lVCq4p9!`9MX&Ja4Q6v`|qnyi5Wi=^;{UcIrE{Xlg&ew5Z zBS@tr`vp0I%!6-6r1b5)xAIqZIt0f|uG9wD%P}T|_y_^RGsNF07b*gm6-U z5y(h`6?D}KUh*S>uT}8Eb`WbKUIkAZk<&^AFL;=wXra6hAKEZ|UIkD6OisND-YAoZe^BsJyb-j03O-h} z&l2FcLJ=n_gm+NE#~;|KRjGFwMy1TeHQUdh2$Nq6lLKM$)-d_SFuCoqJX08P(_=!A8^YwpVRDU9<_?kSa~J83s0posb?sTDe z12bGeeTBm0`>k)cHAK!dGA#)1zHfSsvF*;OodBGvQQS8a+yBXlN%w%_Dz%EOg_WC`swiOvz zTUKOA23DnmTb3543A_n*b6-08^~>!TvxfAGMju28$D}@(4sRx8urH^>#|bueQaW5u z7^63#GPLVkvA*bZh)uMQx?`sW=3~>L_ra5x$$oB!ro@ZvpVQ!(qy+7yG(oMtl?H2* zOo{P#X<_WBL7cddS|AL`Z>PbYq%mw;8uTa4N|_*(GFDQv+WycpxJYO(h=%02G{{RX z8L>ANJ9GOsJfED!WWqbi+mmCF!OBP3LlbbF(8c5_F{r<@9jF?Ur(%|X&$gY783Q9z zXRx=whJ~pM*^FDzZYzSjsVzQF=UQ`U_SZb`KN=cIq2J>V?Y{TWe{Aw8{f;0ykN(#u znNxuX-Q<3KU_Z*8B}rW8^M=aKwB7D|58eLHxMin0`WY^e{THs=qyKfN!hekGA5d}r z2)i2#y8~s9s+JwCWcn&QOEjLbH!1>)`ZR$uo@0V;UtlB81w5Z<{H^v_&X02%a6jVi z1;q+HcC$XkMLIq9*y2E}gTsuuGBCyLo_zL2b7L3R`68+4_(bF8&kVWs#`60WlP|S> zS<2kyI*w{MRg#_iw>5T6TOUS2$HK+#MefD!CGMq1I*u`Ur*CB74rpwIlC)@Ou$!1_ zc+oy7vKFIZ2;iW7JW~T9`^K1W69{?#4sPa;=!^4T3VjIc(x=DmMn05uljjf7jUJkS zxzIicre|oUq6SwkPM5eV<0bYj3v^@vtFwSP^Mz6E7D6^gqc(qw1$r{$bo=n2%{yJ` zzs?2nKQP0Q%=wHLk{x5T-{HxOcB4NvL#gBUtiuG49Df+K1X;2CA`=`Q>x^!RC!{i< zUWg!cFfaV}3839XF221}1w_r%hOS@i3TO#H@v!@$uQUS0(q;H0p1izO7#nY}7mYakrenm^S(Zo>}OnhiMG>T{N_e zPs;DcFATx=%xHv$)R9B~F4sa`e~}$k;(o3DUs_w}1?V4N>T}O^*SP&>-E(T5La+bPX+pb=mR--2g|c zwqDi0@=N4O^LQyr9-`j}p(UuF?)N;T9>Y}n3#%qSXuEb>@7sbthfUe@KFvGb$myFu z;{vUALxuk)$9&bOU(=5<_Gfo^-h+M0_W0M>9n?z=bR_1`YOGVALMl3^*eg0d)`V7H z;rWWm7u&w3o?5t^drBNZ+dT9@9NDeMPI$wGrnmK5JU+XIwi=|(({2c@W1BX)P3*(r zPds)y6FAP{roX}RU+oS(jlgw|eha^L54zFfBkGP={6~1YhxVaT^iRMXc9fp$?s=7g zqGfn0x#w2+&$$z8D*SidbKL$1HC$l)9OR#^9QzPgLKDh`Ex9ir=+S!B@@p_+m-Bx4 zjJBrwhV|C9jn)lyO)YC0Hdt3}XwGc4E?>2A)rM8|YZ|Qe&sm#?japZ(Z>U?oA=_G4 zzjl4=s^%5a$1B`(j`#JQAxBkJc{4TEzC#JbxUq2k|~) z5OEX+aPnuKw<5M6PDJcE!}HaMhO<1s9I^Tw&(lEP^%tIh6VdrO&-YRJBG2Q`kB^N0qV(VK`)bb&(r${j@9jM$4l z{~ne9j@t_{cmwNEWBp(9{40pPh`or`uXz59Iu}QVnVU!qAV%QlZ#9MzJ7N%V3Ze^x z@;1a?#30O?keTenIl_X3ct!{xn|91j#E1I~hXAilNGq$xSyg_A(r?LDYJt2JXHQPl zW(PjKSfl(|Nk9F2@R{-_cr+ow*MllNw1q^?gZO+H#$843JaYAdmH78?AM+D&@zQB? zoX*OAs?}-AM+(1TvB+__fU6bu4&?p|xkAz2$zDSHijkSZuZRc9&7)MrB#>e46m}~I_qkk!L8E}{N5sGXicb}rPOZ{^>lbN%4;t0 zd;`^EqMQc(WjS(mj%lJ?67?bEo)Z{x$WG)QT;SoS6D_RuBD_0shJ~Q_*d!AUu@_B} zkTZfYKZCgrh51%?@Ncjne=6H@3Es$mn!R%g&gD;F$raERG_x&N;l~A8?0XbawN|X5 z6@BXdRXAOcn&80*K95$uR%cy?_EN=yAe}Rs&nj6yLHZ2Bi*{fju9SRJHvji)fIYlPPfictg{yD%*8rGu})Ju z(u0L7v2^cs_|2qZ&Cf7<{yNXYH?9~A68#ZT@^5b!*otOOFgs~$gy6X+B>5*fQIct7 zrU}nXA(E{RMR7ky$H#NmpEB*P&KaA~C z8*)?UVcpbeOc3@@O<}s>)YKI$UY+b`uqcIdp@~ z9jA&SK|~XN^3QU|MT{i1Q83$G2EFchm7aKEzuV+%SN_^bwWx@Z$dmG9#c1qOGGbmu zVu*Z~qtvQ!wR?({jBFn#-$eMH(5gs0k*^|@3KcOC`3~tx-b~~Pev-$v^eP!KuTtFL zhzuMnewrBorX-iKLSBiv1@4r7aub|X(aVMq~WIWWE>^EQ#s z#`b9Xt;9RSMt@Z1Y2?BLn>h!1%pT6f^uYUEZbh$jKP8WE6&5g{qdC2T{qXB4>>2G) zmtCYjkTf$Sz8dl>OcnCgu5fmu#Ue>71WuIYV{V1Sw`Ysh2r(A3&kxtOv%+llic0yt zOD+Wc6${}^MQj5-{f(@J7{V;?2>d^9YYoOyBm2*MGV*kAxEF-9T52*Ic`Lm^Wy)aZ zbQ4oc-*qjLb0DI=-Mg=7{2%pcHWRyd{jOW2tlWUX@2pM~! zuExhW;c`tbRL?bnZEmj7i=WRl$!LW-WZR{HF5_#kXKt=m4(GUUFU*}}a0vy6_ly^8 z^K!NFPQ-n-U|xYyj@&Ztg*|8_AC879xG=9kD+eoc6(rOaXyqVnt%3!$1;dA*bEeo{ z5cbqMqr6h%)o`JW}0K^PK^a3cw$1ODhB4@H5HfI$(BMvM^C6?4Us zv`)!1(4BjiWF-xD^5pT3L!#7QMtznw+kn&Oea6s;1O` zXVI@%^pj5A6lZBsm)*5>=-k|uy2R?kiC4qlo@}L^>MZ+g*bGgMvE6|Y1SiVa`uDcb z0aX&eKxfrvo8$N)DQwx4=6&6=C&l!hL0lp20s-_*4I;r2&1 zKHSmT)YA44rA0iaV@%6*ER3n?WQ5g}ih+fHN*ozsjA__h`Z~gvdWXXPu6gkI8a=P{J5 zGh0LJ7n)T~LH!5-rzdn~+Nq0*Zl1x0(JNqI2HQS^4X1IipMdR}!D=Zw(o9j2QPI6K z*jZEzb`jWt8LXbRfZYssa0Y9n7r;Ibc6bIGOYeex2kht!HhySr!Q+~r7}K-~m5g1L z=OhlzH74){sJ*g+F@w#`*fm4S-_gE~h@08|;!TPuB%Ck#7VOJq?4YP$H9VjhM#JCptt<9?^-tM5t{+R=xS1QhRuiX0!~VeHFZG>cG?e40B16is);OFf#)%Ta%7xI-sT7;IfI z&kidHeO*9*fyzU+F=G02v#Xl2O$$P#dO6n>8B^v&ZzL91BI*fT# z^8!5+S7cq66EGNbjlme*i1t;3QPW6g(OFy%2;a`w3 zA(Q`t3KMMnDXL4zh)sb|Dj284t;wLigi8KAolS7)j(ruhwuAJEIpHhkz|dv7 zH?f^p&|sp&T<1V=e7_3`<*K1E`Yp7CJKmzt6Ejr_4vI@kl*`!RqjowHa=h*+`MBR=wVX9tpgWgQGBz$#Ebi@RWL5KOz2MA+w zF-;|lg&0$6Qck3bE+&sqsvGeyza{z@15IP{E7X)+wYDll-@6)f-8&%<#X*8{vN*(RH{C9mJ%ibgY$xDEdo+Xz4 z8@Gza3{M|J)EHhp&c}RlTC{!pMHIDcPx7>kNIj1myZzk5hdn*%-m8+&eN4N|mwT+- zd&BVRSoa8*MlPr&FP7ypyn0gdb~v;y-wxT+aw2=o!{77tEZ4ey+vM^ar^|i28n2*l z*mYP(kh&cfgRO)~J*brVa{t5Qn{RO!U3?;`HE>j=o+ns&_ff4&{@|+1U@Ds~FZ#6e zqT72>>OP{C)Qt|UboXY5vGb7B{dU%U_q!Th_q!f&H689A<^`ud%SXhww&odZPl~~C z_(i+ z)aSAsIQ9NC)ch}yGc!YX!4im+_)n=R^ZWcToy&Yym1m*HvUbj@g6Pp0?A(GCBxlWz zK4NC9;FQPvH)M_XDJ{E!SJ4yMDY|{g#n6iGr=MpZ=?A&@aBZOeEBXrcy|iFn4qrrT=Pe9>?XQ?^KK*oF zHQz#0^O{uAf2HcYMZAfAoHsj1`il}>+E&BlscVLY(N;s&2oAvsB(&&@CNa0Vw?qV= zrjvQe3)*4=!HMmH4)jEr`X3J&5n8U?;*h&lJ-b3OG=U)wWnb&;_0dtIdyoH{ko1N#~Fj?s7f!$pNzb`n2FiUEc z3=h96`8phSq|)Dfi4Z9_JbcvSUFWd38a9t$ghgWdSpkD0E_*zVsG{Tl>BI?;TE;xy zud<$`l1-@KimS9-EKnHLbSO}Z|iVSM}K$f2cmH_ty z2Z3)0`5$HZ46y37EMHQwU99&*S=Oo<8$AOH7Uy$T$_f0%`~<+GkFR=%ojWDjtE?f z9jMO7Q}?bc+bMoYdVLkVuH2Y~9ut?f4m^_J;oVRXI#1(i$8O-d7bt=oz_S@#bbtxo zE?+~vjrx|vW_Lh>WEChv`x87};E;O)#fkS6o=@oAC3o^V;_hG{e6#~a^zmR8z3B6x z!Xb~bW^k9N*qs>9u*(n4kcbFsq%H15-bG%#e@?$}r>pEA(g}ASGThg08wA!;TlO$^ zcfHb44AYKKNcxj33-^d3xF^9$w6-)h`87!H7Vc0dbG^M@FOE2_J?u4ToT0wbN`8>e zmd0v6KuoCU>(UHr2!5B^qC9w$8sG%WGhpZPnXbFcL0l%!#nrNzsz6>>WrS5mHI-R4vnMt59u&bpGFD z*)3*RrZ+yLa_cQWRxj4uePN6BSx;-+dgl+qUHZcAh+2IwS8F(Jlgwg;qPX$A0Siv* zla}bh5J+{1NX-zR^>~;rbbBu$Yel7L+8OACRZ|)|QIWzo(PtI; zrb6XX4EF@eUdmo!OPv;OLlIYdQ3{o|0&JKzuDF-)p_f+Jcmw@@#Ri^51(h!jovE~N z>lCJVdr{-pO#`J?$E$U0573+tGC5OI&1SJ_E!9+);Y)h}$_7>iG$%CU>v4NgGZUM3 z(z)t9?j%!<+1k7Kb`|mKC!SfzRb$55T{ZD)Gs~iFXcdyTCZ8K=Urju{S91sM?0lu! zIv@@eO6ZJaqOL-K4N}2MbHb=14f#}3q*HP9;L1EcN_{X9IG4hPQg#A`i4q!t)Yu%P z#rBJ`4-aRvnVqgc8rs5u2(J$UQn7&4RZY4skrPl<Ob{5hS8mr5%FlY@{m%<>lMqtR(PiHr3(MQ3SXtBKj>3&2Ys~eUgQVs`g~I;HH2^z)q`zN z(o6{RsDFLFZjZw5p|SM~O`&uV!eO$u=9{LKgcQQPRNuNwYgb~AcDI`8Myp9zg6pU# zC1l#LkhB|25i>P*Y%rOcl>`&Q|Dyg4`H`V4iugaZK}4#xEngSfMJH9aEi{FaP6#d3 z-jZT_wGm^B?NS2LG-FN?1Rd2*vl$={At`aE6sej{EQz$nW#fJh#OJg;$bZJvG d6>Vz5VeQ|vP&aX3P?kX-ZCc2~$@Ea>{{zQNN@V~5 delta 5324 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 I(u&Ie2YUcf4gdfE literal 0 HcmV?d00001 diff --git a/examples/more/13_parallelize_min/example.c b/examples/more/13_parallelize_min/example.c new file mode 100644 index 0000000..cf1f9ea --- /dev/null +++ b/examples/more/13_parallelize_min/example.c @@ -0,0 +1,67 @@ +#include "../../../squiggle.h" +#include "../../../squiggle_more.h" +#include +#include + +int main() +{ + /* Question: can we parallelize this? + A = normal(5,2) + B = min(A) + B * 20 + */ + + /* Option 1: parallelize taking from n samples */ + // Question being asked: what is the distribution of sampling 1000 times and taking the min? + double sample_min_of_n(uint64_t* seed, int n){ + double min = sample_normal(5, 2, seed); + for(int i=0; i<(n-2); i++){ + double sample = sample_normal(5, 2, seed); + if(sample < min){ + min = sample; + } + } + return min; + } + double sampler_min_of_1000(uint64_t* seed) { + return sample_min_of_n(seed, 1000); + } + + int n_samples = 1000000, n_threads = 16; + double* results = malloc(n_samples * sizeof(double)); + parallel_sampler(sampler_min_of_1000, results, n_threads, n_samples); + printf("Mean of the distribution of (taking the min of 1000 samples of a normal(5,2)): %f\n", array_mean(results, n_samples)); + free(results); + + /* Option 2: take the min from n samples cleverly using parallelism */ + // Question being asked: can we take the min of n samples cleverly? + double sample_n_parallel(int n){ + + int n_threads = 16; + int quotient = n / 16; + int remainder = n % 16; + + uint64_t seed = 1000; + double result_remainder = sample_min_of_n(&seed, remainder); + + double sample_min_of_quotient(uint64_t* seed) { + return sample_min_of_n(seed, quotient); + } + double* results_quotient = malloc(quotient * sizeof(double)); + parallel_sampler(sample_min_of_quotient, results_quotient, n_threads, quotient); + + double min = results_quotient[0]; + for(int i=1; i results_quotient[i]){ + min = results_quotient[i]; + } + } + if(min > result_remainder){ + min = result_remainder; + } + free(results_quotient); + return min; + } + printf("Minimum of 1M samples of normal(5,2): %f\n", sample_n_parallel(1000000)); + +} diff --git a/examples/more/makefile b/examples/more/makefile index c03f24e..a95dccc 100644 --- a/examples/more/makefile +++ b/examples/more/makefile @@ -48,6 +48,7 @@ all: $(CC) $(OPTIMIZED) $(DEBUG) 10_twitter_thread_example/$(SRC) $(DEPS) -o 10_twitter_thread_example/$(OUTPUT) $(CC) $(OPTIMIZED) $(DEBUG) 11_billion_lognormals_paralell/$(SRC) $(DEPS) -o 11_billion_lognormals_paralell/$(OUTPUT) $(CC) $(OPTIMIZED) $(DEBUG) 12_time_to_botec_parallel/$(SRC) $(DEPS) -o 12_time_to_botec_parallel/$(OUTPUT) + $(CC) $(OPTIMIZED) $(DEBUG) 13_parallelize_min/$(SRC) $(DEPS) -o 13_parallelize_min/$(OUTPUT) format-all: $(FORMATTER) 00_example_template/$(SRC) @@ -63,6 +64,7 @@ format-all: $(FORMATTER) 10_twitter_thread_example/$(SRC) $(FORMATTER) 11_billion_lognormals_paralell/$(SRC) $(FORMATTER) 12_time_to_botec_parallel/$(SRC) + $(FORMATTER) 13_parallelize_min/$(SRC) run-all: 00_example_template/$(OUTPUT) @@ -78,6 +80,7 @@ run-all: 10_twitter_thread_example/$(OUTPUT) 11_billion_lognormals_paralell/$(OUTPUT) 12_time_to_botec_parallel/$(OUTPUT) + 13_parallelize_min/$(OUTPUT) ## make one DIR=06_nuclear_recovery one: $(DIR)/$(SRC) diff --git a/scratchpad/makefile b/scratchpad/makefile index a2aed9e..d515383 100644 --- a/scratchpad/makefile +++ b/scratchpad/makefile @@ -9,7 +9,7 @@ CC=gcc # CC=tcc # <= faster compilation # Main file -SRC=scratchpad.c ../squiggle.c +SRC=scratchpad.c ../squiggle.c ../squiggle_more.c OUTPUT=scratchpad ## Dependencies diff --git a/scratchpad/scratchpad b/scratchpad/scratchpad index 84baecacfda789d9cfd733c936b00726772d0423..c575ecd5910c37708634c8eb614cb89f706fb3ac 100755 GIT binary patch literal 22672 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 Uf_4Hj+4z6Y$Ke74gP|z>4}69-{r~^~ delta 4306 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 V8e@uEsJd;Ay{*Ae{WQ2D@IL_5qNo4> diff --git a/scratchpad/scratchpad.c b/scratchpad/scratchpad.c index 055657d..ca8fe54 100644 --- a/scratchpad/scratchpad.c +++ b/scratchpad/scratchpad.c @@ -1,4 +1,5 @@ #include "../squiggle.h" +#include "../squiggle_more.h" #include #include #include @@ -16,7 +17,18 @@ int main() }*/ // Test division - printf("\n%d\n", 10 % 3); + // printf("\n%d\n", 10 % 3); + // + + int n_samples = 100, n_threads = 16; + double* results = malloc(n_samples * sizeof(double)); + double sampler_scratchpad(uint64_t* seed){ + return 1; + } + parallel_sampler(sampler_scratchpad, results, n_threads, n_samples); + for(int i=0; i