Skip to content

Commit e7ca078

Browse files
Add profiler_rocm.py
1 parent 13889f1 commit e7ca078

2 files changed

Lines changed: 40 additions & 7 deletions

File tree

.github/scripts/profiler_rocm.py

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
import argparse
2+
import csv
3+
import math
4+
import statistics
5+
6+
parser = argparse.ArgumentParser()
7+
parser.add_argument('-r', '--runs', type=int, required=True, help='Number of runs')
8+
parser.add_argument('-i', '--input', required=True, help='Input CSV file')
9+
parser.add_argument('-o', '--output', required=True, help='Output CSV file')
10+
args = parser.parse_args()
11+
12+
time_dict = dict({})
13+
with open(args.input) as csv_file:
14+
csv_reader = csv.reader(csv_file)
15+
next(csv_reader)
16+
for row in csv_reader:
17+
full_name = row[13]
18+
time = (int(row[15]) - int(row[14])) / 1000.0
19+
if len(full_name) > 5 and full_name[:5] == "krnl_":
20+
name = full_name[5:-3]
21+
if name in time_dict.keys():
22+
time_dict[name].append(time)
23+
else:
24+
time_dict[name] = [time]
25+
26+
data = [["name", "time", "stdev"]]
27+
for name, time_list in time_dict.items():
28+
mean = math.fsum(time_list) / args.runs
29+
stdev = 0 if args.runs == 1 else statistics.stdev(time_list) * len(time_list) / args.runs
30+
data.append([name, mean, stdev])
31+
32+
with open(args.output, 'w') as csv_file:
33+
csv_writer = csv.writer(csv_file)
34+
csv_writer.writerows(data)

.github/workflows/standalone-benchmark.yml

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,17 +27,18 @@ jobs:
2727
- name: amd-mi300x
2828
runner: cern-nextgen-mi300x
2929
cmake_args: -DENABLE_CUDA=0 -DENABLE_HIP=1 -DHIP_AMDGPUTARGET=gfx942
30-
profiler: rocprofv2 --basenames --kernel-trace --output-directory /root --output-file-name amd-mi300x --plugin perfetto
30+
profiler: rocprofv2 --basenames --output-directory /root --output-file-name amd-mi300x
3131
- name: amd-w7900
3232
runner: cern-nextgen-w7900
3333
cmake_args: -DENABLE_CUDA=0 -DENABLE_HIP=1 -DHIP_AMDGPUTARGET=gfx1100
34-
profiler: rocprofv2 --basenames --kernel-trace --output-directory /root --output-file-name amd-w7900 --plugin perfetto
34+
profiler: rocprofv2 --basenames --output-directory /root --output-file-name amd-w7900
3535
env:
3636
WORK_DIR: /cvmfs/alice.cern.ch
3737
ALIBUILD_ARCH_PREFIX: el9-x86_64/Packages
3838
MODULEPATH: /cvmfs/alice.cern.ch/etc/toolchain/modulefiles/el9-x86_64:/cvmfs/alice.cern.ch/el9-x86_64/Modules/modulefiles
3939
STANDALONE_DIR: /root/standalone
4040
BENCHMARK_CSV: /root/${{ matrix.name }}.csv
41+
PROFILER_CSV: /root/results_${{ matrix.name }}.csv
4142
LD_LIBRARY_PATH: /usr/local/cuda-13.0/compat
4243

4344
name: ${{ matrix.name }}
@@ -91,14 +92,14 @@ jobs:
9192
source /etc/profile.d/modules.sh
9293
module load ninja/fortran-v1.11.1.g9-15 Vc/1.4.5-10 boost/v1.83.0-alice2-57 fmt/11.1.2-14 CMake/v3.31.6-10 ms_gsl/4.2.1-3 Clang/v20.1.7-9 TBB/v2022.3.0-3 ROOT/v6-36-04-alice9-15 ONNXRuntime/v1.22.0-71 GLFW/3.3.2-25
9394
cd ${STANDALONE_DIR}
94-
${STANDALONE_DIR}/ca -e 50kHz -g --memSize 15000000000 --sync --debug 1 --runs 12 --runsInit 2 --PROCresetTimers 1 --PROCtimingCSV ${BENCHMARK_CSV}
95-
${{ matrix.profiler }} ${STANDALONE_DIR}/ca -e 50kHz -g --memSize 15000000000 --sync --runs 10 --runsInit 0 --PROCresetTimers 1
95+
${{ matrix.profiler }} ${STANDALONE_DIR}/ca -e 50kHz -g --memSize 15000000000 --sync --debug 1 --runs 12 --runsInit 2 --PROCresetTimers 1 --PROCtimingCSV ${BENCHMARK_CSV}
9696
rm -rf ${STANDALONE_DIR}/events/50kHz ${STANDALONE_DIR}/build
9797
9898
- name: Display table on GitHub web
9999
run: |
100100
source /etc/profile.d/modules.sh
101101
module load ninja/fortran-v1.11.1.g9-15 Vc/1.4.5-10 boost/v1.83.0-alice2-57 fmt/11.1.2-14 CMake/v3.31.6-10 ms_gsl/4.2.1-3 Clang/v20.1.7-9 TBB/v2022.3.0-3 ROOT/v6-36-04-alice9-15 ONNXRuntime/v1.22.0-71 GLFW/3.3.2-25
102+
python3 ${GITHUB_WORKSPACE}/.github/scripts/profiler_rocm.py --runs 12 --input ${PROFILER_CSV} --output ${PROFILER_CSV}
102103
python3 ${GITHUB_WORKSPACE}/.github/scripts/merge_runs.py --discard 2 --input ${BENCHMARK_CSV} --output ${BENCHMARK_CSV}
103104
python3 ${GITHUB_WORKSPACE}/.github/scripts/csv_to_md.py --baseline ${STANDALONE_DIR}/baseline/${{ matrix.name }}.csv --current ${BENCHMARK_CSV} >> ${GITHUB_STEP_SUMMARY}
104105
rm -rf ${STANDALONE_DIR}/baseline
@@ -107,6 +108,4 @@ jobs:
107108
uses: actions/upload-artifact@v6
108109
with:
109110
name: ${{ matrix.name }}-artifact
110-
path: |
111-
/root/*.csv
112-
/root/*.pftrace
111+
path: "/root/*.csv"

0 commit comments

Comments
 (0)