Skip to content

Commit 8134945

Browse files
author
Vasileios Karakasis
authored
Merge pull request #1653 from jgphpc/UES-1279
[test] Extend GPU burn test to report GPU node with smallest flops
2 parents 0227b31 + 2058b7e commit 8134945

File tree

1 file changed

+19
-8
lines changed

1 file changed

+19
-8
lines changed

cscs-checks/microbenchmarks/gpu/gpu_burn/gpu_burn_test.py

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
#
44
# SPDX-License-Identifier: BSD-3-Clause
55

6+
import os
7+
68
import reframe as rfm
79
import reframe.utility.sanity as sn
810

@@ -31,41 +33,35 @@ def __init__(self):
3133
r'(?P<temp>\S*) Celsius')
3234
self.perf_patterns = {
3335
'perf': sn.min(sn.extractall(patt, self.stdout, 'perf', float)),
36+
'temp': sn.max(sn.extractall(patt, self.stdout, 'temp', float)),
3437
}
3538

3639
self.reference = {
3740
'dom:gpu': {
3841
'perf': (4115, -0.10, None, 'Gflop/s'),
39-
'max_temp': (0, None, None, 'Celsius')
4042
},
4143
'daint:gpu': {
4244
'perf': (4115, -0.10, None, 'Gflop/s'),
43-
'max_temp': (0, None, None, 'Celsius')
4445
},
4546
'arolla:cn': {
4647
'perf': (5861, -0.10, None, 'Gflop/s'),
47-
'max_temp': (0, None, None, 'Celsius')
4848
},
4949
'tsa:cn': {
5050
'perf': (5861, -0.10, None, 'Gflop/s'),
51-
'max_temp': (0, None, None, 'Celsius')
5251
},
5352
'ault:amda100': {
5453
'perf': (15000, -0.10, None, 'Gflop/s'),
55-
'max_temp': (0, None, None, 'Celsius')
5654
},
5755
'ault:amdv100': {
5856
'perf': (5500, -0.10, None, 'Gflop/s'),
59-
'max_temp': (0, None, None, 'Celsius')
6057
},
6158
'ault:intelv100': {
6259
'perf': (5500, -0.10, None, 'Gflop/s'),
63-
'max_temp': (0, None, None, 'Celsius')
6460
},
6561
'ault:amdvega': {
6662
'perf': (3450, -0.10, None, 'Gflop/s'),
67-
'max_temp': (0, None, None, 'Celsius')
6863
},
64+
'*': {'temp': (0, None, None, 'degC')}
6965
}
7066

7167
self.maintainers = ['AJ', 'TM']
@@ -133,3 +129,18 @@ def set_gpus_per_node(self):
133129
self.num_gpus_per_node = 3
134130
else:
135131
self.num_gpus_per_node = 1
132+
133+
@rfm.run_before('performance')
134+
def report_nid_with_smallest_flops(self):
135+
regex = r'\[(\S+)\] GPU\s+\d\(OK\): (\d+) GF/s'
136+
rptf = os.path.join(self.stagedir, sn.evaluate(self.stdout))
137+
self.nids = sn.extractall(regex, rptf, 1)
138+
self.flops = sn.extractall(regex, rptf, 2, float)
139+
140+
# Find index of smallest flops and update reference dictionary to
141+
# include our patched units
142+
index = self.flops.evaluate().index(min(self.flops))
143+
unit = f'GF/s ({self.nids[index]})'
144+
for key, ref in self.reference.items():
145+
if not key.endswith(':temp'):
146+
self.reference[key] = (*ref[:3], unit)

0 commit comments

Comments
 (0)