Skip to content

Commit 7175a8e

Browse files
author
Vasileios Karakasis
committed
Merge branch 'master' into feat/easybuild
2 parents 3e442ad + dd7da0e commit 7175a8e

File tree

73 files changed

+3303
-1143
lines changed

Some content is hidden

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

73 files changed

+3303
-1143
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: 81 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,20 @@
3131
'max_jobs': 4,
3232
'launcher': 'local'
3333
},
34+
{
35+
'name': 'a64fx',
36+
'scheduler': 'slurm',
37+
'access': [
38+
'-pa64fx'
39+
],
40+
'environs': [
41+
'builtin',
42+
'PrgEnv-gnu'
43+
],
44+
'descr': 'Fujitsu A64FX CPUs',
45+
'max_jobs': 100,
46+
'launcher': 'srun'
47+
},
3448
{
3549
'name': 'amda100',
3650
'scheduler': 'slurm',
@@ -646,10 +660,10 @@
646660
]
647661
},
648662
{
649-
'name': 'pilatus',
650-
'descr': 'Alps Cray EX Supercomputer (TDS)',
663+
'name': 'eiger',
664+
'descr': 'Alps Cray EX Supercomputer',
651665
'hostnames': [
652-
'pilatus'
666+
'eiger'
653667
],
654668
'modules_system': 'lmod',
655669
'resourcesdir': '/apps/common/UES/reframe/resources',
@@ -697,10 +711,10 @@
697711
]
698712
},
699713
{
700-
'name': 'eiger',
701-
'descr': 'Alps Cray EX Supercomputer',
714+
'name': 'pilatus',
715+
'descr': 'Alps Cray EX Supercomputer TDS',
702716
'hostnames': [
703-
'eiger'
717+
'pilatus'
704718
],
705719
'modules_system': 'lmod',
706720
'resourcesdir': '/apps/common/UES/reframe/resources',
@@ -710,9 +724,14 @@
710724
'scheduler': 'local',
711725
'environs': [
712726
'builtin',
727+
'PrgEnv-aocc',
713728
'PrgEnv-cray',
714729
'PrgEnv-gnu',
715-
'PrgEnv-aocc'
730+
'PrgEnv-intel',
731+
'cpeAMD',
732+
'cpeCray',
733+
'cpeGNU',
734+
'cpeIntel'
716735
],
717736
'descr': 'Login nodes',
718737
'max_jobs': 4,
@@ -724,9 +743,14 @@
724743
'scheduler': 'slurm',
725744
'environs': [
726745
'builtin',
746+
'PrgEnv-aocc',
727747
'PrgEnv-cray',
728748
'PrgEnv-gnu',
729-
'PrgEnv-aocc'
749+
'PrgEnv-intel',
750+
'cpeAMD',
751+
'cpeCray',
752+
'cpeGNU',
753+
'cpeIntel'
730754
],
731755
'max_jobs': 100,
732756
'resources': [
@@ -771,9 +795,7 @@
771795
'ault'
772796
],
773797
'modules': [
774-
'gcc/9.3.0',
775-
'cuda/11.0',
776-
'openmpi/3.1.6'
798+
'openmpi'
777799
],
778800
'cc': 'mpicc',
779801
'cxx': 'mpicxx',
@@ -893,6 +915,15 @@
893915
'cxx': 'g++',
894916
'ftn': 'gfortran'
895917
},
918+
{
919+
'name': 'PrgEnv-aocc',
920+
'target_systems': [
921+
'eiger', 'pilatus'
922+
],
923+
'modules': [
924+
{'name': 'PrgEnv-aocc', 'collection': True}
925+
]
926+
},
896927
{
897928
'name': 'PrgEnv-cray',
898929
'target_systems': [
@@ -912,14 +943,50 @@
912943
]
913944
},
914945
{
915-
'name': 'PrgEnv-aocc',
946+
'name': 'PrgEnv-intel',
916947
'target_systems': [
917-
'eiger', 'pilatus'
948+
'pilatus'
918949
],
919950
'modules': [
920-
{'name': 'PrgEnv-aocc', 'collection': True}
951+
{'name': 'PrgEnv-intel', 'collection': True}
921952
]
922953
},
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+
},
923990
{
924991
'name': 'PrgEnv-cray',
925992
'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
@@ -99,7 +103,7 @@ def __init__(self, scale, variant):
99103
class GromacsCPUCheck(GromacsBaseCheck):
100104
def __init__(self, scale, variant):
101105
super().__init__('md.log')
102-
self.valid_systems = ['daint:mc', 'eiger:mc']
106+
self.valid_systems = ['daint:mc', 'eiger:mc', 'pilatus:mc']
103107
self.descr = 'GROMACS CPU check'
104108
self.executable_opts = ['mdrun', '-dlb yes', '-ntomp 1', '-npme -1',
105109
'-nb cpu', '-s herflat.tpr']
@@ -109,14 +113,14 @@ def __init__(self, scale, variant):
109113
if (self.current_system.name in ['daint', 'dom']):
110114
self.num_tasks = 216
111115
self.num_tasks_per_node = 36
112-
elif (self.current_system.name in ['eiger']):
116+
elif (self.current_system.name in ['eiger', 'pilatus']):
113117
self.num_tasks = 768
114118
self.num_tasks_per_node = 128
115119
else:
116120
if (self.current_system.name in ['daint', 'dom']):
117121
self.num_tasks = 576
118122
self.num_tasks_per_node = 36
119-
elif (self.current_system.name in ['eiger']):
123+
elif (self.current_system.name in ['eiger', 'pilatus']):
120124
self.num_tasks = 2048
121125
self.num_tasks_per_node = 128
122126

@@ -125,11 +129,13 @@ def __init__(self, scale, variant):
125129
'small': {
126130
'dom:mc': {'perf': (40.0, -0.05, None, 'ns/day')},
127131
'daint:mc': {'perf': (38.8, -0.10, None, 'ns/day')},
128-
'eiger:mc': {'perf': (103.00, -0.10, None, 'ns/day')}
132+
'eiger:mc': {'perf': (103.00, -0.10, None, 'ns/day')},
133+
'pilatus:mc': {'perf': (103.00, -0.10, None, 'ns/day')}
129134
},
130135
'large': {
131136
'daint:mc': {'perf': (68.0, -0.20, None, 'ns/day')},
132-
'eiger:mc': {'perf': (146.00, -0.20, None, 'ns/day')}
137+
'eiger:mc': {'perf': (146.00, -0.20, None, 'ns/day')},
138+
'pilatus:mc': {'perf': (146.00, -0.20, None, 'ns/day')}
133139
}
134140
},
135141
}

