Skip to content

Commit aa064ab

Browse files
author
Vasileios Karakasis
authored
Merge branch 'master' into feat/test-graph-validation
2 parents 91855bd + edc8ecf commit aa064ab

File tree

10 files changed

+165
-78
lines changed

10 files changed

+165
-78
lines changed

ci-scripts/genrelnotes.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ def extract_release_notes(git_output, tag):
2222

2323
prev_release, curr_release, *_ = sys.argv[1:]
2424
try:
25-
git_cmd = 'git log --merges v%s..v%s' % (prev_release, curr_release)
25+
git_cmd = 'git log --merges %s..%s' % (prev_release, curr_release)
2626
completed = subprocess.run(git_cmd.split(),
2727
stdout=subprocess.PIPE,
2828
stderr=subprocess.STDOUT,

config/cscs.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -292,7 +292,7 @@ class ReframeSettings:
292292
'PrgEnv-gnu': {
293293
'type': 'ProgEnvironment',
294294
# defaults were gcc/8.3.0, cuda/10.1, openmpi/4.0.0
295-
'modules': ['gcc', 'cuda', 'openmpi'],
295+
'modules': ['gcc', 'cuda/10.1', 'openmpi'],
296296
'cc': 'mpicc',
297297
'cxx': 'mpicxx',
298298
'ftn': 'mpif90',

cscs-checks/microbenchmarks/alloc_speed/alloc_speed.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@ def __init__(self, hugepages):
1616
if hugepages == 'no':
1717
self.valid_systems += ['kesch:cn', 'kesch:pn']
1818
else:
19-
self.modules = ['craype-hugepages%s' % hugepages]
19+
if self.current_system.name in {'dom', 'daint'}:
20+
self.modules = ['craype-hugepages%s' % hugepages]
2021

2122
self.sanity_patterns = sn.assert_found('4096 MB', self.stdout)
2223
self.perf_patterns = {
@@ -42,6 +43,9 @@ def __init__(self, hugepages):
4243
},
4344
'kesch:pn': {
4445
'time': (0.55, None, 0.10, 's')
46+
},
47+
'*': {
48+
'time': (0, None, None, 's')
4549
}
4650
},
4751
'2M': {
@@ -57,6 +61,9 @@ def __init__(self, hugepages):
5761
'daint:mc': {
5862
'time': (0.20, None, 0.10, 's')
5963
},
64+
'*': {
65+
'time': (0, None, None, 's')
66+
}
6067
},
6168
}
6269
self.reference = self.sys_reference[hugepages]

cscs-checks/microbenchmarks/kernel_latency/kernel_latency.py

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,25 +7,35 @@
77
class KernelLatencyTest(rfm.RegressionTest):
88
def __init__(self, kernel_version):
99
super().__init__()
10-
self.sourcepath = 'kernel_latency.cu'
11-
self.build_system = 'SingleSource'
10+
# List known partitions here so as to avoid specifying them every time
11+
# with --system
1212
self.valid_systems = ['daint:gpu', 'dom:gpu', 'kesch:cn']
13-
self.valid_prog_environs = ['PrgEnv-cray', 'PrgEnv-pgi']
1413
self.num_tasks = 0
1514
self.num_tasks_per_node = 1
16-
15+
self.sourcepath = 'kernel_latency.cu'
16+
self.build_system = 'SingleSource'
17+
self.build_system.cxxflags = ['-std=c++11']
1718
if self.current_system.name in {'dom', 'daint'}:
1819
self.num_gpus_per_node = 1
1920
gpu_arch = '60'
2021
self.modules = ['craype-accel-nvidia60']
21-
self.valid_prog_environs += ['PrgEnv-gnu']
22-
else:
22+
self.valid_prog_environs = ['PrgEnv-cray', 'PrgEnv-pgi',
23+
'PrgEnv-gnu']
24+
elif self.current_system.name == 'kesch':
2325
self.num_gpus_per_node = 16
26+
self.valid_prog_environs = ['PrgEnv-cray', 'PrgEnv-pgi']
2427
self.modules = ['craype-accel-nvidia35']
2528
gpu_arch = '37'
29+
else:
30+
# Enable test when running on an unknown system
31+
self.num_gpus_per_node = 1
32+
self.valid_systems = ['*']
33+
self.valid_prog_environs = ['*']
34+
gpu_arch = None
2635

