-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrun_tests_heat.slurm
executable file
·141 lines (104 loc) · 4.94 KB
/
run_tests_heat.slurm
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
#!/bin/bash
#SBATCH -n 1 # Number of tasks
#SBATCH -c 20 # Number of cores requested
#SBATCH -N 1 # Number of nodes requested
#SBATCH -t 300 # Runtime in minutes
#SBATCH -o heat_tests.out # Standard out goes to this file
#SBATCH -e heat_tests.err # Standard err goes to this file
#SBATCH --mail-type ALL
#SBATCH --mail-user [email protected]
#SBATCH -p ics632.q
#SBATCH --account=ics_632
# setup vars
mult_n=2400 # array size for matrix mult (5 sec)
threads=20 # max number of threads to test (should be 20)
epochs=10 # tests per thread amount
heat_iters=15 # iterations to run the heat transfer problem (10 sec)
heat_tile_size=400 # tile size for heat transfer problem
mult_modes=(PARALLEL_NONE PARALLEL_I PARALLEL_K PARALLEL_J)
results_dir=results
mult_time_results_files=( mult_seq_time.txt mult_i_time.txt mult_k_time.txt mult_j_time.txt)
mult_l1_misses_results_files=( mult_seq_l1.txt mult_i_l1.txt mult_k_l1.txt mult_j_l1.txt)
mult_llc_misses_results_files=(mult_seq_llc.txt mult_i_llc.txt mult_k_llc.txt mult_j_llc.txt)
heat_time_results_files=( heat_seq_time.txt heat_parallel_time.txt heat_tile_time.txt)
heat_l1_misses_results_files=( heat_seq_l1.txt heat_parallel_l1.txt heat_tile_l1.txt )
heat_llc_misses_results_files=(heat_seq_llc.txt heat_parallel_llc.txt heat_tile_llc.txt )
# make directory
mkdir -p $results_dir
for((m=0; m<3; m++))
do
> $results_dir/${heat_time_results_files[m]}
> $results_dir/${heat_l1_misses_results_files[m]}
> $results_dir/${heat_llc_misses_results_files[m]}
done
####################### REMOVED MULT TESTS #################################
###### heat transfer - sequential ########
echo "Heat Transfer - Sequential"
icc exercise2.c -o exercise2 -Ofast -fopenmp
for ((j=0; j<epochs; j++))
do
# append stats to output file(s)
perf stat -d -o perf.txt ./exercise2 1 $heat_iters;
str_t=$(cat perf.txt | grep "seconds time elapsed" | sed "s/ *//" | sed "s/ .*seconds.*//" | sed "s/,//g")
str_l1=$(cat perf.txt | grep "L1-dcache-load-misses" | sed "s/ *//" | sed "s/ .*L1.*//" | sed "s/,//g")
str_llc=$(cat perf.txt | grep "LLC-load-misses" | sed "s/ *//" | sed "s/ .*LLC.*//" | sed "s/,//g")
echo -n "$str_t, " >> $results_dir/${heat_time_results_files[0]}
echo -n "$str_l1, " >> $results_dir/${heat_l1_misses_results_files[0]}
echo -n "$str_llc, " >> $results_dir/${heat_llc_misses_results_files[0]}
echo " $j"
done
###### heat transfer - faster versions ########
echo "Heat Transfer - Faster Versions"
# compile for each thread
icc exercise2.c -o exercise2 -Ofast -fopenmp -D PARALLEL
icc exercise2_fast.c -o exercise2_fast -Ofast -fopenmp -D TILE_SIZE=$heat_tile_size
for ((i=1; i<=threads; i++))
do
# add a line
echo -n "$i, " >> $results_dir/${heat_time_results_files[1]} # parallel
echo -n "$i, " >> $results_dir/${heat_l1_misses_results_files[1]}
echo -n "$i, " >> $results_dir/${heat_llc_misses_results_files[1]}
echo -n "$i, " >> $results_dir/${heat_time_results_files[2]} # tile
echo -n "$i, " >> $results_dir/${heat_l1_misses_results_files[2]}
echo -n "$i, " >> $results_dir/${heat_llc_misses_results_files[2]}
echo $i
for ((j=0; j<epochs; j++))
do
# parellel
perf stat -d -o perf.txt ./exercise2 $i $heat_iters;
str_t=$(cat perf.txt | grep "seconds time elapsed" | sed "s/ *//" | sed "s/ .*seconds.*//" | sed "s/,//g")
str_l1=$(cat perf.txt | grep "L1-dcache-load-misses" | sed "s/ *//" | sed "s/ .*L1.*//" | sed "s/,//g")
str_llc=$(cat perf.txt | grep "LLC-load-misses" | sed "s/ *//" | sed "s/ .*LLC.*//" | sed "s/,//g")
echo -n "$str_t, " >> $results_dir/${heat_time_results_files[1]}
echo -n "$str_l1, " >> $results_dir/${heat_l1_misses_results_files[1]}
echo -n "$str_llc, " >> $results_dir/${heat_llc_misses_results_files[1]}
# tiled
perf stat -d -o perf.txt ./exercise2_fast $i $heat_iters;
str_t=$(cat perf.txt | grep "seconds time elapsed" | sed "s/ *//" | sed "s/ .*seconds.*//" | sed "s/,//g")
str_l1=$(cat perf.txt | grep "L1-dcache-load-misses" | sed "s/ *//" | sed "s/ .*L1.*//" | sed "s/,//g")
str_llc=$(cat perf.txt | grep "LLC-load-misses" | sed "s/ *//" | sed "s/ .*LLC.*//" | sed "s/,//g")
echo -n "$str_t, " >> $results_dir/${heat_time_results_files[2]}
echo -n "$str_l1, " >> $results_dir/${heat_l1_misses_results_files[2]}
echo -n "$str_llc, " >> $results_dir/${heat_llc_misses_results_files[2]}
echo " $j"
done
echo "" >> $results_dir/${heat_time_results_files[1]}
echo "" >> $results_dir/${heat_l1_misses_results_files[1]}
echo "" >> $results_dir/${heat_llc_misses_results_files[1]}
echo "" >> $results_dir/${heat_time_results_files[2]}
echo "" >> $results_dir/${heat_l1_misses_results_files[2]}
echo "" >> $results_dir/${heat_llc_misses_results_files[2]}
done
echo ""
# log everything with heat
for((m=0; m<3; m++))
do
cat $results_dir/${heat_time_results_files[m]}
echo ""
cat $results_dir/${heat_l1_misses_results_files[m]}
echo ""
cat $results_dir/${heat_llc_misses_results_files[m]}
echo ""
done
echo ""
echo ""