-
Notifications
You must be signed in to change notification settings - Fork 0
/
parallel_scaling.py
39 lines (27 loc) · 1.39 KB
/
parallel_scaling.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import numpy as np
import matplotlib.pyplot as plt
N = [
400,
1600,
6400,
40000,
160000
]
N_THREADS = [1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256]
T = [
[0.123483, 0.070638, 0.041467, 0.039701, 0.036591, 0.036445, 0.036565, 0.040515, 0.037389, 0.038218, 0.039712, 0.038882, 0.039858, 0.040014, 0.040374, 0.041256],
[0.041487, 0.014641, 0.007743, 0.005984, 0.005159, 0.004485, 0.004415, 0.004314, 0.004467, 0.004356, 0.004221, 0.004380, 0.004262, 0.004245, 0.004270, 0.004490],
[0.172585, 0.052866, 0.027240, 0.015961, 0.012471, 0.008403, 0.007020, 0.006406, 0.005555, 0.005957, 0.004735, 0.004942, 0.004959, 0.004770, 0.004795, 0.004957],
[1.102152, 0.334045, 0.125918, 0.092006, 0.059920, 0.033197, 0.026845, 0.025362, 0.020340, 0.016721, 0.014528, 0.012484, 0.011138, 0.010249, 0.009542, 0.008984],
[3.636543, 0.932505, 0.411749, 0.230968, 0.150230, 0.109431, 0.084531, 0.065813, 0.055055, 0.047071, 0.040155, 0.035341, 0.029734, 0.026421, 0.023498, 0.022115]
]
T = np.array(T)
for i, n in enumerate(N):
T[i] = T[i, 0] / T[i]
plt.plot(N_THREADS, T[i], label="N={}".format(n), marker='o')
plt.plot(N_THREADS, N_THREADS, label="s=n_threads", linestyle='--')
plt.legend()
plt.title("Speedup of the parallel version")
plt.xlabel("N")
plt.ylabel("speedup")
plt.savefig("parallel_strong_scaling")