From 6a333a4357677807260accef9ce35227eb798872 Mon Sep 17 00:00:00 2001 From: "William S. Moses" Date: Mon, 4 Jul 2022 01:51:59 -0400 Subject: [PATCH] Add mcustom --- {6_multisource => 6_multisource_lto}/Makefile | 0 .../multisource.c | 0 {6_multisource => 6_multisource_lto}/myblas.c | 0 {6_multisource => 6_multisource_lto}/myblas.h | 0 7_multisource_custom/Makefile | 13 +++++ 7_multisource_custom/lib.exe | Bin 0 -> 18800 bytes 7_multisource_custom/multisource.c | 50 ++++++++++++++++++ 7_multisource_custom/myblas.c | 33 ++++++++++++ 7_multisource_custom/myblas.h | 29 ++++++++++ docker/Dockerfile | 4 +- 10 files changed, 127 insertions(+), 2 deletions(-) rename {6_multisource => 6_multisource_lto}/Makefile (100%) rename {6_multisource => 6_multisource_lto}/multisource.c (100%) rename {6_multisource => 6_multisource_lto}/myblas.c (100%) rename {6_multisource => 6_multisource_lto}/myblas.h (100%) create mode 100644 7_multisource_custom/Makefile create mode 100755 7_multisource_custom/lib.exe create mode 100644 7_multisource_custom/multisource.c create mode 100644 7_multisource_custom/myblas.c create mode 100644 7_multisource_custom/myblas.h diff --git a/6_multisource/Makefile b/6_multisource_lto/Makefile similarity index 100% rename from 6_multisource/Makefile rename to 6_multisource_lto/Makefile diff --git a/6_multisource/multisource.c b/6_multisource_lto/multisource.c similarity index 100% rename from 6_multisource/multisource.c rename to 6_multisource_lto/multisource.c diff --git a/6_multisource/myblas.c b/6_multisource_lto/myblas.c similarity index 100% rename from 6_multisource/myblas.c rename to 6_multisource_lto/myblas.c diff --git a/6_multisource/myblas.h b/6_multisource_lto/myblas.h similarity index 100% rename from 6_multisource/myblas.h rename to 6_multisource_lto/myblas.h diff --git a/7_multisource_custom/Makefile b/7_multisource_custom/Makefile new file mode 100644 index 0000000..bd29b39 --- /dev/null +++ b/7_multisource_custom/Makefile @@ -0,0 +1,13 @@ +all: lib.exe + +clean: + rm -f *.o *.ll *.exe + +%.o: %.c + ../dockerscript.sh clang-12 -c /host/$^ -O2 -Xclang -load -Xclang /Enzyme/enzyme/build/Enzyme/ClangEnzyme-12.so -ffast-math -o /host/$@ + +lib.exe: myblas.o multisource.o + ../dockerscript.sh clang-12 /host/myblas.o /host/multisource.o -O2 -Xclang -load -Xclang /Enzyme/enzyme/build/Enzyme/ClangEnzyme-12.so -ffast-math -o /host/$@ + +run-%: %.exe + ../dockerscript.sh /host/$^ 3 diff --git a/7_multisource_custom/lib.exe b/7_multisource_custom/lib.exe new file mode 100755 index 0000000000000000000000000000000000000000..0ab4b2bd58b92219b39720e3652104615367ecf8 GIT binary patch literal 18800 zcmeHPeQ;dWb-()|TgLY8%3oSO8b4rNWI(H3SqK@&_^mA2Pp~$MErSR)>(zcpTUNX3 zet=Dht5m@B1w@>dHk}MJ^&g#<{KNPUQV7$4WEtChG}ts@Af%}QLsx;=LSV-M+uPr{ z?_O#5NeY?iOlO+eYrlK$`Q3BQJ@>qK-`@M~d-}`v;3liZ!ep|tTN!Z&Tq=i*oUs8} z0IISUwh+08UCZWyw{r{`r)nAPvvQV6T5Yh*21Qa#?DV%TAdY7_*mqmCd+TB=8}srK?}R(-3= z3zBN0-<^U=Jz_~u5qgTylk~UywF8eoy_Lmgf5A zCT}+FZRGu421n>rY~H$q{n_81_@{Tad}pv~!>yMcbuRRM{cpPdoctyq$R5d1B6%5p z!sS7Ae`vZKf=gx*UN{GS-5mH$bKu*7D>%$a0We#;blJ>?GsG`K;c8}~P&k{7Wpbf- zIFV!nnM5iVXW3jPmrk<&SbsK_WBuV|G97^=X@#=6Fr@p#i4@x$>}cH>YVx>b znUoS-o>Qu;E5XH3$4T_ku$G(T_poO%lWL?zAcA$~MO0ZBEzD+LLjo zD_T22%(7aPbG0rQsCx~-ve&6}h)PG0E&nBDZ$ajv6(>=2C09&!JHxHV^r;=s?)^%I_}*0b1M9f zvI)v?=DX3K?l*{eABA7y_?0$vNY#c$E;t{#5zz$l4otijcP@Wz(%JnQM7!ZJI^kS? z2*9D>+R@y-9jlLNqwm>)pO}uxe)MIL6WLV`RD2M3-u)gF4ny(Oq;n@IVaq?51P=NN zD7Ek^j@PxJQR@APj-ioa{`oQI%0UF5ZP)ZKHT}1m{+6b{8q`PI^Nbk=OF zMs~YP)8D>_E@_;P&fsHR9=G;bo5wZjbTJ%Sbx>dCDP*D4J+>b$j^IGc-J@uOeSB%! zdAdH$JjQNayFS{XAJg;`nm(!Nm$c!BJg!0nfs)O%dE96y=ut4P>q_gv8E-7%d z%|q@6JuYn+#lW`C!d5cEb>x8REPV4~vDiJ{g&Oi_N8ql&oq-*JuI-(HmuQp^6|D~~ z)gIed?LYUzW#9{6d|51Z=ts9i&UB1^Xb}f6gnSPaGPj~o<)klaukIV{nMbm$!t$indNImzm zC3o%c?ZU?B@a@9HE86G>c1YV1=$fD#r}RvrMmn_(&cOK&{dC9ZM|Mp=>OU9MCkrRO zC>BX>9F&J+BjnH_9tFF9E@4cays;vr~0vgDjvJhqv>aY`bV1ni=aNh3v;3WG~PIx5A^4d}&>I#n-5! zpDKdo6|1PCiz+skS6ojO>rgR0#P-v8pgz;^qybU*3xpqoXZgE$(hADQ2!;~IG_Ih- z?(zFjU#@Q+k8S!Qk1;0SpesTQebbnfX%XNUe)U`L03HqaH&FYM5U>ze>?53arlyVV8fd1#MbwB=UPXc$EI zG0G-``sp_PzXQc(|Air8(boQF{@45*?2;#;^f!+GzCw>E*(6D0ra;yzsS<%o1S%1z zM4%FZN(BBtM8JZ*xal;pp`kCG%{BDrlet7TozFyK-U!16p+dWVbtv4ZMEb%R<@)Pa zv))WN8VV>^uUC9Vxz#9d2A+sPCz{TMd$M(b)%W;zDeIM0ajXX{SK8Lm?7jxa!866; z+n}zAVv#oUe4q!x?*=^#s(e~3x`7{`EEaDBWuIaC0;+)SCV9{ts0#Ympd+9MK#zky z4|?ESv1mv4PJ&(qs{FQCYy#~B?FJnIJpf9H_Kzu99^A$(dt8<)7tOEU4;!>+Oz$G> zfv(D53&tcth;`V=Nf{kog|KG z=++V-64`v1%INzK(Jm!7j(@=M6yiX0RTgl#hOB)K+Vdwn&*C_Ux|N_*w+l67=XD&< z17A!y5@9ECJPS;8m+OBHjPxZ2mg9@iz8f)LL;&n=f?W+o55)uc%cKCj)!}Y+D6NjV zR);U(XbCvfq4|%`8?Ji7{$1OnR@?1X!hF0QQjm289MzB_-v?mp$L+V^H{4kd{; z2&eP-Z@_Oha9;+vf-;@gQ^4yCTB2bAyB?6TQR3cD` zKqUf|2vj2Q#}t9V8kKivP`nr2DR@k&d6JZ`2?!B#a*fe~9a&2Bc%G7c&-qG&<@0JP zULkn5c(0k(R+QvC{_Le9>#9GKQC1d6Mm4DjNOSE#$G?!uu!V ziRB*WZxi)G{r`-}_sY!;HjDGSNzgk5jSG6epk}?z8#msf)a~fWr*e5^t+&bRtM}(Q z=ik@p^ZJ^+{?!J~gis_IPW3AH$1>SOI;HpyaY7DnD#_Rq2VtWS2o*~lM=x^~idz;ve@Wwcy#%Ylkvpk7rXLkdzbFkVn47zA3 zvO73Xo>>FnE!!<-gO;auqQXXlz;dsP%JXpWWVaiailxS~%CU5z&2gn;M{SM81z)UQ zi_LM%!gUMRF1+sY8q1RTs{8w`ms`-dt%=E+j-}Sx=UO3c_ppTvZ-oJv&El}}=L{Ch zmyX5Ef&>VM#p`V_{%120dRe|V5^0E}Q}IM^Lt;%!Gh>lVE*{S2`opQI;H?4Sq+mcUZ6TPWeRKWuv*1so`&9JX%uA#g& zyi<<1&9n3pd9IH&^yCxCXahW~Ut1rze@(t!GW>!O)p)}{)Z8Rq_wP;RMW^WPePyHn zX5%7K>id)FRBwGWo$pD;>RWsOa`{wjeQzuk%OoOT!VK5b_eB+n!%A6_ zXH&|QRelv?!&ULLRh=Pb!=O4mD{fV2zq68L!(Di``=SlM z7V>^tB94)9UlsVa^e*Md9Y*WAbW?aq=%($EtnDIX;2LxwhwD&(V*%*H^I-|nIlo=R} zM?3qpXs*B+#MM82-sMjTc`}=Posd6ix_;>SE!lC2c@f*pDN0ODz$kl!!l<^25zgj;9c$6n;}QhS=dIS2lm zIdBX5MgAWY?Skd0hU3$AWyuGe{5Ri!)(blaOm?;aSEO4wYq_5C<2=Z@0<*L6WyFX2-?-L0%8d!u|n) zHwbITfRi2bdHk7>9}sbnce+yor*~p0@x2<*ap2Tnvz@;udFw2{gTHSAhq`Pok2hx{ zEE>zidK1}PEECH0ha#Aa#j^M^Fq#haCeuCPWGITcQ#KUN?_rU2|3EU9i$%RHzGnaI zLZNsfl?a71neg5awh%LWSv(W&kA)Cc1>8&+P1OK=HMNzfney4O`Ep2cZIqFt-*G(in(bd6v^g!h?udr%1XKy zia&t1V$pCeEI#T~)$-3ZOFsK7uQI;+G+{iLp$NJj%Ea!M4orUwS}u-Lj)skoL8rVT zUG7!+m!ihErZe=j=}=!d6-~xisN)V;iY8K_d^UzoP4}HbE51%O=|_`r6CbUHb20KF zmxzQ05-=6&$!1M%A$Gh={EOC5sB6ncaq5^iySE>6c~E=~%W0o1Vd)dg3@~pB>j5v8 zBVN8}s82)%6lm?hGN707x<1VRnK!yO1$zd~VaY^VVx3#Ygir_H!=xZe1IZlo^3Hm5 zu{|i$xIkT+pI&dQPmF}VD0C%fXc$An(2!*q4)-S_XcfbNGB0nyFopmzF9s)#7dRX1 z$@fAJi*k%)!6s7iv@C~vdgyu(HTW7kCd&wwEYjD*LPA*LcccG(Ml(j-S}|8Jl3cII zzawCtIg)H?x)uyA%%#3u*U0bYJ*C1Z%lp5Cn^7p$m+PN`FsMjDLCyMY!0|dlTDC9O zN!8-Pl=NTzE>xTBZ3R!yxTL;ZPszVOFe2pXIRy1x>dWU*cLJlPq<+Dsf}`haoJ>7O zGdRPBEEByK2R*}*`f`1Co9HO*pHq_lOF2pJLmfR6le}EV?H2k9DI=NvH&DhNM1e%5 zzFhAO3Vrz;PPT9E|HDGRRTz}(!h=FzJ_jWI6*$cLPXMF1PCe(5^L){9^NL28g@%!6 zo?fc22z^E9?-p{B$aqTnq)C5J=no2k9~n=bq&nsf<>?0|eYtLJ5f_M@4@xbw{|AJ= zjQ`a7Rxvcv2ARrb{3P%+3elk^O*Qhhl;SB3su z?Ms7ag-z+doR4-2ec6tbr?yHHtse;!;!{;p|65atQIPtQ+E9??Qqg}G2F-TOvb0V$ zV`S%|P>hxuMcFL-wK?>|enWA~SLhq-UXu{mXN3L(rYdv$EuwvMKUXyxir+9PNLEt% zMn#rOo4Q{-D7d>6MA`ee^E#JR?V(6190&^17B!6C0F`TIxvGxFNw diXwA=-6)(j88`c1Gl%}-4Tk +#include +#include +#include +#include "myblas.h" + +void __enzyme_double(void*, size_t); + +double dotabs(struct complex* alpha, struct complex* beta, int n) { + struct complex prod = myblas_cdot(alpha, beta, n); + __enzyme_double(&prod, sizeof(struct complex)); + return myblas_cabs(prod); +} + +void __enzyme_autodiff(void*, ...); + +int main(int argc, char *argv[]) { + int n = 3; + if (argc > 1) { + n = atoi(argv[1]); + } + + + struct complex *A = (struct complex*)malloc(sizeof(struct complex) * n); + assert(A != 0); + for(int i=0; i