From 2227b084a1b4c4542375928bc7c96c97866f8080 Mon Sep 17 00:00:00 2001 From: Akilan Date: Wed, 20 May 2026 16:52:35 +0100 Subject: [PATCH] saving current changes --- .DS_Store | Bin 0 -> 6148 bytes .../Cprograms/benchmark/matrixmul/matrixmul.c | 6 +- .../Cprograms/benchmark/richards/richards.c | 20 +-- Tests/isa/Cprograms/vm.c | 2 +- Tests/isa/testC | Bin 24416 -> 29384 bytes analysis/graph.py | 92 +++++++++++ analysis/grouped_comparison_CPU_cycles.png | Bin 0 -> 33957 bytes .../grouped_comparison_L1_DTLB_access.png | Bin 0 -> 34577 bytes analysis/grouped_comparison_L1_DTLB_miss.png | Bin 0 -> 27592 bytes analysis/grouped_comparison_L2_DTLB_miss.png | Bin 0 -> 25163 bytes analysis/percent_improvement_summary.png | Bin 0 -> 37830 bytes analysis/perf_data.py | 145 ++++++++++++++++++ builds/.DS_Store | Bin 0 -> 6148 bytes richards.txt | 0 richards_reg_10.txt | 0 15 files changed, 251 insertions(+), 14 deletions(-) create mode 100644 .DS_Store create mode 100644 analysis/graph.py create mode 100644 analysis/grouped_comparison_CPU_cycles.png create mode 100644 analysis/grouped_comparison_L1_DTLB_access.png create mode 100644 analysis/grouped_comparison_L1_DTLB_miss.png create mode 100644 analysis/grouped_comparison_L2_DTLB_miss.png create mode 100644 analysis/percent_improvement_summary.png create mode 100644 analysis/perf_data.py create mode 100644 builds/.DS_Store create mode 100644 richards.txt create mode 100644 richards_reg_10.txt diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..203fc3e407eabdd7438d559ebda36e92549dbc87 GIT binary patch literal 6148 zcmeHK%}T>S5T5Oi-BN@eR6GW}7L0;a@Dgf$0aNs#QWH}&7_+5GEm8_O>I?ZOK94iI zTeVbgB2s2x_M4rbg#EJYW&l8R#?c-?696PCVX2P8H$rjJB`H}?1ySf{JV6FAWZ@(m zE@iXhKQchyPC@`FY64%rUzn&6W3S;biL=~w-$bcgsjk&zO*Z6}f2SsX9^~V!6O1ls z)>A48=XMaD#e+$|xpA!0Jc!f5NEgJ>08=i{<1|u}jvA*?rfYo@kabz_H@BwK_P*P4 z+*!*p)?xc#Hml3co!z6;{(bV0s%Jx`z+Iee8HG49p` zBFLibCJAu`6sSTE2Dp*)Pd9p5m;q*h8CW3(?CB{RE3_tF3NyeA{0;+jJ~*g^p2fnT zK00vFEdV0@MruKudI_p=EP56TgBU>(rWDbX3fp1`Q;vSe=6MzigQgsWZ9as3v#=eC z&~L}*J31YNXOKr`fEie1plqg1y8lmp?*A8yc*YDc11rUVsC4~q2bW~;)}_VKUF)D; rqmocwVeq2_4Sf}3E?vdjs9MnPkb&q~EDWLtg?|Jz4LmRdf6Bl+ZvI#r literal 0 HcmV?d00001 diff --git a/Tests/isa/Cprograms/benchmark/matrixmul/matrixmul.c b/Tests/isa/Cprograms/benchmark/matrixmul/matrixmul.c index 368db17..335689a 100644 --- a/Tests/isa/Cprograms/benchmark/matrixmul/matrixmul.c +++ b/Tests/isa/Cprograms/benchmark/matrixmul/matrixmul.c @@ -103,7 +103,7 @@ double *dot(const double *a, const unsigned n_rows_a, const unsigned n_cols_a, \ double *bt = malloc(n_rows_b * n_cols_b * sizeof(*b)); - double *c = malloc(n_rows_a * n_cols_b * sizeof(*c)); + double *c = malloc(n_rows_a * n_cols_b * sizeof(*c)); if ((c == NULL) || (bt == NULL)) { // printf("Couldn't allocate memory!\n"); @@ -148,7 +148,7 @@ int main(void) { /* For measuring time */ double t0, t1; - const unsigned scale = 3; + const unsigned scale = 2; const unsigned n_rows_a = 4 * scale; const unsigned n_cols_a = 3 * scale; const unsigned n_rows_b = 3 * scale; @@ -202,4 +202,4 @@ int main(void) { return(0); } -#endif // MATMUL_1D \ No newline at end of file +#endif // MATMUL_1D diff --git a/Tests/isa/Cprograms/benchmark/richards/richards.c b/Tests/isa/Cprograms/benchmark/richards/richards.c index ddfdc2b..df20282 100644 --- a/Tests/isa/Cprograms/benchmark/richards/richards.c +++ b/Tests/isa/Cprograms/benchmark/richards/richards.c @@ -384,17 +384,17 @@ int bench() { wkq = pkt(wkq, I_DEVA, K_DEV); wkq = pkt(wkq, I_DEVA, K_DEV); - createtask(I_HANDLERA, 2000, wkq, S_WAITPKT, handlerfn, 0, 0); + // createtask(I_HANDLERA, 2000, wkq, S_WAITPKT, handlerfn, 0, 0); - wkq = pkt(0, I_DEVB, K_DEV); - wkq = pkt(wkq, I_DEVB, K_DEV); - wkq = pkt(wkq, I_DEVB, K_DEV); + // wkq = pkt(0, I_DEVB, K_DEV); + // wkq = pkt(wkq, I_DEVB, K_DEV); + // wkq = pkt(wkq, I_DEVB, K_DEV); - createtask(I_HANDLERB, 3000, wkq, S_WAITPKT, handlerfn, 0, 0); + // createtask(I_HANDLERB, 3000, wkq, S_WAITPKT, handlerfn, 0, 0); - wkq = 0; - createtask(I_DEVA, 4000, wkq, S_WAIT, devfn, 0, 0); - createtask(I_DEVB, 5000, wkq, S_WAIT, devfn, 0, 0); + // wkq = 0; + // createtask(I_DEVA, 4000, wkq, S_WAIT, devfn, 0, 0); + // createtask(I_DEVB, 5000, wkq, S_WAIT, devfn, 0, 0); tcb = tasklist; @@ -434,9 +434,9 @@ int inner_loop(int inner) { int main(void) { //INITREGULARALLOC(); - int iterations = 4; + int iterations = 2; int warmup = 0; - int inner_iterations = 4; + int inner_iterations = 2; // parse_argv(argc, argv, &iterations, &warmup, &inner_iterations); diff --git a/Tests/isa/Cprograms/vm.c b/Tests/isa/Cprograms/vm.c index 7195bd7..461b2a2 100644 --- a/Tests/isa/Cprograms/vm.c +++ b/Tests/isa/Cprograms/vm.c @@ -333,7 +333,7 @@ void vm_boot(uintptr_t test_addr) trapframe_t tf; memset(&tf, 0, sizeof(tf)); tf.epc = test_addr - DRAM_BASE; - // call test function + // call C benchmark function main(); pop_tf(&tf); } \ No newline at end of file diff --git a/Tests/isa/testC b/Tests/isa/testC index 843ba76164e16d195acce5bf7afb3c296556f2d2..65ceb4e68e34d65d31b8d263754372bca14f8bd7 100755 GIT binary patch delta 5472 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 RuF`QI_}N=Cet2#6e*wkk1ZDsL delta 3455 zcmb7HeN0=|6~E7Z&k$BRlZ@K5X~6LuXp&M4*oGuZ9EP){>N=vJwN3so5Br%o^B4AW zw)Bsg4nxwa>L53Ssj9Rz^Qx_y`Vo?Ks;052LCdE8(QHkmRhw#1=vY+E?#5d17d!X9 z`}lCOKlTLA@BPj>zwZHEdP*ID}7GeJTIApbOHhkV{hWoFqkHCG-+6ecm zR-1|XSWacK2mVp*%49$OYZy6^)|M<;p2P8x6@v};wOY719&I%n>WD_5f{Pow>{3ggRtN_a|+MWUyzWv`yepfFpwY!w(nIrgdTS9pjp1>d22AD=G z-ft(Wz4l!YJ7#CvZ+78#?MDH*-@y>ee%#@(eU0jKJ^%Uy=Q=xUpta5G6s=B;qKGdk zbxOk7S>?&apPdb(G^e!@8-B~-<}6s>@q*?*Cj3eVu6O{7*1ZpFEz*0ZcI^47j+5~F&fl||7VyglA0f|p zWPTq1@nG97`s|vcDg@TIVx?#j%==P>aJK%_?IV-aM@ZwQE)$IvM*fC-x|` zE^&HLx41ovjOO-K$-Mna$=qlh2tK7t{89sI3vXO_NoSwfYSM!8 zVP7{Wzo{Xrn!v7oi^rD02V(eoAPX<~INKwB)`VBm{;g{vA(ZTz`R*8K)a3FL+Kn}$}{qE^U5 zg=+ojYF7Wg6cd@uL!CuseCaA??MUT-mwF_CJh!ez>MDX6@&z)(w$T~Vp$%1Sk1V z2#-3dX9h!jR-7FT&5`hjKP$<&&)}i zUv~_t{a1-DFe3G@KNU|=A_3{k=5>YQ6);XkDAR*}jjet|;ytjE7FV(szrxJ#Gd%sM z66J()XX7B3+A<} zk)^3(vL0uqW_;s2hH4~*~lITVK(ttk%kpm%7jz^_6 zS0&OP@&m6lNV5kc*br*p4XJ=696S+@$>@X_@&+WgPmBj-6bVP%vJb`NXg~_lMEFMN z9qi;P@Y(Q1O>Z6E8ELLkkDA`YxIf}pU6DOX(~S5aSC6kp^i}F9XY9dq5l0O>h?>Mz8+I^OVZqA9QR|{Tj!`hw!z*t?>WS__1y0q7AiUjNu|1?tKtu$F}IM aO)bwT3~ksSb!_q+SKdyIi-vR2%Kri_&F7i` diff --git a/analysis/graph.py b/analysis/graph.py new file mode 100644 index 0000000..61c9bcf --- /dev/null +++ b/analysis/graph.py @@ -0,0 +1,92 @@ +import matplotlib.pyplot as plt +import numpy as np + +performance_data = { + "Mem": { + "regular": {"CPU_cycles": 33940, "L1_DTLB_access": 13202, "L1_DTLB_miss": 36, "L2_DTLB_miss": 10}, + "modified": {"CPU_cycles": 2457, "L1_DTLB_access": 151, "L1_DTLB_miss": 0, "L2_DTLB_miss": 0}, + }, + "Test_C": { + "regular": {"CPU_cycles": 34040, "L1_DTLB_access": 13284, "L1_DTLB_miss": 36, "L2_DTLB_miss": 10}, + "modified": {"CPU_cycles": 2789, "L1_DTLB_access": 396, "L1_DTLB_miss": 0, "L2_DTLB_miss": 0}, + }, + "Glibc": { + "regular": {"CPU_cycles": 36053, "L1_DTLB_access": 14027, "L1_DTLB_miss": 36, "L2_DTLB_miss": 10}, + "modified": {"CPU_cycles": 4219, "L1_DTLB_access": 783, "L1_DTLB_miss": 0, "L2_DTLB_miss": 0}, + }, + "Richards": { + "regular": {"CPU_cycles": 37808, "L1_DTLB_access": 14363, "L1_DTLB_miss": 10, "L2_DTLB_miss": 6}, + "modified": {"CPU_cycles": 4433, "L1_DTLB_access": 874, "L1_DTLB_miss": 0, "L2_DTLB_miss": 0}, + }, + "Matrix_mul": { + "regular": {"CPU_cycles": 42383, "L1_DTLB_access": 17020, "L1_DTLB_miss": 14, "L2_DTLB_miss": 10}, + "modified": {"CPU_cycles": 12149, "L1_DTLB_access": 4411, "L1_DTLB_miss": 0, "L2_DTLB_miss": 0}, + } +} + +def compute_percent_diff(regular, modified): + out = {} + for k in regular: + if k in modified and regular[k] != 0: + out[k] = ((regular[k] - modified[k]) / regular[k]) * 100 + elif k in modified and regular[k] == 0 and modified[k] == 0: + out[k] = 0.0 + elif k in modified and regular[k] == 0 and modified[k] != 0: + out[k] = -100.0 + return out + +for t, d in performance_data.items(): + d["percent_diff"] = compute_percent_diff(d["regular"], d["modified"]) + +tests = list(performance_data.keys()) +metrics = ["CPU_cycles", "L1_DTLB_access", "L1_DTLB_miss", "L2_DTLB_miss"] + +# 1. Summary plot: Percent Improvement for all metrics grouped by test +x = np.arange(len(tests)) +width = 0.2 +fig, ax = plt.subplots(figsize=(12, 7)) + +for i, metric in enumerate(metrics): + values = [performance_data[t]["percent_diff"].get(metric, 0) for t in tests] + offset = (i - len(metrics)/2 + 0.5) * width + ax.bar(x + offset, values, width, label=metric.replace('_', ' ').title()) + +ax.set_ylabel('Percent Improvement (%)') +ax.set_title('Percent Improvement (Regular -> Modified) by Test and Metric') +ax.set_xticks(x) +ax.set_xticklabels(tests) +ax.legend() +ax.set_ylim(0, 110) +ax.grid(axis='y', linestyle='--', alpha=0.7) +fig.tight_layout() +plt.savefig('percent_improvement_summary.png') + +# 2. Individual metric plots: Regular vs Modified grouped by test +y_label_map = { + "CPU_cycles": "Cycles", + "L1_DTLB_access": "Access Count", + "L1_DTLB_miss": "Miss Count", + "L2_DTLB_miss": "Miss Count" +} + +for metric in metrics: + fig, ax = plt.subplots(figsize=(10, 6)) + reg_vals = [performance_data[t]["regular"][metric] for t in tests] + mod_vals = [performance_data[t]["modified"][metric] for t in tests] + + x_local = np.arange(len(tests)) + w = 0.35 + + ax.bar(x_local - w/2, reg_vals, w, label='Regular', color='steelblue') + ax.bar(x_local + w/2, mod_vals, w, label='Modified', color='salmon') + + # Setting dynamic y-label + ax.set_ylabel(y_label_map.get(metric, metric.replace('_', ' ').title())) + ax.set_title(f'Comparison: {metric.replace("_", " ").title()}') + ax.set_xticks(x_local) + ax.set_xticklabels(tests) + ax.legend() + ax.grid(axis='y', linestyle='--', alpha=0.7) + plt.xticks(rotation=45) + plt.tight_layout() + plt.savefig(f'grouped_comparison_{metric}.png') \ No newline at end of file diff --git a/analysis/grouped_comparison_CPU_cycles.png b/analysis/grouped_comparison_CPU_cycles.png new file mode 100644 index 0000000000000000000000000000000000000000..8dfd08c5ba0c839a977e9d8b3685e0563b71f5f9 GIT binary patch literal 33957 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 Ml{799F5dM0Kkc^LuK)l5 literal 0 HcmV?d00001 diff --git a/analysis/grouped_comparison_L1_DTLB_access.png b/analysis/grouped_comparison_L1_DTLB_access.png new file mode 100644 index 0000000000000000000000000000000000000000..c0ab5675fe5aa372f5dff3821e1b6433df298a79 GIT binary patch literal 34577 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�ioMdy zQn8=AmpGBS-;J|Yur3<9=8cB>tZ1gMDHpH)^^Cy7j8(0l*-7}5-}a>U=Wyzwgi@t~ zV?Cq3VEWe67#4%RM^taU3v%gYPprb^cgw7tj;kVBYUXH#byVzKDXSyn%8uq7AArs) zI7=MIY@c35CdR@S_HY?5hiWwayY$T205U@=G_VU$Hgc8ElReM0hcVyVMj zW(C-Y;Pz-yza-M}A#*IR9DH(RxXs4-SSJJQt~@wNF)^vU2K?paY?^7nm~A0sQk4A~ zVXtf7w(&&@E&rijqO19VB<2Un)&L@oREs2&n96_EU1eEsUv zup zz)xiv2M9)gMDg5IGhrByq~|8ll`^ZoK_S;0ZiZLN7LQ>Z9JriOwZ!O`T76vWHCqTx z1&difh8+Wv3UAIg)=}vIlPY(?a3;T>FkUTvi7OYkW?Z-{Wc!27`-~8Gqh>sbU_3bb zgy=44iWd1fpWeJAq~FUppu)M{Y;3m$nd`>;%3j0SfE`VI$*w3K9TaHIAbu#W0{=ES zP??sfhwG<)s(=Meh+I|n5=+(SEAU(OUQ~u=clg&EA?m?7P`=!A4wqLigE~Kql_>m~NqxXEf;X%+(ypT0zua97Pdj-ppWRO<6I;&=#W42&|jS{YV3 z>4f^Pd=n$vd5u+$LE7K7@jIl#+pZqs7m_C5_mupYukru$M{38G`Y5+6h<2 z)Co1LLa>zEs_NE6ttt=m!!5WGyJS0i4LQ%4Mc7`$yYOH1_dXq4BLw{ouX4+ z1^25g*0aOTHl7-Yqvx$0;~R-}?35#(PO;X&{P3GRv8yj@U@#X8D&``8x7h?LV;}3>Px-Z397rCXbfF zK5OycU}$joLeO9cxWILhDz=DJg197*NZik)UxA?U1C#`!sXT|M=vYUNF#Rx3WJ>ou zxL9P)2N+cImREa2aMao87^Ubiod39PXu9#>clFRJMa&>%Dn@LVNg%6#==i2HCw~G7 z-{;^5!&8Mdc?$8WD-z@4$$3P1&()Ok=9KLg>cccnEzY<3<( zZ$mmbbJ-HM!&h74wdx-3hZ;(2KyfL`VeiaZld#cW`JsEJ;AaPCh&zBM!I^-k-OEZf z4*UqFE!-runxfYLQ{ha$+_-E5u{PzYAR>mRC}p0#X;5T1jcfGAV!L6LguqD`C_2Wo(Bf8Q$LPKC2r`6=Cp%1XHZfM=Kj$T^ z0)C~V!smuEL$vbKGA0-OxDKF+ZxkNvWWW}5`4+1*rE9_DLi6-oJMG5=X5To>6zrW0 zbBd|+2!G|@*wz!w0gW^Ty46nXtSn^fk&D5(dLJz@i_HzTk;!Rx+FL>~UnKm#Z#M^Px;v_)|P3 zCO2Jd1vIV-2ODloU4x}C z6}a|P*w0lujG%wyQ=J2rm>kiWsF`Z3+qGziksD5)Dt-K}9)*%!gLCAh-Jsi9$PsQ+f;pJX<%d zQl{T1f(7i2$zK%CM98x>sEw$yOd=0GpF6}xr&4208WTw+PL+<;E_+T#4iH^iuQE$p zv}w9>Hm%Rbts@b35-yfJBo(fWpmk=q-=HPGfA9?z9mSjt+yCQt)1re=Fg^TG4lo>^ zVt?^z74Q@S?3fnmRDD#R`6e_#Rw(EQm8QWJlh!{*!=&?>VtUPWO z&~jWo;(T%cpKnWh<0W7a52=LpTA)k5;bBi(8-YRyZluoWSYl^aV9FWk|{G9nRG5hdGFFNd*|Uko&a6Zxl}Tkk4#2s(1cO z?;8>!+iijJKmcFa*uRMR3F1Q^n!|w2%l&pef?CS)t;2hp1A@i#$C|!UJO6}rH3fjt z_Zis=VYexHp&axHxoZ#*@q|yZ1?V8M+qg?HgjR2sQFh%wxmn{^Fkl4gPSo;h{<|IS z`u#^(zN=umP2sO#&HUw>k$Lf|+~4gE=a+6KqTN9~FK4Qm4mp8x;= literal 0 HcmV?d00001 diff --git a/analysis/grouped_comparison_L1_DTLB_miss.png b/analysis/grouped_comparison_L1_DTLB_miss.png new file mode 100644 index 0000000000000000000000000000000000000000..6a009c5f4789343ce5f92d9ae8562aaf1cce42b7 GIT binary patch literal 27592 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

