diff --git a/config/cscs.py b/config/cscs.py index ed7bfb00dd..6bb5778a33 100644 --- a/config/cscs.py +++ b/config/cscs.py @@ -677,9 +677,14 @@ 'scheduler': 'local', 'environs': [ 'builtin', + 'PrgEnv-aocc', 'PrgEnv-cray', 'PrgEnv-gnu', - 'PrgEnv-aocc' + 'PrgEnv-intel', + 'cpeAMD', + 'cpeCray', + 'cpeGNU', + 'cpeIntel' ], 'descr': 'Login nodes', 'max_jobs': 4, @@ -691,9 +696,14 @@ 'scheduler': 'slurm', 'environs': [ 'builtin', + 'PrgEnv-aocc', 'PrgEnv-cray', 'PrgEnv-gnu', - 'PrgEnv-aocc' + 'PrgEnv-intel', + 'cpeAMD', + 'cpeCray', + 'cpeGNU', + 'cpeIntel' ], 'max_jobs': 100, 'resources': [ diff --git a/cscs-checks/apps/cp2k/cp2k_check.py b/cscs-checks/apps/cp2k/cp2k_check.py index 2ba8b51c1a..d627d4ceb2 100644 --- a/cscs-checks/apps/cp2k/cp2k_check.py +++ b/cscs-checks/apps/cp2k/cp2k_check.py @@ -9,7 +9,7 @@ class Cp2kCheck(rfm.RunOnlyRegressionTest): def __init__(self): - if self.current_system.name == 'pilatus': + if self.current_system.name in ['eiger', 'pilatus']: self.valid_prog_environs = ['cpeGNU'] else: self.valid_prog_environs = ['builtin'] diff --git a/cscs-checks/apps/gromacs/gromacs_check.py b/cscs-checks/apps/gromacs/gromacs_check.py index 7474ddc98f..a0fc0d0989 100644 --- a/cscs-checks/apps/gromacs/gromacs_check.py +++ b/cscs-checks/apps/gromacs/gromacs_check.py @@ -12,7 +12,7 @@ class GromacsBaseCheck(rfm.RunOnlyRegressionTest): def __init__(self, output_file): - if self.current_system.name == 'pilatus': + if self.current_system.name in ['eiger', 'pilatus']: self.valid_prog_environs = ['cpeGNU'] else: self.valid_prog_environs = ['builtin'] diff --git a/cscs-checks/apps/lammps/lammps_check.py b/cscs-checks/apps/lammps/lammps_check.py index 702a7011e1..9a8fcee39e 100644 --- a/cscs-checks/apps/lammps/lammps_check.py +++ b/cscs-checks/apps/lammps/lammps_check.py @@ -11,7 +11,7 @@ class LAMMPSBaseCheck(rfm.RunOnlyRegressionTest): def __init__(self): - if self.current_system.name == 'pilatus': + if self.current_system.name in ['eiger', 'pilatus']: self.valid_prog_environs = ['cpeGNU'] else: self.valid_prog_environs = ['builtin'] diff --git a/cscs-checks/apps/namd/namd_check.py b/cscs-checks/apps/namd/namd_check.py index c86fe725c3..d768c5c95f 100644 --- a/cscs-checks/apps/namd/namd_check.py +++ b/cscs-checks/apps/namd/namd_check.py @@ -12,8 +12,8 @@ class NamdBaseCheck(rfm.RunOnlyRegressionTest): def __init__(self, arch, scale, variant): self.descr = f'NAMD check ({arch}, {variant})' - if self.current_system.name == 'pilatus': - self.valid_prog_environs = ['cpeIntel'] + if self.current_system.name in ['eiger', 'pilatus']: + self.valid_prog_environs = ['cpeGNU'] else: self.valid_prog_environs = ['builtin'] @@ -114,13 +114,13 @@ def __init__(self, scale, variant): 'dom:mc': {'days_ns': (0.51, None, 0.05, 'days/ns')}, 'daint:mc': {'days_ns': (0.51, None, 0.05, 'days/ns')}, 'eiger:mc': {'days_ns': (0.12, None, 0.05, 'days/ns')}, - 'pilatus:mc': {'days_ns': (0.15, None, 0.05, 'days/ns')}, + 'pilatus:mc': {'days_ns': (0.12, None, 0.05, 'days/ns')}, } else: self.reference = { 'daint:mc': {'days_ns': (0.28, None, 0.05, 'days/ns')}, 'eiger:mc': {'days_ns': (0.05, None, 0.05, 'days/ns')}, - 'pilatus:mc': {'days_ns': (0.06, None, 0.05, 'days/ns')} + 'pilatus:mc': {'days_ns': (0.05, None, 0.05, 'days/ns')} } self.tags |= {'maintenance' if variant == 'maint' else 'production'} diff --git a/cscs-checks/apps/paraview/paraview_check.py b/cscs-checks/apps/paraview/paraview_check.py index df0b310b54..3c5d943cb1 100644 --- a/cscs-checks/apps/paraview/paraview_check.py +++ b/cscs-checks/apps/paraview/paraview_check.py @@ -11,8 +11,13 @@ class ParaViewCheck(rfm.RunOnlyRegressionTest): def __init__(self): self.valid_systems = ['daint:gpu', 'daint:mc', 'dom:gpu', 'dom:mc', - 'eiger:mc'] - self.valid_prog_environs = ['builtin'] + 'eiger:mc', 'pilatus:mc'] + + if self.current_system.name in ['eiger', 'pilatus']: + self.valid_prog_environs = ['cpeCray'] + else: + self.valid_prog_environs = ['builtin'] + self.num_tasks = 12 self.num_tasks_per_node = 12 self.modules = ['ParaView'] diff --git a/cscs-checks/apps/quantumespresso/quantumespresso_check.py b/cscs-checks/apps/quantumespresso/quantumespresso_check.py index b0f7c7b0b3..c2a9614ee3 100644 --- a/cscs-checks/apps/quantumespresso/quantumespresso_check.py +++ b/cscs-checks/apps/quantumespresso/quantumespresso_check.py @@ -12,8 +12,8 @@ class QuantumESPRESSOCheck(rfm.RunOnlyRegressionTest): variant = parameter(['maint', 'prod']) def __init__(self): - if self.current_system.name == 'pilatus': - self.valid_prog_environs = ['cpeGNU'] + if self.current_system.name in ['eiger', 'pilatus']: + self.valid_prog_environs = ['cpeIntel'] else: self.valid_prog_environs = ['builtin'] @@ -58,10 +58,9 @@ def __init__(self): self.num_tasks_per_node = 16 self.num_cpus_per_task = 16 self.num_tasks_per_core = 1 - self.use_multithreading = False self.variables = { 'MPICH_OFI_STARTUP_CONNECT': '1', - 'OMP_NUM_THREADS': '8', + 'OMP_NUM_THREADS': str(self.num_cpus_per_task), 'OMP_PLACES': 'cores', 'OMP_PROC_BIND': 'close' } @@ -75,10 +74,9 @@ def __init__(self): self.num_tasks_per_node = 16 self.num_cpus_per_task = 16 self.num_tasks_per_core = 1 - self.use_multithreading = False self.variables = { 'MPICH_OFI_STARTUP_CONNECT': '1', - 'OMP_NUM_THREADS': '8', + 'OMP_NUM_THREADS': str(self.num_cpus_per_task), 'OMP_PLACES': 'cores', 'OMP_PROC_BIND': 'close' } diff --git a/cscs-checks/apps/vasp/vasp_check.py b/cscs-checks/apps/vasp/vasp_check.py index e3efb97ba1..a1c88dbe5b 100644 --- a/cscs-checks/apps/vasp/vasp_check.py +++ b/cscs-checks/apps/vasp/vasp_check.py @@ -9,7 +9,7 @@ class VASPCheck(rfm.RunOnlyRegressionTest): def __init__(self): - if self.current_system.name == 'pilatus': + if self.current_system.name in ['eiger', 'pilatus']: self.valid_prog_environs = ['cpeIntel'] else: self.valid_prog_environs = ['builtin'] diff --git a/cscs-checks/libraries/boost/boost_python_check.py b/cscs-checks/libraries/boost/boost_python_check.py index d292569654..96ce5e006c 100644 --- a/cscs-checks/libraries/boost/boost_python_check.py +++ b/cscs-checks/libraries/boost/boost_python_check.py @@ -12,8 +12,13 @@ class BoostPythonBindingsTest(rfm.RegressionTest): def __init__(self): self.descr = f'Test for Boost with Python bindings' self.valid_systems = ['daint:gpu', 'daint:mc', 'dom:gpu', 'dom:mc', - 'eiger:mc'] - self.valid_prog_environs = ['builtin'] + 'eiger:mc', 'pilatus:mc'] + + if self.current_system.name in ['eiger', 'pilatus']: + self.valid_prog_environs = ['cpeGNU'] + else: + self.valid_prog_environs = ['builtin'] + self.modules = [f'Boost'] self.executable = f'python3 hello.py' self.sanity_patterns = sn.assert_found('hello, world', self.stdout) diff --git a/cscs-checks/libraries/io/hdf5_compile_run.py b/cscs-checks/libraries/io/hdf5_compile_run.py index 3522114c46..079b676a1d 100644 --- a/cscs-checks/libraries/io/hdf5_compile_run.py +++ b/cscs-checks/libraries/io/hdf5_compile_run.py @@ -19,10 +19,17 @@ def __init__(self, lang, linkage): self.descr = lang_names[lang] + ' HDF5 ' + linkage.capitalize() self.sourcepath = f'h5ex_d_chunk.{lang}' self.valid_systems = ['daint:gpu', 'daint:mc', 'dom:gpu', 'dom:mc'] - self.valid_prog_environs = ['PrgEnv-cray', 'PrgEnv-gnu', - 'PrgEnv-intel', 'PrgEnv-pgi'] if linkage == 'dynamic': - self.valid_systems += ['eiger:mc'] + self.valid_systems += ['eiger:mc', 'pilatus:mc'] + + if self.current_system.name in ['eiger', 'pilatus']: + # no cray-hdf5 as of PE 21.02 with PrgEnv-intel on Eiger and + # Pilatus + self.valid_prog_environs = ['PrgEnv-aocc', 'PrgEnv-cray', + 'PrgEnv-gnu'] + else: + self.valid_prog_environs = ['PrgEnv-cray', 'PrgEnv-gnu', + 'PrgEnv-intel', 'PrgEnv-pgi'] self.modules = ['cray-hdf5'] self.keep_files = ['h5dump_out.txt'] diff --git a/cscs-checks/libraries/io/netcdf_compile_run.py b/cscs-checks/libraries/io/netcdf_compile_run.py index 041311ef33..4d857bbf5c 100644 --- a/cscs-checks/libraries/io/netcdf_compile_run.py +++ b/cscs-checks/libraries/io/netcdf_compile_run.py @@ -22,9 +22,9 @@ def __init__(self, lang, linkage): self.linkage = linkage self.descr = f'{lang_names[lang]} NetCDF {linkage.capitalize()}' self.valid_systems = ['daint:gpu', 'daint:mc', 'dom:gpu', 'dom:mc', - 'arolla:cn', 'tsa:cn', 'eiger:mc'] - if linkage == 'static': - self.valid_systems.remove('eiger:mc') + 'arolla:cn', 'tsa:cn'] + if linkage == 'dynamic': + self.valid_systems += ['eiger:mc', 'pilatus:mc'] if self.current_system.name in ['daint', 'dom']: self.valid_prog_environs = ['PrgEnv-cray', 'PrgEnv-gnu', @@ -33,8 +33,10 @@ def __init__(self, lang, linkage): elif self.current_system.name in ['arolla', 'tsa']: self.exclusive_access = True self.valid_prog_environs = ['PrgEnv-gnu-nompi', 'PrgEnv-pgi-nompi'] - elif self.current_system.name in ['eiger']: - self.valid_prog_environs = ['PrgEnv-cray', 'PrgEnv-gnu'] + elif self.current_system.name in ['eiger', 'pilatus']: + # no cray-netcdf as of PE 21.02 with PrgEnv-intel + self.valid_prog_environs = ['PrgEnv-aocc', 'PrgEnv-cray', + 'PrgEnv-gnu'] self.modules = ['cray-hdf5', 'cray-netcdf'] else: self.valid_prog_environs = [] diff --git a/cscs-checks/libraries/math/scalapack_compile_run.py b/cscs-checks/libraries/math/scalapack_compile_run.py index cc1e40c80a..7f7ceb2be2 100644 --- a/cscs-checks/libraries/math/scalapack_compile_run.py +++ b/cscs-checks/libraries/math/scalapack_compile_run.py @@ -12,8 +12,10 @@ class ScaLAPACKTest(rfm.RegressionTest): linkage = parameter(['static', 'dynamic']) sourcepath = 'sample_pdsyev_call.f' - valid_systems = ['daint:gpu', 'daint:mc', 'dom:mc', 'dom:gpu', 'eiger:mc'] - valid_prog_environs = ['PrgEnv-cray', 'PrgEnv-gnu', 'PrgEnv-intel'] + valid_systems = ['daint:gpu', 'daint:mc', 'dom:mc', 'dom:gpu', + 'eiger:mc', 'pilatus:mc'] + valid_prog_environs = ['PrgEnv-aocc', 'PrgEnv-cray', 'PrgEnv-gnu', + 'PrgEnv-intel'] num_tasks = 16 num_tasks_per_node = 8 build_system = 'SingleSource' @@ -26,9 +28,9 @@ def set_build_flags(self): @rfm.run_after('init') def set_linkage(self): - if self.current_system.name == 'eiger': + if self.current_system.name in ['eiger', 'pilatus']: self.skip_if(self.linkage == 'static', - 'static linking not supported on Eiger') + 'static linking not supported on Alps') self.variables = {'CRAYPE_LINK_TYPE': self.linkage} diff --git a/cscs-checks/microbenchmarks/cpu/alloc_speed/alloc_speed.py b/cscs-checks/microbenchmarks/cpu/alloc_speed/alloc_speed.py index f937c2a18d..b7a1f929c0 100644 --- a/cscs-checks/microbenchmarks/cpu/alloc_speed/alloc_speed.py +++ b/cscs-checks/microbenchmarks/cpu/alloc_speed/alloc_speed.py @@ -15,13 +15,14 @@ def __init__(self, hugepages): self.build_system = 'SingleSource' self.build_system.cxxflags = ['-O3', '-std=c++11'] self.valid_systems = ['daint:gpu', 'daint:mc', 'dom:gpu', 'dom:mc', - 'eiger:mc'] + 'eiger:mc', 'pilatus:mc'] self.valid_prog_environs = ['PrgEnv-gnu'] if hugepages == 'no': self.valid_systems += ['arolla:cn', 'arolla:pn', 'tsa:cn', 'tsa:pn'] else: - if self.current_system.name in {'dom', 'daint', 'eiger'}: + if self.current_system.name in {'dom', 'daint', + 'eiger', 'pilatus'}: self.modules = ['craype-hugepages%s' % hugepages] self.sanity_patterns = sn.assert_found('4096 MB', self.stdout) @@ -46,6 +47,9 @@ def __init__(self, hugepages): 'eiger:mc': { 'time': (0.12, -0.20, 0.05, 's') }, + 'pilatus:mc': { + 'time': (0.12, -0.20, 0.05, 's') + }, }, '2M': { 'dom:gpu': { @@ -63,6 +67,9 @@ def __init__(self, hugepages): 'eiger:mc': { 'time': (0.06, -0.20, 0.10, 's') }, + 'pilatus:mc': { + 'time': (0.06, -0.20, 0.10, 's') + }, '*': { 'time': (0, None, None, 's') } diff --git a/cscs-checks/microbenchmarks/cpu/dgemm/dgemm.py b/cscs-checks/microbenchmarks/cpu/dgemm/dgemm.py index fb175d3d62..3b9fc82b42 100644 --- a/cscs-checks/microbenchmarks/cpu/dgemm/dgemm.py +++ b/cscs-checks/microbenchmarks/cpu/dgemm/dgemm.py @@ -18,12 +18,12 @@ def __init__(self): self.perf_patterns = {} self.valid_systems = ['daint:gpu', 'daint:mc', 'dom:gpu', 'dom:mc', 'arolla:cn', 'arolla:pn', 'tsa:cn', 'tsa:pn', - 'eiger:mc'] + 'eiger:mc', 'pilatus:mc'] if self.current_system.name in ['daint', 'dom']: self.valid_prog_environs = ['PrgEnv-gnu', 'PrgEnv-intel'] elif self.current_system.name in ['arolla', 'tsa']: self.valid_prog_environs = ['PrgEnv-gnu-nompi'] - elif self.current_system.name in ['eiger']: + elif self.current_system.name in ['eiger', 'pilatus']: self.valid_prog_environs = ['PrgEnv-gnu'] else: self.valid_prog_environs = [] @@ -39,6 +39,7 @@ def __init__(self): 'dom:gpu': (300.0, -0.15, None, 'Gflop/s'), 'dom:mc': (1040.0, -0.15, None, 'Gflop/s'), 'eiger:mc': (3200.0, -0.15, None, 'Gflop/s'), + 'pilatus:mc': (3200.0, -0.15, None, 'Gflop/s'), } self.maintainers = ['AJ', 'VH'] self.tags = {'benchmark', 'diagnostic', 'craype'} @@ -72,7 +73,7 @@ def set_tasks(self): self.num_cpus_per_task = 16 elif self.current_partition.fullname in ['arolla:pn', 'tsa:pn']: self.num_cpus_per_task = 40 - elif self.current_partition.fullname in ['eiger:mc']: + elif self.current_partition.fullname in ['eiger:mc', 'pilatus:mc']: self.num_cpus_per_task = 128 if self.num_cpus_per_task: diff --git a/cscs-checks/microbenchmarks/cpu/strided_bandwidth/strides.py b/cscs-checks/microbenchmarks/cpu/strided_bandwidth/strides.py index 09f47d33be..22991adccd 100644 --- a/cscs-checks/microbenchmarks/cpu/strided_bandwidth/strides.py +++ b/cscs-checks/microbenchmarks/cpu/strided_bandwidth/strides.py @@ -12,7 +12,7 @@ def __init__(self): self.sourcepath = 'strides.cpp' self.build_system = 'SingleSource' self.valid_systems = ['daint:gpu', 'dom:gpu', 'daint:mc', 'dom:mc', - 'eiger:mc'] + 'eiger:mc', 'pilatus:mc'] self.valid_prog_environs = ['PrgEnv-gnu'] self.num_tasks = 1 self.num_tasks_per_node = 1 @@ -33,6 +33,7 @@ def __init__(self): 'dom:mc': 72, 'dom:gpu': 24, 'eiger:mc': 128, + 'pilatus:mc': 128 } self.maintainers = ['SK'] @@ -65,6 +66,9 @@ def __init__(self): 'eiger:mc': { 'bandwidth': (270, -0.1, 0.1, 'GB/s') }, + 'pilatus:mc': { + 'bandwidth': (270, -0.1, 0.1, 'GB/s') + } } @rfm.run_before('run') @@ -96,6 +100,9 @@ def __init__(self): 'eiger:mc': { 'bandwidth': (33, -0.1, 0.2, 'GB/s') }, + 'pilatus:mc': { + 'bandwidth': (33, -0.1, 0.2, 'GB/s') + } } @rfm.run_before('run') diff --git a/cscs-checks/microbenchmarks/mpi/halo_exchange/halo_cell_exchange.py b/cscs-checks/microbenchmarks/mpi/halo_exchange/halo_cell_exchange.py index 59fdf9ff14..622f6726ea 100644 --- a/cscs-checks/microbenchmarks/mpi/halo_exchange/halo_cell_exchange.py +++ b/cscs-checks/microbenchmarks/mpi/halo_exchange/halo_cell_exchange.py @@ -14,9 +14,8 @@ def __init__(self): self.build_system = 'SingleSource' self.build_system.cflags = ['-O2'] self.valid_systems = ['daint:gpu', 'dom:gpu', 'daint:mc', 'dom:mc', - 'arolla:cn', 'tsa:cn', 'eiger:mc'] - self.valid_prog_environs = ['PrgEnv-cray', 'PrgEnv-pgi', - 'PrgEnv-gnu'] + 'arolla:cn', 'tsa:cn', 'eiger:mc', 'pilatus:mc'] + self.valid_prog_environs = ['PrgEnv-cray', 'PrgEnv-gnu', 'PrgEnv-pgi'] self.num_tasks = 6 self.num_tasks_per_node = 1 self.num_gpus_per_node = 0 @@ -121,6 +120,17 @@ def __init__(self): 'time_6_10000': (1.04e-05, None, 0.50, 's'), 'time_6_1000000': (3.55e-04, None, 0.50, 's') }, + 'pilatus:mc': { + 'time_2_10': (3.46e-06, None, 0.50, 's'), + 'time_2_10000': (8.51e-06, None, 0.50, 's'), + 'time_2_1000000': (2.07e-04, None, 0.50, 's'), + 'time_4_10': (4.46e-06, None, 0.50, 's'), + 'time_4_10000': (1.08e-05, None, 0.50, 's'), + 'time_4_1000000': (3.55e-04, None, 0.50, 's'), + 'time_6_10': (4.53e-06, None, 0.50, 's'), + 'time_6_10000': (1.04e-05, None, 0.50, 's'), + 'time_6_1000000': (3.55e-04, None, 0.50, 's') + }, } self.maintainers = ['AJ'] diff --git a/cscs-checks/microbenchmarks/mpi/osu/osu_tests.py b/cscs-checks/microbenchmarks/mpi/osu/osu_tests.py index e21e1629a9..9adf34cf2a 100644 --- a/cscs-checks/microbenchmarks/mpi/osu/osu_tests.py +++ b/cscs-checks/microbenchmarks/mpi/osu/osu_tests.py @@ -159,7 +159,7 @@ class P2PCPUBandwidthTest(P2PBaseTest): def __init__(self): super().__init__() self.valid_systems = ['daint:gpu', 'daint:mc', 'dom:gpu', 'dom:mc', - 'arolla:cn', 'tsa:cn', 'eiger:mc'] + 'arolla:cn', 'tsa:cn', 'eiger:mc', 'pilatus:mc'] self.executable = './p2p_osu_bw' self.executable_opts = ['-x', '100', '-i', '1000'] self.reference = { @@ -178,6 +178,9 @@ def __init__(self): 'eiger:mc': { 'bw': (12240.0, -0.10, None, 'MB/s') }, + 'pilatus:mc': { + 'bw': (12240.0, -0.10, None, 'MB/s') + }, # keeping as reference: # 'monch:compute': { # 'bw': (6317.84, -0.15, None, 'MB/s') @@ -194,7 +197,7 @@ class P2PCPULatencyTest(P2PBaseTest): def __init__(self): super().__init__() self.valid_systems = ['daint:gpu', 'daint:mc', 'dom:gpu', 'dom:mc', - 'arolla:cn', 'tsa:cn', 'eiger:mc'] + 'arolla:cn', 'tsa:cn', 'eiger:mc', 'pilatus:mc'] self.executable_opts = ['-x', '100', '-i', '1000'] self.executable = './p2p_osu_latency' @@ -214,6 +217,9 @@ def __init__(self): 'eiger:mc': { 'latency': (2.33, None, 0.15, 'us') }, + 'pilatus:mc': { + 'latency': (2.33, None, 0.15, 'us') + }, # keeping as reference: # 'monch:compute': { # 'latency': (1.27, None, 0.1, 'us') diff --git a/cscs-checks/prgenv/environ_check.py b/cscs-checks/prgenv/environ_check.py index 887a760a11..2f53b5da95 100644 --- a/cscs-checks/prgenv/environ_check.py +++ b/cscs-checks/prgenv/environ_check.py @@ -13,19 +13,15 @@ class DefaultPrgEnvCheck(rfm.RunOnlyRegressionTest): def __init__(self): self.descr = 'Ensure PrgEnv-cray is loaded by default' self.valid_prog_environs = ['builtin'] - self.valid_systems = ['daint:login', 'dom:login', 'eiger:login'] + self.valid_systems = ['daint:login', 'dom:login', + 'eiger:login', 'pilatus:login'] self.executable = 'module' self.maintainers = ['TM', 'CB'] self.tags = {'production', 'craype'} self.sanity_patterns = sn.assert_found(r'^PrgEnv-cray', self.stderr) - if self.current_system.name == 'eiger': - self.executable_opts = ['list'] - prgenv_patt = r'1\) cpe-cray' - else: - self.executable_opts = ['list', '-t'] - prgenv_patt = r'^PrgEnv-cray' - + self.executable_opts = ['--terse', 'list'] + prgenv_patt = r'^PrgEnv-cray' self.sanity_patterns = sn.assert_found(prgenv_patt, self.stderr) @@ -33,27 +29,19 @@ def __init__(self): class EnvironmentCheck(rfm.RunOnlyRegressionTest): def __init__(self): self.descr = 'Ensure programming environment is loaded correctly' - self.valid_systems = ['daint:login', 'dom:login', 'eiger:login'] - self.valid_prog_environs = ['PrgEnv-cray', 'PrgEnv-gnu', 'PrgEnv-pgi', - 'PrgEnv-intel', 'PrgEnv-aocc'] + self.valid_systems = ['daint:login', 'dom:login', + 'eiger:login', 'pilatus:login'] + self.valid_prog_environs = ['PrgEnv-aocc', 'PrgEnv-cray', 'PrgEnv-gnu', + 'PrgEnv-intel', 'PrgEnv-pgi'] self.executable = 'module' - if self.current_system.name == 'eiger': - self.executable_opts = ['list'] - else: - self.executable_opts = ['list', '-t'] + self.executable_opts = ['--terse', 'list'] self.maintainers = ['TM', 'CB'] self.tags = {'production', 'craype'} @rfm.run_before('sanity') def set_sanity(self): - # NOTE: On eiger, the first module of each programming environment, - # follows the 'cpe-' pattern where corresponds to the - # 'PrgEnv-' used. - if self.current_system.name == 'eiger': - module_patt = rf'1\) cpe-{self.current_environ.name[7:]}' - else: - module_patt = rf'^{self.current_environ.name}' + module_patt = rf'^{self.current_environ.name}' self.sanity_patterns = sn.assert_found(module_patt, self.stderr) diff --git a/cscs-checks/prgenv/helloworld.py b/cscs-checks/prgenv/helloworld.py index ce22af0d4d..7264f65108 100644 --- a/cscs-checks/prgenv/helloworld.py +++ b/cscs-checks/prgenv/helloworld.py @@ -26,10 +26,11 @@ def __init__(self, variant, lang, linkage): self.valid_systems = ['daint:gpu', 'daint:mc', 'dom:gpu', 'dom:mc', 'arolla:cn', 'arolla:pn', 'tsa:cn', 'tsa:pn'] if linkage == 'dynamic': - self.valid_systems.append('eiger:mc') + self.valid_systems += ['eiger:mc', 'pilatus:mc'] - self.valid_prog_environs = ['PrgEnv-cray', 'PrgEnv-cray_classic', - 'PrgEnv-intel', 'PrgEnv-gnu', 'PrgEnv-pgi', + self.valid_prog_environs = ['PrgEnv-aocc', 'PrgEnv-cray', + 'PrgEnv-cray_classic', 'PrgEnv-gnu', + 'PrgEnv-intel', 'PrgEnv-pgi', 'PrgEnv-gnu-nocuda', 'PrgEnv-pgi-nocuda'] if self.current_system.name in ['arolla', 'tsa']: @@ -118,6 +119,7 @@ def __init__(self, lang, linkage): self.sourcepath += '_serial.' + lang self.descr += ' Serial ' + linkage.capitalize() self.prgenv_flags = { + 'PrgEnv-aocc': [], 'PrgEnv-cray': [], 'PrgEnv-cray_classic': [], 'PrgEnv-gnu': [], @@ -146,6 +148,7 @@ def __init__(self, lang, linkage): self.sourcepath += '_openmp.' + lang self.descr += ' OpenMP ' + str.capitalize(linkage) self.prgenv_flags = { + 'PrgEnv-aocc': ['-fopenmp'], 'PrgEnv-cray': ['-homp' if lang == 'F90' else '-fopenmp'], 'PrgEnv-cray_classic': ['-homp'], 'PrgEnv-gnu': ['-fopenmp'], @@ -180,6 +183,7 @@ def __init__(self, lang, linkage): self.sourcepath += '_mpi.' + lang self.descr += ' MPI ' + linkage.capitalize() self.prgenv_flags = { + 'PrgEnv-aocc': [], 'PrgEnv-cray': [], 'PrgEnv-cray_classic': [], 'PrgEnv-gnu': [], @@ -205,6 +209,7 @@ def __init__(self, lang, linkage): self.sourcepath += '_mpi_openmp.' + lang self.descr += ' MPI + OpenMP ' + linkage.capitalize() self.prgenv_flags = { + 'PrgEnv-aocc': ['-fopenmp'], 'PrgEnv-cray': ['-homp' if lang == 'F90' else '-fopenmp'], 'PrgEnv-cray_classic': ['-homp'], 'PrgEnv-gnu': ['-fopenmp'], diff --git a/cscs-checks/prgenv/mpi.py b/cscs-checks/prgenv/mpi.py index 0210b43228..49dd889883 100644 --- a/cscs-checks/prgenv/mpi.py +++ b/cscs-checks/prgenv/mpi.py @@ -9,7 +9,7 @@ import reframe.utility.sanity as sn -@rfm.parameterized_test(['single'], ['funneled'], ['serialized'], ['multiple']) +@rfm.simple_test class MpiInitTest(rfm.RegressionTest): '''This test checks the value returned by calling MPI_Init_thread. @@ -33,22 +33,32 @@ class MpiInitTest(rfm.RegressionTest): mpi_thread_queried=MPI_THREAD_SERIALIZED 2'] ''' + required_thread = parameter(['single', 'funneled', 'serialized', + 'multiple']) - def __init__(self, required_thread): + def __init__(self): self.valid_systems = ['daint:gpu', 'daint:mc', 'dom:gpu', 'dom:mc', - 'eiger:mc'] - self.valid_prog_environs = ['PrgEnv-cray', 'PrgEnv-gnu', 'PrgEnv-pgi', - 'PrgEnv-intel'] + 'eiger:mc', 'pilatus:mc'] + self.valid_prog_environs = ['PrgEnv-aocc', 'PrgEnv-cray', 'PrgEnv-gnu', + 'PrgEnv-intel', 'PrgEnv-pgi', + 'cpeAMD', 'cpeCray', 'cpeGNU', 'cpeIntel'] self.build_system = 'SingleSource' self.sourcesdir = 'src/mpi_thread' self.sourcepath = 'mpi_init_thread.cpp' + # NOTE: occasionally, the wrapper fails to find the mpich dir, hence: + mpich_pkg_config_path = '$CRAY_MPICH_PREFIX/lib/pkgconfig' + self.variables = { + 'PKG_CONFIG_PATH': f'$PKG_CONFIG_PATH:{mpich_pkg_config_path}' + } + cppflags = '`pkg-config --cflags mpich` `pkg-config --libs mpich`' self.cppflags = { - 'single': ['-D_MPI_THREAD_SINGLE'], - 'funneled': ['-D_MPI_THREAD_FUNNELED'], - 'serialized': ['-D_MPI_THREAD_SERIALIZED'], - 'multiple': ['-D_MPI_THREAD_MULTIPLE'] + 'single': [cppflags, '-D_MPI_THREAD_SINGLE'], + 'funneled': [cppflags, '-D_MPI_THREAD_FUNNELED'], + 'serialized': [cppflags, '-D_MPI_THREAD_SERIALIZED'], + 'multiple': [cppflags, '-D_MPI_THREAD_MULTIPLE'] } - self.build_system.cppflags = self.cppflags[required_thread] + self.build_system.cppflags = self.cppflags[self.required_thread] + self.prebuild_cmds = ['module list'] self.time_limit = '1m' self.maintainers = ['JG', 'AJ'] self.tags = {'production', 'craype'} @@ -58,6 +68,7 @@ def set_sanity(self): # {{{ 0/ MPICH version: # MPI VERSION : CRAY MPICH version 7.7.15 (ANL base 3.2) # MPI VERSION : CRAY MPICH version 8.0.16.17 (ANL base 3.3) + # MPI VERSION : CRAY MPICH version 8.1.4.31 (ANL base 3.4a2) regex = r'= MPI VERSION\s+: CRAY MPICH version \S+ \(ANL base (\S+)\)' stdout = os.path.join(self.stagedir, sn.evaluate(self.stdout)) mpich_version = sn.extractsingle(regex, stdout, 1) @@ -74,7 +85,13 @@ def set_sanity(self): 'MPI_THREAD_FUNNELED': 1, 'MPI_THREAD_SERIALIZED': 2, 'MPI_THREAD_MULTIPLE': 3 - } + }, + '3.4a2': { + 'MPI_THREAD_SINGLE': 0, + 'MPI_THREAD_FUNNELED': 1, + 'MPI_THREAD_SERIALIZED': 2, + 'MPI_THREAD_MULTIPLE': 3 + }, } # }}} regex = (r'^mpi_thread_required=(\w+)\s+mpi_thread_supported=\w+' @@ -96,7 +113,7 @@ class MpiHelloTest(rfm.RegressionTest): def __init__(self): self.valid_systems = ['daint:gpu', 'daint:mc', 'dom:gpu', 'dom:mc', 'arolla:cn', 'arolla:pn', 'tsa:cn', 'tsa:pn', - 'eiger:mc'] + 'eiger:mc', 'pilatus:mc'] self.valid_prog_environs = ['PrgEnv-cray'] if self.current_system.name in ['arolla', 'tsa']: self.exclusive_access = True diff --git a/cscs-checks/prgenv/mpi_t.py b/cscs-checks/prgenv/mpi_t.py index 4c64b3c524..21f75381ba 100644 --- a/cscs-checks/prgenv/mpi_t.py +++ b/cscs-checks/prgenv/mpi_t.py @@ -13,9 +13,9 @@ class MpiTCheck(rfm.RegressionTest): def __init__(self): self.descr = 'Checks MPI_T control/performance variables/categories' self.valid_systems = ['daint:gpu', 'dom:gpu', 'daint:mc', 'dom:mc', - 'eiger:mc'] - self.valid_prog_environs = ['PrgEnv-cray', 'PrgEnv-gnu', 'PrgEnv-pgi', - 'PrgEnv-intel', 'PrgEnv-aocc'] + 'eiger:mc', 'pilatus:mc'] + self.valid_prog_environs = ['PrgEnv-aocc', 'PrgEnv-cray', 'PrgEnv-gnu', + 'PrgEnv-intel', 'PrgEnv-pgi'] self.build_system = 'SingleSource' self.sourcesdir = 'src/mpi_t' self.sourcepath = 'mpit_vars.c' @@ -31,6 +31,7 @@ def set_sanity(self): # {{{ 0/ MPICH version: # MPI VERSION : CRAY MPICH version 7.7.15 (ANL base 3.2) # MPI VERSION : CRAY MPICH version 8.0.16.17 (ANL base 3.3) + # MPI VERSION : CRAY MPICH version 8.1.4.31 (ANL base 3.4a2) regex = r'^MPI VERSION\s+: CRAY MPICH version \S+ \(ANL base (\S+)\)' rpt_file = os.path.join(self.stagedir, self.rpt) mpich_version = sn.extractsingle(regex, rpt_file, 1) @@ -42,7 +43,11 @@ def set_sanity(self): '3.3': { 'control': 'mpit_control_vars_33.ref', 'categories': 'mpit_categories_33.ref', - } + }, + '3.4a2': { + 'control': 'mpit_control_vars_34a2.ref', + 'categories': 'mpit_categories_34a2.ref', + }, } # }}} # {{{ 1/ MPI Control Variables: MPIR_... @@ -56,7 +61,7 @@ def set_sanity(self): # --- extract runtime data: regex = r'^\t(?PMPIR\S+)\t' self.run_control_vars = sorted(sn.extractall(regex, rpt_file, 'vars')) - # --- debug with: grep -P '\tMPIR+\S*\t' rpt |awk '{print $1}' |sort + # --- debug with:"grep -P '\tMPIR+\S*\t' rpt | awk '{print $1}' | sort" # }}} # {{{ 2/ MPI Category: # --- extract reference data: @@ -72,6 +77,7 @@ def set_sanity(self): r' performance variables, \d+ subcategories)') rpt = os.path.join(self.stagedir, self.rpt) self.run_cat_vars = sorted(sn.extractall(regex, rpt, 'category')) + # --- debug with:"grep Category rpt | sort" # }}} # {{{ 3/ Extracted lists can be compared (when sorted): self.sanity_patterns = sn.all([ diff --git a/cscs-checks/prgenv/src/mpi_t/mpit_categories_34a2.ref b/cscs-checks/prgenv/src/mpi_t/mpit_categories_34a2.ref new file mode 100644 index 0000000000..c59a68b75f --- /dev/null +++ b/cscs-checks/prgenv/src/mpi_t/mpit_categories_34a2.ref @@ -0,0 +1,24 @@ +Category CH3 has 0 control variables, 0 performance variables, 0 subcategories +Category CH4 has 1 control variables, 0 performance variables, 0 subcategories +Category CH4_OFI has 12 control variables, 0 performance variables, 0 subcategories +Category CH4_UCX has 2 control variables, 0 performance variables, 0 subcategories +Category COLLECTIVE has 30 control variables, 0 performance variables, 0 subcategories +Category COMMUNICATOR has 0 control variables, 0 performance variables, 0 subcategories +Category CRAY_CONTROL has 16 control variables, 0 performance variables, 0 subcategories +Category CRAY_DISPLAY has 7 control variables, 0 performance variables, 0 subcategories +Category CRAY_DMAPP has 0 control variables, 0 performance variables, 0 subcategories +Category CRAY_GNI has 0 control variables, 0 performance variables, 0 subcategories +Category CRAY_GPU has 13 control variables, 0 performance variables, 0 subcategories +Category CRAY_MPIIO has 20 control variables, 0 performance variables, 0 subcategories +Category DATALOOP has 0 control variables, 0 performance variables, 0 subcategories +Category DEBUGGER has 0 control variables, 0 performance variables, 0 subcategories +Category DEVELOPER has 0 control variables, 0 performance variables, 0 subcategories +Category DIMS has 0 control variables, 0 performance variables, 0 subcategories +Category ERROR_HANDLING has 0 control variables, 0 performance variables, 0 subcategories +Category FT has 0 control variables, 0 performance variables, 0 subcategories +Category MEMORY has 0 control variables, 0 performance variables, 0 subcategories +Category NEMESIS has 0 control variables, 0 performance variables, 0 subcategories +Category NODEMAP has 1 control variables, 0 performance variables, 0 subcategories +Category PROCESS_MANAGER has 1 control variables, 0 performance variables, 0 subcategories +Category REQUEST has 0 control variables, 0 performance variables, 0 subcategories +Category THREADS has 0 control variables, 0 performance variables, 0 subcategories diff --git a/cscs-checks/prgenv/src/mpi_t/mpit_control_vars_34a2.ref b/cscs-checks/prgenv/src/mpi_t/mpit_control_vars_34a2.ref new file mode 100644 index 0000000000..348616e242 --- /dev/null +++ b/cscs-checks/prgenv/src/mpi_t/mpit_control_vars_34a2.ref @@ -0,0 +1,103 @@ +MPIR_CVAR_ABORT_ON_ERROR=0 +MPIR_CVAR_ALLGATHER_VSHORT_MSG=-1 +MPIR_CVAR_ALLGATHERV_VSHORT_MSG=-1 +MPIR_CVAR_ALLOC_MEM_AFFINITY +MPIR_CVAR_ALLOC_MEM_PG_SZ +MPIR_CVAR_ALLOC_MEM_POLICY +MPIR_CVAR_ALLREDUCE_GPU_STAGING_THRESHOLD=0 +MPIR_CVAR_ALLREDUCE_NO_SMP=0 +MPIR_CVAR_ALLTOALL_SHORT_MSG=-1 +MPIR_CVAR_ALLTOALL_SYNC_FREQ=-1 +MPIR_CVAR_ALLTOALLV_THROTTLE=8 +MPIR_CVAR_BCAST_INTERNODE_RADIX=4 +MPIR_CVAR_BCAST_INTRANODE_RADIX=4 +MPIR_CVAR_BCAST_ONLY_TREE=1 +MPIR_CVAR_CH4_RMA_THREAD_HOT=0 +MPIR_CVAR_COLL_OPT_OFF +MPIR_CVAR_COLL_SYNC +MPIR_CVAR_CPUMASK_DISPLAY=0 +MPIR_CVAR_DPM_DIR +MPIR_CVAR_ENV_DISPLAY=0 +MPIR_CVAR_G2G_PIPELINE=8 +MPIR_CVAR_GATHERV_MAX_TMP_SIZE +MPIR_CVAR_GATHERV_MIN_COMM_SIZE=64 +MPIR_CVAR_GATHERV_SHORT_MSG=131072 +MPIR_CVAR_GATHERV_SYNC_FREQ=16 +MPIR_CVAR_GPU_COLL_STAGING_AREA_OPT=1 +MPIR_CVAR_GPU_COLL_STAGING_BUF_SIZE=262144 +MPIR_CVAR_GPU_EAGER_DEVICE_MEM=1 +MPIR_CVAR_GPU_EAGER_REGISTER_HOST_MEM=1 +MPIR_CVAR_GPU_IPC_ENABLED=-1 +MPIR_CVAR_GPU_IPC_PROTOCOL +MPIR_CVAR_GPU_IPC_THRESHOLD=8192 +MPIR_CVAR_GPU_NO_ASYNC_COPY=0 +MPIR_CVAR_GPU_SUPPORT_ENABLED=0 +MPIR_CVAR_INTERNAL_MEM_AFFINITY +MPIR_CVAR_MALLOC_FALLBACK=0 +MPIR_CVAR_MEMCPY_MEM_CHECK=0 +MPIR_CVAR_MEM_DEBUG_FNAME +MPIR_CVAR_MPIIO_ABORT_ON_RW_ERROR +MPIR_CVAR_MPIIO_AGGREGATOR_PLACEMENT_DISPLAY=0 +MPIR_CVAR_MPIIO_AGGREGATOR_PLACEMENT_STRIDE=-1 +MPIR_CVAR_MPIIO_CB_ALIGN=2 +MPIR_CVAR_MPIIO_DS_WRITE_CRAY=1 +MPIR_CVAR_MPIIO_DVS_MAXNODES=-1 +MPIR_CVAR_MPIIO_HINTS +MPIR_CVAR_MPIIO_HINTS_DISPLAY=0 +MPIR_CVAR_MPIIO_MAX_NUM_IRECV=50 +MPIR_CVAR_MPIIO_MAX_NUM_ISEND=50 +MPIR_CVAR_MPIIO_MAX_SIZE_ISEND=10485760 +MPIR_CVAR_MPIIO_OFI_STARTUP_CONNECT +MPIR_CVAR_MPIIO_OFI_STARTUP_NODES_AGGREGATOR=2 +MPIR_CVAR_MPIIO_STATS=0 +MPIR_CVAR_MPIIO_STATS_FILE +MPIR_CVAR_MPIIO_STATS_INTERVAL_MSEC +MPIR_CVAR_MPIIO_TIMERS=0 +MPIR_CVAR_MPIIO_TIMERS_SCALE=0 +MPIR_CVAR_MPIIO_TIME_WAITS=1 +MPIR_CVAR_MPIIO_WRITE_EXIT_BARRIER=1 +MPIR_CVAR_MSG_QUEUE_DBG=0 +MPIR_CVAR_NETWORK_BUFFER_COLL_OPT=0 +MPIR_CVAR_NO_BUFFER_ALIAS_CHECK=0 +MPIR_CVAR_NO_DIRECT_GPU_ACCESS=0 +MPIR_CVAR_NUM_MAX_GPU_STREAMS=27 +MPIR_CVAR_OFI_DEFAULT_TCLASS +MPIR_CVAR_OFI_NIC_MAPPING +MPIR_CVAR_OFI_NIC_POLICY +MPIR_CVAR_OFI_NIC_VERBOSE=0 +MPIR_CVAR_OFI_NUM_NICS +MPIR_CVAR_OFI_RMA_STARTUP_CONNECT=0 +MPIR_CVAR_OFI_SKIP_NIC_SELECTION=0 +MPIR_CVAR_OFI_SKIP_NIC_SYMMETRY_TEST=0 +MPIR_CVAR_OFI_STARTUP_CONNECT=0 +MPIR_CVAR_OFI_TCLASS_ERRORS +MPIR_CVAR_OFI_VERBOSE=0 +MPIR_CVAR_OFI_XRCD_BASE_DIR +MPIR_CVAR_OPTIMIZED_MEMCPY=1 +MPIR_CVAR_OPT_THREAD_SYNC=1 +MPIR_CVAR_RANK_REORDER_DISPLAY=0 +MPIR_CVAR_RANK_REORDER_METHOD=1 +MPIR_CVAR_REDUCE_NO_SMP=0 +MPIR_CVAR_REDUCE_SCATTER_COMMUTATIVE_LONG_MSG_SIZE=524288 +MPIR_CVAR_REDUCE_SCATTER_MAX_COMMSIZE=1000 +MPIR_CVAR_RMA_MAX_PENDING=64 +MPIR_CVAR_RMA_SHM_ACCUMULATE=0 +MPIR_CVAR_SCATTERV_MAX_TMP_SIZE +MPIR_CVAR_SCATTERV_MIN_COMM_SIZE=64 +MPIR_CVAR_SCATTERV_SHORT_MSG=-1 +MPIR_CVAR_SCATTERV_SYNC_FREQ=16 +MPIR_CVAR_SCATTERV_SYNCHRONOUS=0 +MPIR_CVAR_SHARED_MEM_COLL_OPT +MPIR_CVAR_SHM_PROGRESS_MAX_BATCH_SIZE=8 +MPIR_CVAR_SINGLETON_ENABLED=0 +MPIR_CVAR_SMP_SINGLE_COPY_MODE +MPIR_CVAR_SMP_SINGLE_COPY_SIZE=8192 +MPIR_CVAR_STATS_DISPLAY=0 +MPIR_CVAR_STATS_FILE +MPIR_CVAR_STATS_VERBOSITY=1 +MPIR_CVAR_THREAD_YIELD_FREQ=10000 +MPIR_CVAR_UCX_RC_MAX_RANKS=7 +MPIR_CVAR_UCX_VERBOSE=0 +MPIR_CVAR_USE_GPU_STREAM_TRIGGERED=0 +MPIR_CVAR_USE_SYSTEM_MEMCPY=0 +MPIR_CVAR_VERSION_DISPLAY=1 diff --git a/cscs-checks/prgenv/ulimit_check.py b/cscs-checks/prgenv/ulimit_check.py index 2f4867bbc5..19e1592d5c 100644 --- a/cscs-checks/prgenv/ulimit_check.py +++ b/cscs-checks/prgenv/ulimit_check.py @@ -12,9 +12,11 @@ class UlimitCheck(rfm.RegressionTest): def __init__(self): self.descr = 'Checking the output of ulimit -s in node.' self.valid_systems = ['daint:gpu', 'daint:mc', 'dom:gpu', 'dom:mc', - 'eiger:mc'] - self.valid_prog_environs = ['PrgEnv-cray', 'PrgEnv-gnu', - 'PrgEnv-intel', 'PrgEnv-pgi'] + 'eiger:mc', 'pilatus:mc'] + + self.valid_prog_environs = ['PrgEnv-aocc', 'PrgEnv-cray', + 'PrgEnv-gnu', 'PrgEnv-intel', + 'PrgEnv-pgi'] self.sourcesdir += '/ulimit' self.sourcepath = 'ulimit.c' self.sanity_patterns = sn.all([ diff --git a/cscs-checks/system/io/ior_check.py b/cscs-checks/system/io/ior_check.py index 879df081a6..f39d2f20d4 100644 --- a/cscs-checks/system/io/ior_check.py +++ b/cscs-checks/system/io/ior_check.py @@ -24,9 +24,12 @@ def __init__(self, base_dir): self.test_file = os.path.join(self.test_dir, 'ior') self.fs = { '/scratch/e1000': { - 'valid_systems': ['eiger:mc'], + 'valid_systems': ['eiger:mc', 'pilatus:mc'], 'eiger': { 'num_tasks': 10, + }, + 'pilatus': { + 'num_tasks': 10, } }, '/scratch/snx3000tds': { @@ -111,7 +114,7 @@ def __init__(self, base_dir): self.maintainers = ['SO', 'GLR'] - systems_to_test = ['dom', 'daint', 'eiger'] + systems_to_test = ['dom', 'daint', 'eiger', 'pilatus'] if self.current_system.name in systems_to_test: self.tags |= {'production', 'external-resources'} diff --git a/cscs-checks/system/slurm/slurm.py b/cscs-checks/system/slurm/slurm.py index ac42ca4792..b0683ea0c5 100644 --- a/cscs-checks/system/slurm/slurm.py +++ b/cscs-checks/system/slurm/slurm.py @@ -16,7 +16,8 @@ def __init__(self): 'dom:gpu', 'dom:mc', 'arolla:cn', 'arolla:pn', 'tsa:cn', 'tsa:pn', - 'daint:xfer', 'eiger:mc'] + 'daint:xfer', 'eiger:mc', + 'pilatus:mc'] self.valid_prog_environs = ['PrgEnv-cray'] self.tags = {'slurm', 'maintenance', 'ops', 'production', 'single-node'} @@ -59,6 +60,7 @@ def __init__(self): 'dom:gpu': r'^nid\d{5}$', 'dom:mc': r'^nid\d{5}$', 'eiger:mc': r'^nid\d{6}$', + 'pilatus:mc': r'^nid\d{6}$' } @rfm.run_before('sanity') @@ -79,7 +81,7 @@ def __init__(self): 'dom:gpu', 'dom:mc', 'arolla:cn', 'arolla:pn', 'tsa:cn', 'tsa:pn', - 'eiger:mc'] + 'eiger:mc', 'pilatus:mc'] self.executable = '/bin/echo' self.executable_opts = ['$MY_VAR'] self.variables = {'MY_VAR': 'TEST123456!'} @@ -181,7 +183,7 @@ class MemoryOverconsumptionCheck(SlurmCompiledBaseCheck): def __init__(self): super().__init__() self.time_limit = '1m' - self.valid_systems += ['eiger:mc'] + self.valid_systems += ['eiger:mc', 'pilatus:mc'] self.sourcepath = 'eatmemory.c' self.tags.add('mem') self.executable_opts = ['4000M'] @@ -254,7 +256,7 @@ def reference_meminfo(self): 'daint:mc': 62, # this will pass with 64 GB and above memory sizes # this will pass with 256 GB and above memory sizes: 'eiger:mc': 250, - 'pilatus:mc': 250, + 'pilatus:mc': 250 } return reference_meminfo[self.current_partition.fullname] diff --git a/cscs-checks/tools/io/cdo.py b/cscs-checks/tools/io/cdo.py index 2eae60881d..e848eff5ff 100644 --- a/cscs-checks/tools/io/cdo.py +++ b/cscs-checks/tools/io/cdo.py @@ -33,14 +33,18 @@ def __init__(self): self.sourcesdir = os.path.join(self.current_system.resourcesdir, 'CDO-NCO') self.valid_systems = ['daint:gpu', 'daint:mc', 'dom:gpu', - 'dom:mc', 'arolla:pn', 'tsa:pn', 'eiger:mc'] + 'dom:mc', 'arolla:pn', 'tsa:pn', + 'eiger:mc', 'pilatus:mc'] if self.current_system.name in ['arolla', 'tsa']: self.exclusive_access = True self.valid_prog_environs = ['PrgEnv-gnu', 'PrgEnv-gnu-nompi'] self.modules = ['cdo', 'netcdf-fortran'] - else: + elif self.current_system.name in ['eiger', 'pilatus']: + self.valid_prog_environs = ['cpeGNU'] self.modules = ['CDO'] + else: self.valid_prog_environs = ['builtin'] + self.modules = ['CDO'] self.maintainers = ['SO', 'CB'] self.tags = {'production', 'mch', 'external-resources'} diff --git a/cscs-checks/tools/io/nco.py b/cscs-checks/tools/io/nco.py index c0b6cb0d4a..b6a3996fff 100644 --- a/cscs-checks/tools/io/nco.py +++ b/cscs-checks/tools/io/nco.py @@ -27,15 +27,19 @@ def __init__(self): self.sourcesdir = os.path.join(self.current_system.resourcesdir, 'CDO-NCO') self.valid_systems = ['daint:gpu', 'daint:mc', 'dom:gpu', - 'dom:mc', 'arolla:pn', 'tsa:pn', 'eiger:mc'] + 'dom:mc', 'arolla:pn', 'tsa:pn', + 'eiger:mc', 'pilatus:mc'] if self.current_system.name in ['arolla', 'tsa']: self.exclusive_access = True self.valid_prog_environs = ['PrgEnv-gnu-nompi', 'PrgEnv-gnu-nompi-nocuda'] self.modules = ['nco'] - else: + elif self.current_system.name in ['eiger', 'pilatus']: + self.valid_prog_environs = ['cpeGNU'] self.modules = ['NCO'] + else: self.valid_prog_environs = ['builtin'] + self.modules = ['NCO'] self.maintainers = ['SO', 'CB'] self.tags = {'production', 'mch', 'external-resources'} diff --git a/cscs-checks/tools/profiling_and_debugging/notool.py b/cscs-checks/tools/profiling_and_debugging/notool.py index 8bcbfd34e6..349b106c27 100644 --- a/cscs-checks/tools/profiling_and_debugging/notool.py +++ b/cscs-checks/tools/profiling_and_debugging/notool.py @@ -18,7 +18,7 @@ def __init__(self): self.descr = f'Jacobi (without tool) {self.lang} check' self.name = f'{type(self).__name__}_{self.lang.replace("+", "p")}' self.valid_systems = ['daint:gpu', 'daint:mc', 'dom:gpu', 'dom:mc', - 'eiger:mc'] + 'eiger:mc', 'pilatus:mc'] self.valid_prog_environs = [ 'PrgEnv-aocc', 'PrgEnv-cray', @@ -27,12 +27,12 @@ def __init__(self): 'PrgEnv-pgi', ] self.prgenv_flags = { + 'PrgEnv-aocc': ['-O2', '-g', '-fopenmp'], 'PrgEnv-cray': ['-O2', '-g', '-homp' if self.lang == 'F90' else '-fopenmp'], 'PrgEnv-gnu': ['-O2', '-g', '-fopenmp'], 'PrgEnv-intel': ['-O2', '-g', '-qopenmp'], - 'PrgEnv-pgi': ['-O2', '-g', '-mp'], - 'PrgEnv-aocc': ['-O2', '-g', '-fopenmp'], + 'PrgEnv-pgi': ['-O2', '-g', '-mp'] } self.sourcesdir = os.path.join('src', self.lang) self.build_system = 'Make' @@ -61,7 +61,7 @@ def __init__(self): rf' available at {url}' ) self.postrun_cmds += [f'echo "{readme_str}"'] - if self.current_system.name in {'dom', 'daint', 'eiger'}: + if self.current_system.name in {'dom', 'daint', 'eiger', 'pilatus'}: # get general info about the environment: self.prerun_cmds += ['module list'] self.perf_patterns = { @@ -100,7 +100,7 @@ def set_cuda_cdt(self): @rfm.run_before('compile') def alps_fix_aocc(self): - if self.current_partition.fullname == 'eiger:mc': + if self.current_partition.fullname in ['eiger:mc', 'pilatus:mc']: self.prebuild_cmds += ['module rm cray-libsci'] @rfm.run_before('sanity') @@ -115,14 +115,14 @@ def set_sanity(self): # OpenMP support varies between compilers: self.openmp_versions = { - 'PrgEnv-gnu': {'C++': 201511, 'F90': 201511}, - 'PrgEnv-pgi': {'C++': 201307, 'F90': 201307}, - 'PrgEnv-intel': {'C++': 201611, 'F90': 201611}, - 'PrgEnv-aocc': {'C++': 201107, 'F90': 201307}, + 'PrgEnv-aocc': {'C++': 201511, 'F90': 201307}, 'PrgEnv-cray': { 'C++': 201511 if cce_version == 10 else 201811, 'F90': 201511, }, + 'PrgEnv-gnu': {'C++': 201511, 'F90': 201511}, + 'PrgEnv-intel': {'C++': 201611, 'F90': 201611}, + 'PrgEnv-pgi': {'C++': 201307, 'F90': 201307} } found_version = sn.extractsingle(r'OpenMP-\s*(\d+)', self.stdout, 1, int)