Skip to content

Commit 7297d10

Browse files
author
Theofilos Manitaras
committed
Merge branch 'master' into test/required_version_semver
2 parents d1fab6a + 3a39a39 commit 7297d10

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

52 files changed

+2154
-243
lines changed

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@
1212
![PyPI - Python Version](https://img.shields.io/pypi/pyversions/reframe-hpc)<br/>
1313
[![Slack](https://reframe-slack.herokuapp.com/badge.svg)](https://reframe-slack.herokuapp.com/)<br/>
1414
[![License](https://img.shields.io/badge/License-BSD%203--Clause-blue.svg)](https://opensource.org/licenses/BSD-3-Clause)
15-
[![DOI](https://zenodo.org/badge/89384186.svg)](https://zenodo.org/badge/latestdoi/89384186)
15+
[![DOI](https://zenodo.org/badge/89384186.svg)](https://zenodo.org/badge/latestdoi/89384186)<br/>
16+
![Twitter Follow](https://img.shields.io/twitter/follow/ReFrameHPC?style=social)
1617

1718
# ReFrame in a Nutshell
1819

config/cscs.py

Lines changed: 66 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -660,10 +660,10 @@
660660
]
661661
},
662662
{
663-
'name': 'pilatus',
664-
'descr': 'Alps Cray EX Supercomputer (TDS)',
663+
'name': 'eiger',
664+
'descr': 'Alps Cray EX Supercomputer',
665665
'hostnames': [
666-
'pilatus'
666+
'eiger'
667667
],
668668
'modules_system': 'lmod',
669669
'resourcesdir': '/apps/common/UES/reframe/resources',
@@ -711,10 +711,10 @@
711711
]
712712
},
713713
{
714-
'name': 'eiger',
715-
'descr': 'Alps Cray EX Supercomputer',
714+
'name': 'pilatus',
715+
'descr': 'Alps Cray EX Supercomputer TDS',
716716
'hostnames': [
717-
'eiger'
717+
'pilatus'
718718
],
719719
'modules_system': 'lmod',
720720
'resourcesdir': '/apps/common/UES/reframe/resources',
@@ -724,9 +724,14 @@
724724
'scheduler': 'local',
725725
'environs': [
726726
'builtin',
727+
'PrgEnv-aocc',
727728
'PrgEnv-cray',
728729
'PrgEnv-gnu',
729-
'PrgEnv-aocc'
730+
'PrgEnv-intel',
731+
'cpeAMD',
732+
'cpeCray',
733+
'cpeGNU',
734+
'cpeIntel'
730735
],
731736
'descr': 'Login nodes',
732737
'max_jobs': 4,
@@ -738,9 +743,14 @@
738743
'scheduler': 'slurm',
739744
'environs': [
740745
'builtin',
746+
'PrgEnv-aocc',
741747
'PrgEnv-cray',
742748
'PrgEnv-gnu',
743-
'PrgEnv-aocc'
749+
'PrgEnv-intel',
750+
'cpeAMD',
751+
'cpeCray',
752+
'cpeGNU',
753+
'cpeIntel'
744754
],
745755
'max_jobs': 100,
746756
'resources': [
@@ -905,6 +915,15 @@
905915
'cxx': 'g++',
906916
'ftn': 'gfortran'
907917
},
918+
{
919+
'name': 'PrgEnv-aocc',
920+
'target_systems': [
921+
'eiger', 'pilatus'
922+
],
923+
'modules': [
924+
{'name': 'PrgEnv-aocc', 'collection': True}
925+
]
926+
},
908927
{
909928
'name': 'PrgEnv-cray',
910929
'target_systems': [
@@ -924,14 +943,50 @@
924943
]
925944
},
926945
{
927-
'name': 'PrgEnv-aocc',
946+
'name': 'PrgEnv-intel',
928947
'target_systems': [
929-
'eiger', 'pilatus'
948+
'pilatus'
930949
],
931950
'modules': [
932-
{'name': 'PrgEnv-aocc', 'collection': True}
951+
{'name': 'PrgEnv-intel', 'collection': True}
933952
]
934953
},
954+
{
955+
'name': 'cpeAMD',
956+
'target_systems': [
957+
'eiger', 'pilatus'
958+
],
959+
'modules': [
960+
'cpeAMD'
961+
],
962+
},
963+
{
964+
'name': 'cpeCray',
965+
'target_systems': [
966+
'eiger', 'pilatus'
967+
],
968+
'modules': [
969+
'cpeCray'
970+
],
971+
},
972+
{
973+
'name': 'cpeGNU',
974+
'target_systems': [
975+
'eiger', 'pilatus'
976+
],
977+
'modules': [
978+
'cpeGNU'
979+
],
980+
},
981+
{
982+
'name': 'cpeIntel',
983+
'target_systems': [
984+
'pilatus'
985+
],
986+
'modules': [
987+
'cpeIntel'
988+
],
989+
},
935990
{
936991
'name': 'PrgEnv-cray',
937992
'modules': [

cscs-checks/apps/cp2k/cp2k_check.py

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,11 @@
99

1010
class Cp2kCheck(rfm.RunOnlyRegressionTest):
1111
def __init__(self):
12-
self.valid_prog_environs = ['builtin']
12+
if self.current_system.name == 'pilatus':
13+
self.valid_prog_environs = ['cpeGNU']
14+
else:
15+
self.valid_prog_environs = ['builtin']
16+
1317
self.modules = ['CP2K']
1418
self.executable = 'cp2k.psmp'
1519
self.executable_opts = ['H2O-256.inp']
@@ -51,13 +55,13 @@ class Cp2kCpuCheck(Cp2kCheck):
5155
def __init__(self, scale, variant):
5256
super().__init__()
5357
self.descr = 'CP2K CPU check (version: %s, %s)' % (scale, variant)
54-
self.valid_systems = ['daint:mc', 'eiger:mc']
58+
self.valid_systems = ['daint:mc', 'eiger:mc', 'pilatus:mc']
5559
if scale == 'small':
5660
self.valid_systems += ['dom:mc']
5761
if self.current_system.name in ['daint', 'dom']:
5862
self.num_tasks = 216
5963
self.num_tasks_per_node = 36
60-
elif self.current_system.name == 'eiger':
64+
elif self.current_system.name in ['eiger', 'pilatus']:
6165
self.num_tasks = 96
6266
self.num_tasks_per_node = 16
6367
self.num_cpus_per_task = 16
@@ -74,7 +78,7 @@ def __init__(self, scale, variant):
7478
if self.current_system.name in ['daint', 'dom']:
7579
self.num_tasks = 576
7680
self.num_tasks_per_node = 36
77-
elif self.current_system.name in ['eiger']:
81+
elif self.current_system.name in ['eiger', 'pilatus']:
7882
self.num_tasks = 256
7983
self.num_tasks_per_node = 16
8084
self.num_cpus_per_task = 16
@@ -92,22 +96,26 @@ def __init__(self, scale, variant):
9296
'small': {
9397
'dom:mc': {'time': (202.2, None, 0.05, 's')},
9498
'daint:mc': {'time': (180.9, None, 0.08, 's')},
95-
'eiger:mc': {'time': (70.0, None, 0.08, 's')}
99+
'eiger:mc': {'time': (70.0, None, 0.08, 's')},
100+
'pilatus:mc': {'time': (70.0, None, 0.08, 's')}
96101
},
97102
'large': {
98103
'daint:mc': {'time': (141.0, None, 0.05, 's')},
99-
'eiger:mc': {'time': (46.0, None, 0.05, 's')}
104+
'eiger:mc': {'time': (46.0, None, 0.05, 's')},
105+
'pilatus:mc': {'time': (46.0, None, 0.05, 's')}
100106
}
101107
},
102108
'prod': {
103109
'small': {
104110
'dom:mc': {'time': (202.2, None, 0.05, 's')},
105111
'daint:mc': {'time': (180.9, None, 0.08, 's')},
106-
'eiger:mc': {'time': (70.0, None, 0.08, 's')}
112+
'eiger:mc': {'time': (70.0, None, 0.08, 's')},
113+
'pilatus:mc': {'time': (70.0, None, 0.08, 's')}
107114
},
108115
'large': {
109116
'daint:mc': {'time': (113.0, None, 0.05, 's')},
110-
'eiger:mc': {'time': (46.0, None, 0.05, 's')}
117+
'eiger:mc': {'time': (46.0, None, 0.05, 's')},
118+
'pilatus:mc': {'time': (46.0, None, 0.05, 's')}
111119
}
112120
}
113121
}

cscs-checks/apps/gromacs/gromacs_check.py

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,11 @@
1212

1313
class GromacsBaseCheck(rfm.RunOnlyRegressionTest):
1414
def __init__(self, output_file):
15-
self.valid_prog_environs = ['builtin']
15+
if self.current_system.name == 'pilatus':
16+
self.valid_prog_environs = ['cpeGNU']
17+
else:
18+
self.valid_prog_environs = ['builtin']
19+
1620
self.executable = 'gmx_mpi'
1721

1822
# Reset sources dir relative to the SCS apps prefix
@@ -97,7 +101,7 @@ def __init__(self, scale, variant):
97101
class GromacsCPUCheck(GromacsBaseCheck):
98102
def __init__(self, scale, variant):
99103
super().__init__('md.log')
100-
self.valid_systems = ['daint:mc', 'eiger:mc']
104+
self.valid_systems = ['daint:mc', 'eiger:mc', 'pilatus:mc']
101105
self.descr = 'GROMACS CPU check'
102106
self.executable_opts = ['mdrun', '-dlb yes', '-ntomp 1', '-npme -1',
103107
'-nb cpu', '-s herflat.tpr']
@@ -107,14 +111,14 @@ def __init__(self, scale, variant):
107111
if (self.current_system.name in ['daint', 'dom']):
108112
self.num_tasks = 216
109113
self.num_tasks_per_node = 36
110-
elif (self.current_system.name in ['eiger']):
114+
elif (self.current_system.name in ['eiger', 'pilatus']):
111115
self.num_tasks = 768
112116
self.num_tasks_per_node = 128
113117
else:
114118
if (self.current_system.name in ['daint', 'dom']):
115119
self.num_tasks = 576
116120
self.num_tasks_per_node = 36
117-
elif (self.current_system.name in ['eiger']):
121+
elif (self.current_system.name in ['eiger', 'pilatus']):
118122
self.num_tasks = 2048
119123
self.num_tasks_per_node = 128
120124

@@ -123,11 +127,13 @@ def __init__(self, scale, variant):
123127
'small': {
124128
'dom:mc': {'perf': (40.0, -0.05, None, 'ns/day')},
125129
'daint:mc': {'perf': (38.8, -0.10, None, 'ns/day')},
126-
'eiger:mc': {'perf': (103.00, -0.10, None, 'ns/day')}
130+
'eiger:mc': {'perf': (103.00, -0.10, None, 'ns/day')},
131+
'pilatus:mc': {'perf': (103.00, -0.10, None, 'ns/day')}
127132
},
128133
'large': {
129134
'daint:mc': {'perf': (68.0, -0.20, None, 'ns/day')},
130-
'eiger:mc': {'perf': (146.00, -0.20, None, 'ns/day')}
135+
'eiger:mc': {'perf': (146.00, -0.20, None, 'ns/day')},
136+
'pilatus:mc': {'perf': (146.00, -0.20, None, 'ns/day')}
131137
}
132138
},
133139
}

cscs-checks/apps/lammps/lammps_check.py

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,10 @@
1111

1212
class LAMMPSBaseCheck(rfm.RunOnlyRegressionTest):
1313
def __init__(self):
14-
self.valid_prog_environs = ['builtin']
14+
if self.current_system.name == 'pilatus':
15+
self.valid_prog_environs = ['cpeGNU']
16+
else:
17+
self.valid_prog_environs = ['builtin']
1518
self.modules = ['LAMMPS']
1619

1720
# Reset sources dir relative to the SCS apps prefix
@@ -90,9 +93,15 @@ def __init__(self, scale, variant):
9093
class LAMMPSCPUCheck(LAMMPSBaseCheck):
9194
def __init__(self, scale, variant):
9295
super().__init__()
93-
self.valid_systems = ['daint:mc']
94-
self.executable = 'lmp_omp'
95-
self.executable_opts = ['-sf omp', '-pk omp 1', '-in in.lj.cpu']
96+
self.valid_systems = ['daint:mc', 'eiger:mc', 'pilatus:mc']
97+
if self.current_system.name in ['eiger', 'pilatus']:
98+
self.executable = 'lmp_mpi'
99+
self.executable_opts = ['-in in.lj.cpu']
100+
else:
101+
self.executable = 'lmp_omp'
102+
self.executable_opts = ['-sf omp', '-pk omp 1', '-in in.lj.cpu']
103+
104+
self.scale = scale
96105
if scale == 'small':
97106
self.valid_systems += ['dom:mc']
98107
self.num_tasks = 216
@@ -101,14 +110,22 @@ def __init__(self, scale, variant):
101110
self.num_tasks_per_node = 36
102111
self.num_tasks = 576
103112

113+
if self.current_system.name == 'eiger':
114+
self.num_tasks_per_node = 128
115+
self.num_tasks = 256 if self.scale == 'small' else 512
116+
104117
references = {
105118
'prod': {
106119
'small': {
107120
'dom:mc': {'perf': (4394, -0.05, None, 'timesteps/s')},
108-
'daint:mc': {'perf': (3824, -0.10, None, 'timesteps/s')}
121+
'daint:mc': {'perf': (3824, -0.10, None, 'timesteps/s')},
122+
'eiger:mc': {'perf': (4500, -0.10, None, 'timesteps/s')},
123+
'pilatus:mc': {'perf': (5000, -0.10, None, 'timesteps/s')}
109124
},
110125
'large': {
111-
'daint:mc': {'perf': (5310, -0.65, None, 'timesteps/s')}
126+
'daint:mc': {'perf': (5310, -0.65, None, 'timesteps/s')},
127+
'eiger:mc': {'perf': (6500, -0.10, None, 'timesteps/s')},
128+
'pilatus:mc': {'perf': (7500, -0.10, None, 'timesteps/s')}
112129
}
113130
},
114131
}

cscs-checks/apps/namd/namd_check.py

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,11 @@
1212
class NamdBaseCheck(rfm.RunOnlyRegressionTest):
1313
def __init__(self, arch, scale, variant):
1414
self.descr = f'NAMD check ({arch}, {variant})'
15-
self.valid_prog_environs = ['builtin']
15+
if self.current_system.name == 'pilatus':
16+
self.valid_prog_environs = ['cpeIntel']
17+
else:
18+
self.valid_prog_environs = ['builtin']
19+
1620
self.modules = ['NAMD']
1721

1822
# Reset sources dir relative to the SCS apps prefix
@@ -24,14 +28,14 @@ def __init__(self, arch, scale, variant):
2428

2529
if scale == 'small':
2630
# On Eiger a no-smp NAMD version is the default
27-
if self.current_system.name == 'eiger':
31+
if self.current_system.name in ['eiger', 'pilatus']:
2832
self.num_tasks = 768
2933
self.num_tasks_per_node = 128
3034
else:
3135
self.num_tasks = 6
3236
self.num_tasks_per_node = 1
3337
else:
34-
if self.current_system.name == 'eiger':
38+
if self.current_system.name in ['eiger', 'pilatus']:
3539
self.num_tasks = 2048
3640
self.num_tasks_per_node = 128
3741
else:
@@ -96,9 +100,9 @@ def __init__(self, scale, variant):
96100
class NamdCPUCheck(NamdBaseCheck):
97101
def __init__(self, scale, variant):
98102
super().__init__('cpu', scale, variant)
99-
self.valid_systems = ['daint:mc', 'eiger:mc']
103+
self.valid_systems = ['daint:mc', 'eiger:mc', 'pilatus:mc']
100104
# On Eiger a no-smp NAMD version is the default
101-
if self.current_system.name == 'eiger':
105+
if self.current_system.name in ['eiger', 'pilatus']:
102106
self.executable_opts = ['+idlepoll', 'stmv.namd']
103107
self.num_tasks_per_core = 2
104108
else:
@@ -109,12 +113,14 @@ def __init__(self, scale, variant):
109113
self.reference = {
110114
'dom:mc': {'days_ns': (0.51, None, 0.05, 'days/ns')},
111115
'daint:mc': {'days_ns': (0.51, None, 0.05, 'days/ns')},
112-
'eiger:mc': {'days_ns': (0.12, None, 0.05, 'days/ns')}
116+
'eiger:mc': {'days_ns': (0.12, None, 0.05, 'days/ns')},
117+
'pilatus:mc': {'days_ns': (0.15, None, 0.05, 'days/ns')},
113118
}
114119
else:
115120
self.reference = {
116121
'daint:mc': {'days_ns': (0.28, None, 0.05, 'days/ns')},
117-
'eiger:mc': {'days_ns': (0.05, None, 0.05, 'days/ns')}
122+
'eiger:mc': {'days_ns': (0.05, None, 0.05, 'days/ns')},
123+
'pilatus:mc': {'days_ns': (0.06, None, 0.05, 'days/ns')}
118124
}
119125

120126
self.tags |= {'maintenance' if variant == 'maint' else 'production'}

0 commit comments

Comments
 (0)