diff --git a/cscs-checks/apps/paraview/paraview_check.py b/cscs-checks/apps/paraview/paraview_check.py index df0b310b54..6950b0c8c9 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 == '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/libraries/boost/boost_python_check.py b/cscs-checks/libraries/boost/boost_python_check.py index d292569654..1accd30529 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 == '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 e70d01c45b..8a8e72f673 100644 --- a/cscs-checks/libraries/io/hdf5_compile_run.py +++ b/cscs-checks/libraries/io/hdf5_compile_run.py @@ -19,10 +19,16 @@ 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'] + + # PrgEnv-intel on Pilatus does not feature cray-hdf5 as of PE 21.02 + if self.current_system.name == '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'] @@ -80,4 +86,4 @@ def __init__(self, lang, linkage): self.postrun_cmds = ['h5dump h5ex_d_chunk.h5 > h5dump_out.txt'] self.maintainers = ['SO', 'RS'] - self.tags = {'production', 'craype'} + self.tags = {'production', 'craype'} \ No newline at end of file diff --git a/cscs-checks/libraries/io/netcdf_compile_run.py b/cscs-checks/libraries/io/netcdf_compile_run.py index 985f89f9e1..142a783478 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,9 @@ 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']: + self.valid_prog_environs = ['PrgEnv-aocc', 'PrgEnv-cray', + 'PrgEnv-gnu'] self.modules = ['cray-hdf5', 'cray-netcdf'] else: self.valid_prog_environs = [] @@ -68,4 +69,4 @@ def setflags(self): '-lnetcdf', '-lnetcdf_c++4', '-lnetcdff' ] else: - self.build_system.ldflags = [f'-{self.linkage}'] + self.build_system.ldflags = [f'-{self.linkage}'] \ No newline at end of file diff --git a/cscs-checks/libraries/math/scalapack_compile_run.py b/cscs-checks/libraries/math/scalapack_compile_run.py index 63f14ab2f7..b6accbdccb 100644 --- a/cscs-checks/libraries/math/scalapack_compile_run.py +++ b/cscs-checks/libraries/math/scalapack_compile_run.py @@ -15,10 +15,10 @@ def __init__(self, linkage): self.sourcesdir = os.path.join(self.current_system.resourcesdir, 'scalapack') self.valid_systems = ['daint:gpu', 'daint:mc', 'dom:mc', 'dom:gpu'] - if self.linkage == 'dynamic': - self.valid_systems.append('eiger:mc') + if linkage == 'dynamic': + self.valid_systems += ['eiger:mc', 'pilatus:mc'] - self.valid_prog_environs = ['PrgEnv-cray', 'PrgEnv-gnu', + self.valid_prog_environs = ['PrgEnv-aocc', 'PrgEnv-cray', 'PrgEnv-gnu', 'PrgEnv-intel'] self.num_tasks = 16 self.num_tasks_per_node = 8 @@ -63,4 +63,4 @@ def scalapack_sanity(number1, number2, expected_value): scalapack_sanity(4, 2, 0.4064822185450869), scalapack_sanity(4, 3, 0.2483911184660867), scalapack_sanity(4, 4, 0.1701907253504270) - ]) + ]) \ No newline at end of file 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..18e53487b5 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: @@ -104,4 +105,4 @@ def eval_sanity(self): r'%s:\s+Avg\. performance\s+:\s+(?P\S+)' r'\sGflop/s' % hostname, self.stdout, 'gflops', float) - return True + return True \ No newline at end of file diff --git a/cscs-checks/microbenchmarks/cpu/simd/vc.py b/cscs-checks/microbenchmarks/cpu/simd/vc.py index a0d1342f93..cccbc278c9 100644 --- a/cscs-checks/microbenchmarks/cpu/simd/vc.py +++ b/cscs-checks/microbenchmarks/cpu/simd/vc.py @@ -31,7 +31,11 @@ class VcSimdTest(rfm.RegressionTest): def __init__(self): self.valid_systems = ['*'] - self.valid_prog_environs = ['builtin'] + if self.current_system.name in ['eiger', 'pilatus']: + self.valid_prog_environs = ['cpeGNU'] + else: + self.valid_prog_environs = ['PrgEnv-gnu'] + self.descr = 'finitediff example' self.build_system = 'SingleSource' self.testname = 'finitediff' @@ -39,6 +43,7 @@ def __init__(self): src1 = '%s/tsc.h' % src_url src2 = '%s/finitediff/main.cpp' % src_url self.prebuild_cmds = [ + 'module list', 'wget %s %s' % (src1, src2), 'sed -ie "s-../tsc.h-./tsc.h-" main.cpp', ] @@ -77,6 +82,9 @@ def __init__(self): 'eiger:mc': { 'speedup': (1.32, -0.2, 0.2, '') }, + 'pilatus:mc': { + 'speedup': (1.32, -0.2, 0.2, '') + }, '*': { 'speedup': (1.0, None, None, '') } diff --git a/cscs-checks/microbenchmarks/cpu/strided_bandwidth/strides.py b/cscs-checks/microbenchmarks/cpu/strided_bandwidth/strides.py index 09f47d33be..e74e4089af 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') @@ -134,4 +141,4 @@ def set_exec_opts(self): self.num_cpus = self.system_num_cpus[self.current_partition.fullname] # 128-byte stride, using 1/8 of every 2nd cacheline - self.executable_opts = ['100000000', '16', '%s' % self.num_cpus] + self.executable_opts = ['100000000', '16', '%s' % self.num_cpus] \ No newline at end of file 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..2a850c9616 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'] @@ -132,4 +142,4 @@ def pgi_workaround(self): if self.current_environ.name == 'PrgEnv-pgi': self.variables = { 'CUDA_HOME': '$CUDATOOLKIT_HOME', - } + } \ No newline at end of file diff --git a/cscs-checks/microbenchmarks/mpi/osu/osu_tests.py b/cscs-checks/microbenchmarks/mpi/osu/osu_tests.py index e21e1629a9..9128db8d60 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') @@ -293,4 +299,4 @@ def __init__(self): self.build_system.ldflags = ['-L$EBROOTCUDA/lib64', '-lcudart', '-lcuda'] - self.build_system.cppflags = ['-D_ENABLE_CUDA_'] + self.build_system.cppflags = ['-D_ENABLE_CUDA_'] \ No newline at end of file diff --git a/cscs-checks/prgenv/environ_check.py b/cscs-checks/prgenv/environ_check.py index e4f9539df3..6c3e227632 100644 --- a/cscs-checks/prgenv/environ_check.py +++ b/cscs-checks/prgenv/environ_check.py @@ -13,13 +13,14 @@ 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': + if self.current_system.name in ['eiger', 'pilatus']: self.executable_opts = ['list'] prgenv_patt = r'1\) cpe-cray' else: @@ -33,11 +34,12 @@ 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': + if self.current_system.name in ['eiger', 'pilatus']: self.executable_opts = ['list'] else: self.executable_opts = ['list', '-t'] @@ -50,7 +52,7 @@ 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': + if self.current_system.name in ['eiger', 'pilatus']: module_patt = rf'1\) cpe-{self.current_environ.name[7:]}' else: module_patt = rf'^{self.current_environ.name}' diff --git a/cscs-checks/prgenv/helloworld.py b/cscs-checks/prgenv/helloworld.py index ce22af0d4d..ec73da0a56 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'], @@ -220,4 +225,4 @@ def __init__(self, lang, linkage): # num_cpus_per_task, but adding for completeness and portability self.variables = { 'OMP_NUM_THREADS': str(self.num_cpus_per_task) - } + } \ No newline at end of file diff --git a/cscs-checks/prgenv/mpi.py b/cscs-checks/prgenv/mpi.py index 0210b43228..8574cc9a83 100644 --- a/cscs-checks/prgenv/mpi.py +++ b/cscs-checks/prgenv/mpi.py @@ -36,9 +36,9 @@ class MpiInitTest(rfm.RegressionTest): def __init__(self, required_thread): 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'] self.build_system = 'SingleSource' self.sourcesdir = 'src/mpi_thread' self.sourcepath = 'mpi_init_thread.cpp' @@ -96,7 +96,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 @@ -118,4 +118,4 @@ def __init__(self): @property @sn.sanity_function def num_tasks_assigned(self): - return self.job.num_tasks + return self.job.num_tasks \ No newline at end of file diff --git a/cscs-checks/prgenv/mpi_t.py b/cscs-checks/prgenv/mpi_t.py index 4c64b3c524..9ba67043b4 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' 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 41c2fbe649..3a07262cf3 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,6 +256,6 @@ 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/nco.py b/cscs-checks/tools/io/nco.py index c0b6cb0d4a..8d0038e682 100644 --- a/cscs-checks/tools/io/nco.py +++ b/cscs-checks/tools/io/nco.py @@ -27,16 +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'] + elif self.current_system.name == 'pilatus': + self.valid_prog_environs = ['cpeGNU'] else: - self.modules = ['NCO'] 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 3b3b42f1d8..298382168d 100644 --- a/cscs-checks/tools/profiling_and_debugging/notool.py +++ b/cscs-checks/tools/profiling_and_debugging/notool.py @@ -16,7 +16,7 @@ def __init__(self, lang): self.descr = f'Jacobi (without tool) {lang} check' self.name = f'{type(self).__name__}_{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', @@ -25,12 +25,12 @@ def __init__(self, lang): 'PrgEnv-pgi', ] self.prgenv_flags = { + 'PrgEnv-aocc': ['-O2', '-g', '-fopenmp'], 'PrgEnv-cray': ['-O2', '-g', '-homp' if 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', lang) self.build_system = 'Make' @@ -60,7 +60,7 @@ def __init__(self, lang): 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 = { @@ -99,7 +99,7 @@ def dom_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') @@ -114,14 +114,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-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)