From 60235bdaf2797a68ffcb7686c1975196855574cc Mon Sep 17 00:00:00 2001 From: Trygve Date: Tue, 27 Feb 2024 22:10:05 +0100 Subject: [PATCH] Ferdig med 12 --- lab_2/12/Makefile | 3 +++ lab_2/12/chain-random-walk.cpp | 8 ++++--- lab_2/12/const_Nm_timings.csv | 10 +++++++++ lab_2/12/const_m_timings.csv | 10 +++++++++ lab_2/12/memleak.cpp | 2 +- lab_2/12/plot_speedup.py | 38 +++++++++++++++++++++++++++++++++ lab_2/12_answer.md | 24 +++++++++++++++++++++ lab_2/12_speedup.png | Bin 0 -> 48943 bytes 8 files changed, 91 insertions(+), 4 deletions(-) create mode 100644 lab_2/12/const_Nm_timings.csv create mode 100644 lab_2/12/const_m_timings.csv create mode 100644 lab_2/12/plot_speedup.py create mode 100644 lab_2/12_answer.md create mode 100644 lab_2/12_speedup.png diff --git a/lab_2/12/Makefile b/lab_2/12/Makefile index 0ef13b8..6040f26 100644 --- a/lab_2/12/Makefile +++ b/lab_2/12/Makefile @@ -16,3 +16,6 @@ clear: clean zip: clean zip $(folder) Makefile *.cpp *.h + +profile: + g++ -pg *.cpp -o $@ $^ \ No newline at end of file diff --git a/lab_2/12/chain-random-walk.cpp b/lab_2/12/chain-random-walk.cpp index 780b048..4d92e35 100644 --- a/lab_2/12/chain-random-walk.cpp +++ b/lab_2/12/chain-random-walk.cpp @@ -19,7 +19,9 @@ namespace { { double sum = 0.0; for(long i = 0; i < size; i++) sum += config[i]; - for(long i = 0; i < size; i++) config[i] -= sum/size; + + const float ratio = sum/size; + for(long i = 0; i < size; i++) config[i] -= ratio; } const int el_out_max = 9; // show at most the first nine elements @@ -37,6 +39,7 @@ float crw::elongation(long size, float config[]) return max - min; } + float* crw::step(long size, float previous[]) { // allocate the next configuration @@ -44,8 +47,7 @@ float* crw::step(long size, float previous[]) // first, let the chain contract: each element is attracted by its neighbours for(long i = 0; i < size; i++) - config[i] = 0.5*previous[i] + 0.25*previous[(i-1) % size] - + 0.25*previous[(i+1) % size]; + config[i] = 0.5*previous[i] + 0.25*previous[(i-1) % size]*2; stochastic_unit_step(size, config); // actual random walk step shift_centre_to_origin(size, config); // shift such that the average remains zero diff --git a/lab_2/12/const_Nm_timings.csv b/lab_2/12/const_Nm_timings.csv new file mode 100644 index 0000000..2e7871a --- /dev/null +++ b/lab_2/12/const_Nm_timings.csv @@ -0,0 +1,10 @@ +1024, 36.21 +512, 36.88 +256, 43.77 +128, 40.27 +64, 40.47 +32, 43.17 +16, 47.71 +8, 50.55 +4, 49.56 +2, 54.86 diff --git a/lab_2/12/const_m_timings.csv b/lab_2/12/const_m_timings.csv new file mode 100644 index 0000000..7b2583e --- /dev/null +++ b/lab_2/12/const_m_timings.csv @@ -0,0 +1,10 @@ +1024, 36.24 +512, 18.53 +256, 9.72 +128, 4.94 +64, 2.56 +32, 1.36 +16, 0.75 +8, 0.40 +4, 0.19 +2, 0.11 \ No newline at end of file diff --git a/lab_2/12/memleak.cpp b/lab_2/12/memleak.cpp index 5833225..08c9583 100644 --- a/lab_2/12/memleak.cpp +++ b/lab_2/12/memleak.cpp @@ -49,7 +49,7 @@ int main(int argc, char** argv) // Simple fix to memleak: float* old_configuration = present_configuration; present_configuration = crw::step(size, present_configuration); - delete old_configuration; + delete[] old_configuration; float present_elongation = crw::elongation(size, present_configuration); if(present_elongation > extreme_elongation) diff --git a/lab_2/12/plot_speedup.py b/lab_2/12/plot_speedup.py new file mode 100644 index 0000000..c3dd99b --- /dev/null +++ b/lab_2/12/plot_speedup.py @@ -0,0 +1,38 @@ +import matplotlib.pyplot as plt +import matplotlib.cbook as cbook + +import numpy as np +import pandas as pd + +f1 = open('const_m_timings.csv', 'r') +f2 = open('../11/const_m_timings.csv', 'r') +x1 = [] +y1 = [] +for l,p in zip(f1.readlines(), f2.readlines()): + l = l.split(',') + p = p.split(',') + x1.append(p[0]) + y1.append(float(p[1])/float(l[1])) + +f1 = open('const_Nm_timings.csv', 'r') +f2 = open('../11/const_Nm_timings.csv', 'r') +x2 = [] +y2 = [] +for l,p in zip(f1.readlines(), f2.readlines()): + l = l.split(',') + p = p.split(',') + x2.append(p[0]) + y2.append(float(p[1])/float(l[1])) + +plt.plot(x1, y1, label = 'constant m') +plt.plot(x2, y2, label = 'constant Nm') +for i in range(len(x1)): + plt.text(i,y1[i],f'{y1[i]:.2f}', color="blue") +for i in range(len(x2)): + plt.text(i,y2[i],f'{y2[i]:.2f}', color="orange") +plt.title('Speedup after optimization') +plt.xlabel('N') +plt.ylabel('xspeedup') +plt.grid() +plt.legend() +plt.show() diff --git a/lab_2/12_answer.md b/lab_2/12_answer.md new file mode 100644 index 0000000..3b3a23e --- /dev/null +++ b/lab_2/12_answer.md @@ -0,0 +1,24 @@ +# What did work: +## Removing a double calculation when step +I changed `config[i] = 0.5*previous[i] + 0.25*previous[(i-1) % size]+ 0.25*previous[(i+1) % size];` to `config[i] = 0.5*previous[i] + 0.25*previous[(i-1) % size]*2;` in step +This made all the improvement as far as i can tell + + +## In shift_centre_to_origin compute the ratio before the for loop +``` +const float ratio = sum/size; +for(long i = 0; i < size; i++) config[i] -= ratio; +``` +This did not make a noticable difference + +# What did not work and actually made it slower: +- Trying to find a fancy way to get a random bool in stochastic_unit_step +- Using the std::minmax_element function in elongation +- Changing the step function to be a void that changed the array directly made it about 8 secounds slower + +# Compiler optimizations +I treid these flags: -Ofast -march=native -flto -fno-signed-zeros -fno-trapping-math +The improvements were in the margin of error + +# Speedup +I got at best a 1.1 times speedup. See 12_speedup.png \ No newline at end of file diff --git a/lab_2/12_speedup.png b/lab_2/12_speedup.png new file mode 100644 index 0000000000000000000000000000000000000000..e52cc276436293c34e0c3b318eeb828b8d1af2d5 GIT binary patch literal 48943 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%0AgGRpd3mc?A|h&oDr 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 literal 0 HcmV?d00001