F?)= 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 O@|m2nFs7e$js6c4n~+cd literal 0 HcmV?d00001 diff --git a/analysis/grouped_comparison_L2_DTLB_miss.png b/analysis/grouped_comparison_L2_DTLB_miss.png new file mode 100644 index 0000000000000000000000000000000000000000..709a0bb5f865a170ea392f60cdcd5c05d2fc8bee GIT binary patch literal 25163 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 YyO{5OI;`3ruD0ZRClALv_6HOG1WsyY1poj5 literal 0 HcmV?d00001 diff --git a/analysis/percent_improvement_summary.png b/analysis/percent_improvement_summary.png new file mode 100644 index 0000000000000000000000000000000000000000..303c0db11e62cbf0063f839f5233748cd45673cc GIT binary patch literal 37830 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 Cn~ZwEgKgTqr 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 CAzW<$ literal 0 HcmV?d00001 diff --git a/analysis/perf_data.py b/analysis/perf_data.py new file mode 100644 index 0000000..ec25742 --- /dev/null +++ b/analysis/perf_data.py @@ -0,0 +1,145 @@ +def compute_percent_diff(regular, modified): + percent_diff = {} + for key in regular: + if key in modified and regular[key] != 0: + percent_diff[key] = ((regular[key] - modified[key]) / regular[key]) * 100 + return percent_diff + +def compute_percent_diff_mod_vs_pte(modified, after_pte): + percent_diff = {} + for key in ["CPU_cycles", "L1_DTLB_access"]: + if key in modified and key in after_pte and modified[key] != 0: + percent_diff[key] = ((modified[key] - after_pte[key]) / modified[key]) * 100 + return percent_diff + + +performance_data = { + "Mem": { + "regular": { + "CPU_cycles": 33940, + "L1_DTLB_access": 13202, + "L1_DTLB_miss": 36, + "L2_DTLB_miss": 10, + }, + "modified": { + "CPU_cycles": 2457, + "L1_DTLB_access": 151, + "L1_DTLB_miss": 0, + "L2_DTLB_miss": 0, + }, + "after_PTE_setup": { + "CPU_cycles": 531, + "L1_DTLB_access": 25, + "L1_DTLB_miss": 0, + "L2_DTLB_miss": 0, + }, + }, + + "Test_C": { + "regular": { + "CPU_cycles": 34040, + "L1_DTLB_access": 13284, + "L1_DTLB_miss": 36, + "L2_DTLB_miss": 10, + }, + "modified": { + "CPU_cycles": 2789, + "L1_DTLB_access": 396, + "L1_DTLB_miss": 0, + "L2_DTLB_miss": 0, + }, + "after_PTE_setup": { + "CPU_cycles": 631, + "L1_DTLB_access": 107, + "L1_DTLB_miss": 0, + "L2_DTLB_miss": 0, + }, + }, + + "Glibc": { + "regular": { + "CPU_cycles": 36053, + "L1_DTLB_access": 14027, + "L1_DTLB_miss": 36, + "L2_DTLB_miss": 10, + }, + "modified": { + "CPU_cycles": 4219, + "L1_DTLB_access": 783, + "L1_DTLB_miss": 0, + "L2_DTLB_miss": 0, + }, + "after_PTE_setup": { + "CPU_cycles": 2644, + "L1_DTLB_access": 850, + "L1_DTLB_miss": 0, + "L2_DTLB_miss": 0, + }, + }, + + "Setup": { + "regular": { + "CPU_cycles": 33409, + "L1_DTLB_access": 13177, + "L1_DTLB_miss": 36, + "L2_DTLB_miss": 10, + } + }, + + "Richards": { + "regular": { + "CPU_cycles": 37808, + "L1_DTLB_access": 14363, + "L1_DTLB_miss": 10, + "L2_DTLB_miss": 6, + }, + "modified": { + "CPU_cycles": 4433, + "L1_DTLB_access": 874, + "L1_DTLB_miss": 0, + "L2_DTLB_miss": 0, + }, + "after_PTE_setup": { + "CPU_cycles": 4399, + "L1_DTLB_access": 1186, + }, + }, + + "Matrix_mul": { + "regular": { + "CPU_cycles": 42383, + "L1_DTLB_access": 17020, + "L1_DTLB_miss": 14, + "L2_DTLB_miss": 10, + }, + "modified": { + "CPU_cycles": 12149, + "L1_DTLB_access": 4411, + "L1_DTLB_miss": 0, + "L2_DTLB_miss": 0, + }, + "after_PTE_setup": { + "CPU_cycles": 8974, + "L1_DTLB_access": 3843, + }, + } +} + +# Add percentage differences +for test, data in performance_data.items(): + if "regular" in data and "modified" in data: + data["percent_diff"] = compute_percent_diff( + data["regular"], data["modified"] + ) + + +# Add modified vs after_PTE_setup percentage differences +for test, data in performance_data.items(): + if "modified" in data and "after_PTE_setup" in data: + data["mod_vs_pte_percent_diff"] = compute_percent_diff_mod_vs_pte( + data["modified"], data["after_PTE_setup"] + ) + +# Example usage: +print(performance_data["Mem"]["percent_diff"]) +print(performance_data["Mem"]["mod_vs_pte_percent_diff"]) \ No newline at end of file diff --git a/builds/.DS_Store b/builds/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..e5b5f28c34a9aa14fddbdc41c52adacd4da76c18 GIT binary patch literal 6148 zcmeHK!D`z;5S_K%L?#q`Xdt~Qh()lEn5`03P`LND}G zpXbBrp!4L=l;bonha(%1XG6HWf18(?nRd;j%qkn3xPhP@v>>!249Pd()@7zD}1U}9(!ECPbl|5MOJ+(G?vEG+(Wu=$*3$$ z`5D<3FTQwTL191`5C-nbfIm-ywYw&eIAK5-c(4rc`4FNp#vW^j_UJ%oO8{UCW-HLS zmf)DsW9+eZh!Kc#p+Fa^e2Jl4IP9VKi#^s3T{tOUd?-J&@)e4*vm<|K-ATm`r56T- zf!`V6+7Hs<`@jG9`rkT9CkzM!50e4a>LtA{*5>clrB(7>8=`$gV`0DA;Y|n>dlkc% eui_0fE3k*G0Ar7}Ls%g4N5Ik`oiOlE8Mp?3m}*}D literal 0 HcmV?d00001 diff --git a/richards.txt b/richards.txt new file mode 100644 index 0000000..e69de29 diff --git a/richards_reg_10.txt b/richards_reg_10.txt new file mode 100644 index 0000000..e69de29