27-
self.build_system.cxxflags = ['-arch=compute_%s' % gpu_arch,
28-
'-code=sm_%s' % gpu_arch, '-std=c++11']
36+
if gpu_arch:
37+
self.build_system.cxxflags += ['-arch=compute_%s' % gpu_arch,
38+
'-code=sm_%s' % gpu_arch]
2939

3040
if kernel_version == 'sync':
3141
self.build_system.cppflags = ['-D SYNCKERNEL=1']
@@ -59,6 +69,9 @@ def __init__(self, kernel_version):
5969
'kesch:cn': {
6070
'latency': (12.0, None, 0.10, 'us')
6171
},
72+
'*': {
73+
'latency': (0.0, None, None, 'us')
74+
}
6275
},
6376
'async': {
6477
'dom:gpu': {
@@ -70,6 +83,9 @@ def __init__(self, kernel_version):
7083
'kesch:cn': {
7184
'latency': (5.7, None, 0.10, 'us')
7285
},
86+
'*': {
87+
'latency': (0.0, None, None, 'us')
88+
}
7389
},
7490
}
7591

cscs-checks/microbenchmarks/osu/osu_tests.py

Lines changed: 30 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,9 @@ def __init__(self, variant):
1313
self.build_system = 'Make'
1414
self.build_system.makefile = 'Makefile_alltoall'
1515
self.executable = './osu_alltoall'
16-
# The -x option controls the number of warm-up iterations
17-
# The -i option controls the number of iterations
16+
# The -m option sets the maximum message size
17+
# The -x option sets the number of warm-up iterations
18+
# The -i option sets the number of iterations
1819
self.executable_opts = ['-m', '8', '-x', '1000', '-i', '20000']
1920
self.valid_prog_environs = ['PrgEnv-cray', 'PrgEnv-gnu',
2021
'PrgEnv-intel']
@@ -24,22 +25,24 @@ def __init__(self, variant):
2425
'latency': sn.extractsingle(r'^8\s+(?P<latency>\S+)',
2526
self.stdout, 'latency', float)
2627
}
27-
self.tags = {variant}
28+
self.tags = {variant, 'benchmark'}
2829
self.reference = {
2930
'dom:gpu': {
3031
'latency': (8.23, None, 0.1, 'us')
3132
},
3233
'daint:gpu': {
3334
'latency': (20.73, None, 2.0, 'us')
3435
},
36+
'*': {
37+
'latency': (0, None, None, 'us')
38+
},
3539
}
3640
self.num_tasks_per_node = 1
3741
self.num_gpus_per_node = 1
38-
if self.current_system.name == 'dom':
39-
self.num_tasks = 6
40-
4142
if self.current_system.name == 'daint':
4243
self.num_tasks = 16
44+
else:
45+
self.num_tasks = 6
4346

4447
self.extra_resources = {
4548
'switches': {
@@ -69,7 +72,7 @@ def __init__(self):
6972
self.num_tasks_per_node = 1
7073
self.num_tasks = 0
7174
self.sanity_patterns = sn.assert_found(r'^1048576', self.stdout)
72-
self.tags = {'diagnostic', 'ops'}
75+
self.tags = {'diagnostic', 'ops', 'benchmark'}
7376

7477

7578
@rfm.required_version('>=2.16')
@@ -96,7 +99,7 @@ def __init__(self, variant):
9699
'latency': sn.extractsingle(r'^8\s+(?P<latency>\S+)',
97100
self.stdout, 'latency', float)
98101
}
99-
self.tags = {'production'}
102+
self.tags = {'production', 'benchmark'}
100103
if variant == 'small':
101104
self.num_tasks = 6
102105
self.reference = {
@@ -108,6 +111,9 @@ def __init__(self, variant):
108111
},
109112
'daint:mc': {
110113
'latency': (8.79, None, 0.25, 'us')
114+
},
115+
'*': {
116+
'latency': (0, None, None, 'us')
111117
}
112118
}
113119
else:
@@ -118,11 +124,12 @@ def __init__(self, variant):
118124
},
119125
'daint:mc': {
120126
'latency': (10.85, None, 0.20, 'us')
127+
},
128+
'*': {
129+
'latency': (0, None, None, 'us')
121130
}
122131
}
123132

