blob: 195334b0a4a04887042840e122716717aa4834a1 (
plain)
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
142
|
#!/bin/bash
mkdir -p log/$(hostname) baselines/cpu/log/$(hostname)
fn=log/$(hostname)/dimes-hetsim-nmc
# upstream DPU version uses 2048576 * uint64 ≈ 16 MiB (DPU max: 64 MiB)
# upstream DPU version uses 2 queries
input_size_upstream=2048576
num_queries_upstream=2
# here: 32 MiB and 1048576 queries
input_size_dpu=$(perl -E 'say 2 ** 22')
num_queries_dpu=1048576
run_benchmark_nmc() {
local "$@"
set -e
sudo limit_ranks_to_numa_node ${numa_rank}
make -B NR_DPUS=${nr_dpus} NR_TASKLETS=${nr_tasklets} WITH_ALLOC_OVERHEAD=1 WITH_LOAD_OVERHEAD=1 WITH_FREE_OVERHEAD=1 INPUT_SIZE=${input_size} PROBLEM_SIZE=${num_queries}
bin/bs_host -w 0 -e 100 2>&1
}
export -f run_benchmark_nmc
run_benchmark_baseline() {
local "$@"
set -e
OMP_NUM_THREADS=${nr_threads} ./bs_omp ${input_size} ${num_queries} ${ram} ${cpu} ${ram_local} ${cpu_memcpy} 2>&1
}
export -f run_benchmark_baseline
(
echo "NMC single-node upstream-ref (1/4)" >&2
parallel -j1 --eta --joblog ${fn}.1.joblog --resume --header : \
run_benchmark_nmc nr_dpus={nr_dpus} nr_tasklets=16 numa_rank={numa_rank} \
num_queries=${num_queries_upstream} input_size=${input_size_upstream} \
::: numa_rank 0 1 \
::: nr_dpus 64 128 256 512 768 1024
echo "NMC multi-node upstream-ref (2/4)" >&2
parallel -j1 --eta --joblog ${fn}.2.joblog --resume --header : \
run_benchmark_nmc nr_dpus={nr_dpus} nr_tasklets=16 numa_rank={numa_rank} \
num_queries=${num_queries_upstream} input_size=${input_size_upstream} \
::: numa_rank -1 \
::: nr_dpus 1536 2048 2304
echo "NMC single-node DPU-ref (3/4)" >&2
parallel -j1 --eta --joblog ${fn}.3.joblog --resume --header : \
run_benchmark_nmc nr_dpus={nr_dpus} nr_tasklets=16 numa_rank={numa_rank} \
num_queries=${num_queries_dpu} input_size=${input_size_dpu} \
::: numa_rank 0 1 \
::: nr_dpus 64 128 256 512 768 1024
echo "NMC multi-node DPU-ref (4/4)" >&2
parallel -j1 --eta --joblog ${fn}.4.joblog --resume --header : \
run_benchmark_nmc nr_dpus={nr_dpus} nr_tasklets=16 numa_rank={numa_rank} \
num_queries=${num_queries_dpu} input_size=${input_size_dpu} \
::: numa_rank -1 \
::: nr_dpus 1536 2048 2304
) >> ${fn}.txt
cd baselines/cpu
(
make -B NUMA=1 NUMA_MEMCPY=1
echo "CPU single-node upstream-ref with memcpy, copy node == input node (1/6)" >&2
parallel -j1 --eta --joblog ${fn}.1.joblog --resume --header : \
run_benchmark_baseline i={i} nr_threads={nr_threads} ram={ram} cpu={cpu} \
ram_local={ram_local} cpu_memcpy={cpu_memcpy} \
num_queries=${num_queries_upstream} input_size=${input_size_upstream} \
::: i $(seq 1 20) \
::: ram 0 1 \
:::+ cpu_memcpy 0 1 \
::: ram_local 0 1 \
:::+ cpu 0 1 \
::: nr_threads 1 2 4 8 12 16
echo "CPU single-node dpu-ref with memcpy, copy node == input node (2/6)" >&2
parallel -j1 --eta --joblog ${fn}.2.joblog --resume --header : \
run_benchmark_baseline i={i} nr_threads={nr_threads} ram={ram} cpu={cpu} \
ram_local={ram_local} cpu_memcpy={cpu_memcpy} \
num_queries=${num_queries_dpu} input_size=${input_size_dpu} \
::: i $(seq 1 20) \
::: ram 0 1 \
:::+ cpu_memcpy 0 1 \
::: ram_local 0 1 \
:::+ cpu 0 1 \
::: nr_threads 1 2 4 8 12 16
make -B NUMA=1
echo "CPU single-node upstream-ref (3/6)" >&2
parallel -j1 --eta --joblog ${fn}.3.joblog --resume --header : \
run_benchmark_baseline i={i} nr_threads={nr_threads} ram={ram} cpu={cpu} \
num_queries=${num_queries_upstream} input_size=${input_size_upstream} \
::: i $(seq 1 20) \
::: cpu 0 1 \
::: ram 0 1 \
::: nr_threads 1 2 4 8 12 16
echo "CPU single-node DPU-ref (4/6)" >&2
parallel -j1 --eta --joblog ${fn}.4.joblog --resume --header : \
run_benchmark_baseline i={i} nr_threads={nr_threads} ram={ram} cpu={cpu} \
num_queries=${num_queries_dpu} input_size=${input_size_dpu} \
::: i $(seq 1 20) \
::: cpu 0 1 \
::: ram 0 1 \
::: nr_threads 1 2 4 8 12 16
echo "CPU multi-node upstream-ref (5/6)" >&2
parallel -j1 --eta --joblog ${fn}.5.joblog --resume --header : \
run_benchmark_baseline i={i} nr_threads={nr_threads} ram={ram} cpu={cpu} \
num_queries=${num_queries_upstream} input_size=${input_size_upstream} \
::: i $(seq 1 20) \
::: cpu -1 \
::: ram 0 1 \
::: nr_threads 24 32
echo "CPU multi-node DPU-ref (6/6)" >&2
parallel -j1 --eta --joblog ${fn}.6.joblog --resume --header : \
run_benchmark_baseline i={i} nr_threads={nr_threads} ram={ram} cpu={cpu} \
num_queries=${num_queries_dpu} input_size=${input_size_dpu} \
::: i $(seq 1 20) \
::: cpu -1 \
::: ram 0 1 \
::: nr_threads 24 32
) >> ${fn}.txt
|