cscs-checks/apps/lammps/lammps_check.py

Lines changed: 25 additions & 8 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
@@ -41,7 +44,7 @@ def __init__(self):
4144
self.maintainers = ['TR', 'VH']
4245

4346

44-
@rfm.required_version('>=2.16')
47+
@rfm.required_version('>=2.16.0')
4548
@rfm.parameterized_test(*([s, v]
4649
for s in ['small', 'large']
4750
for v in ['prod', 'maint']))
@@ -85,16 +88,22 @@ def __init__(self, scale, variant):
8588
self.tags |= {'maintenance' if variant == 'maint' else 'production'}
8689

8790

88-
@rfm.required_version('>=2.16')
91+
@rfm.required_version('>=2.16.0')
8992
@rfm.parameterized_test(*([s, v]
9093
for s in ['small', 'large']
9194
for v in ['prod']))
9295
class LAMMPSCPUCheck(LAMMPSBaseCheck):
9396
def __init__(self, scale, variant):
9497
super().__init__()
95-
self.valid_systems = ['daint:mc']
96-
self.executable = 'lmp_omp'
97-
self.executable_opts = ['-sf omp', '-pk omp 1', '-in in.lj.cpu']
98+
self.valid_systems = ['daint:mc', 'eiger:mc', 'pilatus:mc']
99+
if self.current_system.name in ['eiger', 'pilatus']:
100+
self.executable = 'lmp_mpi'
101+
self.executable_opts = ['-in in.lj.cpu']
102+
else:
103+
self.executable = 'lmp_omp'
104+
self.executable_opts = ['-sf omp', '-pk omp 1', '-in in.lj.cpu']
105+
106+
self.scale = scale
98107
if scale == 'small':
99108
self.valid_systems += ['dom:mc']
100109
self.num_tasks = 216
@@ -103,14 +112,22 @@ def __init__(self, scale, variant):
103112
self.num_tasks_per_node = 36
104113
self.num_tasks = 576
105114

115+
if self.current_system.name == 'eiger':
116+
self.num_tasks_per_node = 128
117+
self.num_tasks = 256 if self.scale == 'small' else 512
118+
106119
references = {
107120
'prod': {
108121
'small': {
109122
'dom:mc': {'perf': (4394, -0.05, None, 'timesteps/s')},
110-
'daint:mc': {'perf': (3824, -0.10, None, 'timesteps/s')}
123+
'daint:mc': {'perf': (3824, -0.10, None, 'timesteps/s')},
124+
'eiger:mc': {'perf': (4500, -0.10, None, 'timesteps/s')},
125+
'pilatus:mc': {'perf': (5000, -0.10, None, 'timesteps/s')}
111126
},
112127
'large': {
113-
'daint:mc': {'perf': (5310, -0.65, None, 'timesteps/s')}
128+
'daint:mc': {'perf': (5310, -0.65, None, 'timesteps/s')},
129+
'eiger:mc': {'perf': (6500, -0.10, None, 'timesteps/s')},
130+
'pilatus:mc': {'perf': (7500, -0.10, None, 'timesteps/s')}
114131
}
115132
},
116133
}

0 commit comments

Comments
 (0)