124-
# Allow test to run on new systems without errors
125-
self.reference['*:latency'] = (0, None, None, 'us')
126133
self.num_tasks_per_node = 1
127134
self.num_gpus_per_node = 1
128135
self.extra_resources = {
@@ -175,7 +182,7 @@ def __init__(self):
175182
self.valid_prog_environs = ['PrgEnv-cray', 'PrgEnv-gnu',
176183
'PrgEnv-intel']
177184
self.maintainers = ['RS', 'VK']
178-
self.tags = {'production'}
185+
self.tags = {'production', 'benchmark'}
179186
self.sanity_patterns = sn.assert_found(r'^4194304', self.stdout)
180187

181188
self.extra_resources = {
@@ -213,6 +220,9 @@ def __init__(self):
213220
},
214221
'kesch:cn': {
215222
'bw': (6311.48, -0.15, None, 'MB/s')
223+
},
224+
'*': {
225+
'bw': (0, None, None, 'MB/s')
216226
}
217227
}
218228
self.perf_patterns = {
@@ -250,6 +260,9 @@ def __init__(self):
250260
},
251261
'kesch:cn': {
252262
'latency': (1.17, None, 0.1, 'us')
263+
},
264+
'*': {
265+
'latency': (0, None, None, 'us')
253266
}
254267
}
255268
self.perf_patterns = {
@@ -280,6 +293,9 @@ def __init__(self):
280293
'kesch:cn': {
281294
'bw': (6288.98, -0.1, None, 'MB/s')
282295
},
296+
'*': {
297+
'bw': (0, None, None, 'MB/s')
298+
}
283299
}
284300
self.perf_patterns = {
285301
'bw': sn.extractsingle(r'^4194304\s+(?P<bw>\S+)',
@@ -317,6 +333,9 @@ def __init__(self):
317333
'kesch:cn': {
318334
'latency': (23.09, None, 0.1, 'us')
319335
},
336+
'*': {
337+
'latency': (0, None, None, 'us')
338+
}
320339
}
321340
self.perf_patterns = {
322341
'latency': sn.extractsingle(r'^8\s+(?P<latency>\S+)',

cscs-checks/microbenchmarks/stream/stream.py

Lines changed: 48 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,15 @@
55
@rfm.required_version('>=2.14')
66
@rfm.simple_test
77
class StreamTest(rfm.RegressionTest):
8+
"""This test checks the stream test:
9+
Function Best Rate MB/s Avg time Min time Max time
10+
Triad: 13991.7 0.017174 0.017153 0.017192
11+
"""
12+
813
def __init__(self):
914
super().__init__()
1015
self.descr = 'STREAM Benchmark'
1116
self.exclusive_access = True
12-
# All available systems are supported
1317
self.valid_systems = ['daint:gpu', 'daint:mc', 'dom:gpu', 'dom:mc',
1418
'kesch:cn', 'kesch:pn', 'leone:normal']
1519
self.valid_prog_environs = ['PrgEnv-cray', 'PrgEnv-gnu',
@@ -28,8 +32,6 @@ def __init__(self):
2832
}
2933
self.sourcepath = 'stream.c'
3034
self.build_system = 'SingleSource'
31-
self.sanity_patterns = sn.assert_found(
32-
r'Solution Validates: avg error less than', self.stdout)
3335
self.num_tasks = 1
3436
self.num_tasks_per_node = 1
3537
self.stream_cpus_per_task = {
@@ -42,66 +44,73 @@ def __init__(self):
4244
'leone:normal': 16,
4345
'monch:compute': 20,
4446
}
45-
4647
self.variables = {
4748
'OMP_PLACES': 'threads',
4849
'OMP_PROC_BIND': 'spread'
4950
}
51+
self.sanity_patterns = sn.assert_found(
52+
r'Solution Validates: avg error less than', self.stdout)
53+
self.perf_patterns = {
54+
'triad': sn.extractsingle(r'Triad:\s+(?P<triad>\S+)\s+\S+',
55+
self.stdout, 'triad', float)
56+
}
5057
self.stream_bw_reference = {
5158
'PrgEnv-cray': {
52-
'daint:gpu': {'triad': (50223.0, -0.15, None)},
53-
'daint:mc': {'triad': (56643.0, -0.25, None)},
54-
'dom:gpu': {'triad': (50440.0, -0.15, None)},
55-
'dom:mc': {'triad': (56711.0, -0.25, None)},
56-
'kesch:cn': {'triad': (103129.0, -0.05, None)},
57-
'kesch:pn': {'triad': (55967.0, -0.1, None)},
59+
'daint:gpu': {'triad': (50223.0, -0.15, None, 'MB/s')},
60+
'daint:mc': {'triad': (56643.0, -0.25, None, 'MB/s')},
61+
'dom:gpu': {'triad': (50440.0, -0.15, None, 'MB/s')},
62+
'dom:mc': {'triad': (56711.0, -0.25, None, 'MB/s')},
63+
'kesch:cn': {'triad': (103129.0, -0.05, None, 'MB/s')},
64+
'kesch:pn': {'triad': (55967.0, -0.1, None, 'MB/s')},
65+
'*': {'triad': (0.0, None, None, 'MB/s')},
5866
},
5967
'PrgEnv-gnu': {
60-
'daint:gpu': {'triad': (50223.0, -0.15, None)},
61-
'daint:mc': {'triad': (56643.0, -0.25, None)},
62-
'dom:gpu': {'triad': (50440.0, -0.15, None)},
63-
'dom:mc': {'triad': (56711.0, -0.25, None)},
64-
'kesch:cn': {'triad': (78046.0, -0.05, None)},
65-
'kesch:pn': {'triad': (43803.0, -0.1, None)},
66-
'leone:normal': {'triad': (44767.0, -0.05, None)},
67-
'monch:compute': {'triad': (31011.0, -0.05, None)},
68+
'daint:gpu': {'triad': (50223.0, -0.15, None, 'MB/s')},
69+
'daint:mc': {'triad': (56643.0, -0.25, None, 'MB/s')},
70+
'dom:gpu': {'triad': (50440.0, -0.15, None, 'MB/s')},
71+
'dom:mc': {'triad': (56711.0, -0.25, None, 'MB/s')},
72+
'kesch:cn': {'triad': (78046.0, -0.05, None, 'MB/s')},
73+
'kesch:pn': {'triad': (43803.0, -0.1, None, 'MB/s')},
74+
'leone:normal': {'triad': (44767.0, -0.05, None, 'MB/s')},
75+
'monch:compute': {'triad': (31011.0, -0.05, None, 'MB/s')},
76+
'*': {'triad': (0.0, None, None, 'MB/s')},
6877
},
6978
'PrgEnv-intel': {
70-
'daint:gpu': {'triad': (50223.0, -0.15, None)},
71-
'daint:mc': {'triad': (56643.0, -0.25, None)},
72-
'dom:gpu': {'triad': (50440.0, -0.15, None)},
73-
'dom:mc': {'triad': (56711.0, -0.25, None)},
79+
'daint:gpu': {'triad': (50223.0, -0.15, None, 'MB/s')},
80+
'daint:mc': {'triad': (56643.0, -0.25, None, 'MB/s')},
81+
'dom:gpu': {'triad': (50440.0, -0.15, None, 'MB/s')},
82+
'dom:mc': {'triad': (56711.0, -0.25, None, 'MB/s')},
83+
'*': {'triad': (0.0, None, None, 'MB/s')},
7484
},
7585
'PrgEnv-pgi': {
76-
'daint:gpu': {'triad': (50223.0, -0.15, None)},
77-
'daint:mc': {'triad': (56643.0, -0.25, None)},
78-
'dom:gpu': {'triad': (50440.0, -0.15, None)},
79-
'dom:mc': {'triad': (56711.0, -0.25, None)},
80-
'kesch:cn': {'triad': (78637.0, -0.1, None)},
81-
'kesch:pn': {'triad': (86022.0, -0.1, None)},
86+
'daint:gpu': {'triad': (50223.0, -0.15, None, 'MB/s')},
87+
'daint:mc': {'triad': (56643.0, -0.25, None, 'MB/s')},
88+
'dom:gpu': {'triad': (50440.0, -0.15, None, 'MB/s')},
89+
'dom:mc': {'triad': (56711.0, -0.25, None, 'MB/s')},
90+
'kesch:cn': {'triad': (78637.0, -0.1, None, 'MB/s')},
91+
'kesch:pn': {'triad': (86022.0, -0.1, None, 'MB/s')},
92+
'*': {'triad': (0.0, None, None, 'MB/s')},
8293
}
8394
}
84-
self.perf_patterns = {
85-
'triad': sn.extractsingle(r'Triad:\s+(?P<triad>\S+)\s+\S+',
86-
self.stdout, 'triad', float)
87-
}
88-
8995
self.tags = {'production', 'monch_acceptance'}
9096
self.maintainers = ['RS', 'VK']
9197

9298
def setup(self, partition, environ, **job_opts):
93-
self.num_cpus_per_task = self.stream_cpus_per_task[partition.fullname]
99+
self.num_cpus_per_task = self.stream_cpus_per_task.get(
100+
partition.fullname, 1)
101+
self.variables['OMP_NUM_THREADS'] = str(self.num_cpus_per_task)
94102
if self.current_system.name == 'kesch':
95103
envname = environ.name.replace('-nompi', '')
96104
else:
97105
envname = environ.name
98106

99-
self.reference = self.stream_bw_reference[envname]
100-
# On SLURM there is no need to set OMP_NUM_THREADS if one defines
101-
# num_cpus_per_task, but adding for completeness and portability
102-
self.variables['OMP_NUM_THREADS'] = str(self.num_cpus_per_task)
107+
self.build_system.cflags = self.prgenv_flags.get(envname, ['-O3'])
103108
if envname == 'PrgEnv-pgi':
104109
self.variables['OMP_PROC_BIND'] = 'true'
105110

106-
self.build_system.cflags = self.prgenv_flags[envname]
111+
try:
112+
self.reference = self.stream_bw_reference[envname]
113+
except KeyError:
114+
self.reference = {'*': {'triad': (0.0, None, None, 'MB/s')}}
115+
107116
super().setup(partition, environ, **job_opts)

docs/configure.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,8 +97,8 @@ The valid attributes of a system are the following:
9797
* ``modules_system``: The modules system that should be used for loading environment modules on this system (default :class:`None`).
9898
Three types of modules systems are currently supported:
9999

100-
- ``tmod``: The classic Tcl implementation of the `environment modules <https://sourceforge.net/projects/modules/files/Modules/modules-3.2.10/>`__.
101-
- ``tmod4``: The version 4 of the Tcl implementation of the `environment modules <http://modules.sourceforge.net/>`__.
100+
- ``tmod``: The classic Tcl implementation of the `environment modules <https://sourceforge.net/projects/modules/files/Modules/modules-3.2.10/>`__ (versions older than 3.2 are not supported).
101+
- ``tmod4``: The version 4 of the Tcl implementation of the `environment modules <http://modules.sourceforge.net/>`__ (versions older than 4.1 are not supported).
102102
- ``lmod``: The Lua implementation of the `environment modules <https://lmod.readthedocs.io/en/latest/>`__.
103103
* ``prefix``: Default regression prefix for this system (default ``.``).
104104
* ``stagedir``: Default stage directory for this system (default :class:`None`).

0 commit comments

Comments
 (0)