From 11b8ec5697c9bdb7151ebf30757095948d528538 Mon Sep 17 00:00:00 2001 From: Samuel Moors Date: Sun, 22 Dec 2024 18:51:25 +0100 Subject: [PATCH 01/11] use shared filesystem for CI --- CI/run_reframe.sh | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/CI/run_reframe.sh b/CI/run_reframe.sh index 34f9a20f..2e260708 100755 --- a/CI/run_reframe.sh +++ b/CI/run_reframe.sh @@ -1,8 +1,11 @@ #!/bin/bash # Author: Caspar van Leeuwen # Description: This script can be used to do regular runs of the ReFrame test suite, e.g. from a cronjob. -# Setup instructions: make sure you have your github access key configured in your .ssh/config -# i.e. configure an entry with HostName github.com and IdentityFile pointing to the ssh key registered with Github +# Setup instructions: +# 1) make sure you have your github access key configured in your .ssh/config +# i.e. configure an entry with HostName github.com and IdentityFile pointing to the ssh key registered with Github +# 2) set environment variable EESSI_CI_TEMPROOT, a path in a shared filesystem in which the temporary directory will be created +# if $EESSI_CI_TEMPROOT is not set, $HOME will be used. # Print on which host this CI is running echo "Running CI on host $(hostname)" @@ -27,7 +30,7 @@ fi # Create temporary directory if [ -z "${TEMPDIR}" ]; then - TEMPDIR=$(mktemp --directory --tmpdir=/tmp -t rfm.XXXXXXXXXX) + TEMPDIR=$(mktemp --directory --tmpdir=${EESSI_CI_TEMPROOT:-HOME} -t rfm.XXXXXXXXXX) fi # Set the CI configuration for this system From e5d6852299c5c2ae9984b6bc11406e6765d6d842 Mon Sep 17 00:00:00 2001 From: Samuel Moors Date: Sun, 22 Dec 2024 18:52:18 +0100 Subject: [PATCH 02/11] require setting readonly_files --- eessi/testsuite/common_config.py | 4 ++-- eessi/testsuite/eessi_mixin.py | 8 ++++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/eessi/testsuite/common_config.py b/eessi/testsuite/common_config.py index e3298506..0ddd3796 100644 --- a/eessi/testsuite/common_config.py +++ b/eessi/testsuite/common_config.py @@ -1,6 +1,6 @@ import os -import reframe.core.logging as rlog +import reframe.core.logging as rflog perflog_format = '|'.join([ '%(check_job_completion_time)s', @@ -97,7 +97,7 @@ def common_eessi_init(eessi_version=None): eessi_cvmfs_repo = os.getenv('EESSI_CVMFS_REPO', None) if eessi_cvmfs_repo is None: - rlog.getlogger().warning('\n'.join([ + rflog.getlogger().warning(' '.join([ "Environment variable 'EESSI_CVMFS_REPO' is not defined.", "If you do not intend to use the EESSI software stack, this is perfectly fine.", "To use EESSI, initialize the EESSI environment before running the test suite.", diff --git a/eessi/testsuite/eessi_mixin.py b/eessi/testsuite/eessi_mixin.py index d03d65e2..1de3ef6d 100644 --- a/eessi/testsuite/eessi_mixin.py +++ b/eessi/testsuite/eessi_mixin.py @@ -64,6 +64,14 @@ def __init_subclass__(cls, **kwargs): cls.valid_systems = ['*'] if not cls.time_limit: cls.time_limit = '1h' + if not cls.readonly_files: + msg = ' '.join([ + "Built-in attribute `readonly_files` is empty. To avoid excessive duplication, it's highly recommended", + "to add all files and/or dirs in `sourcesdir` that are needed but not modified during the test,", + "thus can be symlinked into the stage dir. If you are sure there are no such files,", + "set `readonly_files = ['']`.", + ]) + raise ReframeFatalError(msg) # Helper function to validate if an attribute is present it item_dict. # If not, print it's current name, value, and the valid_values From f3d08409f9d4c726be398322dff8b962fc3875b4 Mon Sep 17 00:00:00 2001 From: Samuel Moors Date: Sun, 22 Dec 2024 18:55:24 +0100 Subject: [PATCH 03/11] use readonly files for cp2k --- .../cp2k/{cp2k_staging/src => }/README.md | 2 +- eessi/testsuite/tests/apps/cp2k/cp2k.py | 8 +++---- .../cp2k/cp2k_staging/cp2k_stage_input.py | 24 ------------------- .../{cp2k_staging => }/src/QS/H2O-128.inp | 0 .../cp2k/{cp2k_staging => }/src/QS/H2O-32.inp | 0 .../{cp2k_staging => }/src/QS/H2O-512.inp | 0 eessi/testsuite/tests/apps/gromacs.py | 1 + 7 files changed, 5 insertions(+), 30 deletions(-) rename eessi/testsuite/tests/apps/cp2k/{cp2k_staging/src => }/README.md (92%) delete mode 100644 eessi/testsuite/tests/apps/cp2k/cp2k_staging/cp2k_stage_input.py rename eessi/testsuite/tests/apps/cp2k/{cp2k_staging => }/src/QS/H2O-128.inp (100%) rename eessi/testsuite/tests/apps/cp2k/{cp2k_staging => }/src/QS/H2O-32.inp (100%) rename eessi/testsuite/tests/apps/cp2k/{cp2k_staging => }/src/QS/H2O-512.inp (100%) diff --git a/eessi/testsuite/tests/apps/cp2k/cp2k_staging/src/README.md b/eessi/testsuite/tests/apps/cp2k/README.md similarity index 92% rename from eessi/testsuite/tests/apps/cp2k/cp2k_staging/src/README.md rename to eessi/testsuite/tests/apps/cp2k/README.md index b16cf2a9..ba6ff2b0 100644 --- a/eessi/testsuite/tests/apps/cp2k/cp2k_staging/src/README.md +++ b/eessi/testsuite/tests/apps/cp2k/README.md @@ -1,4 +1,4 @@ -# Input files for the CP2K test +# Input files for the CP2K test in src/QS The following input files have been copied from the v2024.1 sources under benchmarks/QS, but with `&SCF` option `IGNORE_CONVERGENCE_FAILURE` commented out as this option is only supported in versions >= 2023.1 diff --git a/eessi/testsuite/tests/apps/cp2k/cp2k.py b/eessi/testsuite/tests/apps/cp2k/cp2k.py index f45525ec..ddef4232 100644 --- a/eessi/testsuite/tests/apps/cp2k/cp2k.py +++ b/eessi/testsuite/tests/apps/cp2k/cp2k.py @@ -1,18 +1,15 @@ import reframe as rfm -from reframe.core.builtins import parameter, run_after, performance_function, sanity_function, fixture +from reframe.core.builtins import parameter, run_after, performance_function, sanity_function import reframe.utility.sanity as sn from eessi.testsuite.constants import SCALES, COMPUTE_UNIT, DEVICE_TYPES, CPU from eessi.testsuite.eessi_mixin import EESSI_Mixin from eessi.testsuite.utils import find_modules -from eessi.testsuite.tests.apps.cp2k.cp2k_staging.cp2k_stage_input import EESSI_CP2K_stage_input @rfm.simple_test class EESSI_CP2K(rfm.RunOnlyRegressionTest, EESSI_Mixin): - stage_files = fixture(EESSI_CP2K_stage_input, scope='session') - benchmark_info = parameter([ # (bench_name, energy_ref, energy_tol) ('QS/H2O-32', -550.5055, 1e-4), @@ -28,6 +25,7 @@ class EESSI_CP2K(rfm.RunOnlyRegressionTest, EESSI_Mixin): device_type = DEVICE_TYPES[CPU] compute_unit = COMPUTE_UNIT[CPU] bench_name_ci = 'QS/H2O-32' # set CI on smallest benchmark + readonly_files = ['QS'] def required_mem_per_node(self): mems = { @@ -45,7 +43,7 @@ def set_bench_name(self): @run_after('setup') def prepare_test(self): - self.executable_opts += ['-i', f'{self.stage_files.stagedir}/{self.bench_name}.inp'] + self.executable_opts += ['-i', f'{self.bench_name}.inp'] @sanity_function def assert_energy(self): diff --git a/eessi/testsuite/tests/apps/cp2k/cp2k_staging/cp2k_stage_input.py b/eessi/testsuite/tests/apps/cp2k/cp2k_staging/cp2k_stage_input.py deleted file mode 100644 index 73bd4f12..00000000 --- a/eessi/testsuite/tests/apps/cp2k/cp2k_staging/cp2k_stage_input.py +++ /dev/null @@ -1,24 +0,0 @@ -import reframe as rfm -from reframe.utility import sanity as sn - - -@rfm.simple_test -class EESSI_CP2K_stage_input(rfm.RunOnlyRegressionTest): - '''Stage input files for CP2K''' - - valid_systems = ['*'] - valid_prog_environs = ['*'] - executable = "true" - local = True - - # Check that all files have been staged correctly - input_file_list = [ - 'QS/H2O-32.inp', - 'QS/H2O-128.inp', - 'QS/H2O-512.inp', - ] - sn_list = [sn.assert_found('.*', input_file) for input_file in input_file_list] - sanity_patterns = sn.all([ - sn.assert_found('.*', input_file, f"input file '{input_file}' seems to be missing") - for input_file in input_file_list - ]) diff --git a/eessi/testsuite/tests/apps/cp2k/cp2k_staging/src/QS/H2O-128.inp b/eessi/testsuite/tests/apps/cp2k/src/QS/H2O-128.inp similarity index 100% rename from eessi/testsuite/tests/apps/cp2k/cp2k_staging/src/QS/H2O-128.inp rename to eessi/testsuite/tests/apps/cp2k/src/QS/H2O-128.inp diff --git a/eessi/testsuite/tests/apps/cp2k/cp2k_staging/src/QS/H2O-32.inp b/eessi/testsuite/tests/apps/cp2k/src/QS/H2O-32.inp similarity index 100% rename from eessi/testsuite/tests/apps/cp2k/cp2k_staging/src/QS/H2O-32.inp rename to eessi/testsuite/tests/apps/cp2k/src/QS/H2O-32.inp diff --git a/eessi/testsuite/tests/apps/cp2k/cp2k_staging/src/QS/H2O-512.inp b/eessi/testsuite/tests/apps/cp2k/src/QS/H2O-512.inp similarity index 100% rename from eessi/testsuite/tests/apps/cp2k/cp2k_staging/src/QS/H2O-512.inp rename to eessi/testsuite/tests/apps/cp2k/src/QS/H2O-512.inp diff --git a/eessi/testsuite/tests/apps/gromacs.py b/eessi/testsuite/tests/apps/gromacs.py index e2f10d63..7b2244cd 100644 --- a/eessi/testsuite/tests/apps/gromacs.py +++ b/eessi/testsuite/tests/apps/gromacs.py @@ -52,6 +52,7 @@ class EESSI_GROMACS(EESSI_GROMACS_base, EESSI_Mixin): time_limit = '30m' module_name = parameter(find_modules('GROMACS')) bench_name_ci = 'HECBioSim/Crambin' + readonly_files = [''] def required_mem_per_node(self): return self.num_tasks_per_node * 1024 From 1e1ec0564f0eca8f49e5c326a1799190c0981c4f Mon Sep 17 00:00:00 2001 From: Samuel Moors Date: Sun, 22 Dec 2024 21:08:51 +0100 Subject: [PATCH 04/11] use readonly files for pytorch --- eessi/testsuite/tests/apps/PyTorch/PyTorch_torchvision.py | 1 + 1 file changed, 1 insertion(+) diff --git a/eessi/testsuite/tests/apps/PyTorch/PyTorch_torchvision.py b/eessi/testsuite/tests/apps/PyTorch/PyTorch_torchvision.py index 13171143..ca6242a8 100644 --- a/eessi/testsuite/tests/apps/PyTorch/PyTorch_torchvision.py +++ b/eessi/testsuite/tests/apps/PyTorch/PyTorch_torchvision.py @@ -26,6 +26,7 @@ class EESSI_PyTorch_torchvision(rfm.RunOnlyRegressionTest): valid_systems = ['*'] time_limit = '30m' + readonly_files = ['get_free_socket.py', 'pytorch_synthetic_benchmark.py'] @run_after('init') def prepare_test(self): From 660adea9f04e1d66bd0a120d4fc9e59514ebdee0 Mon Sep 17 00:00:00 2001 From: Samuel Moors Date: Sun, 22 Dec 2024 21:58:54 +0100 Subject: [PATCH 05/11] use readonly files for espresso --- eessi/testsuite/tests/apps/QuantumESPRESSO.py | 1 + eessi/testsuite/tests/apps/espresso/espresso.py | 4 ++++ eessi/testsuite/tests/apps/espresso/src/__init__.py | 0 eessi/testsuite/tests/apps/espresso/src/{ => lj}/lj.py | 0 eessi/testsuite/tests/apps/espresso/src/{ => p3m}/madelung.py | 0 5 files changed, 5 insertions(+) delete mode 100644 eessi/testsuite/tests/apps/espresso/src/__init__.py rename eessi/testsuite/tests/apps/espresso/src/{ => lj}/lj.py (100%) rename eessi/testsuite/tests/apps/espresso/src/{ => p3m}/madelung.py (100%) diff --git a/eessi/testsuite/tests/apps/QuantumESPRESSO.py b/eessi/testsuite/tests/apps/QuantumESPRESSO.py index 288354b2..8a67e886 100644 --- a/eessi/testsuite/tests/apps/QuantumESPRESSO.py +++ b/eessi/testsuite/tests/apps/QuantumESPRESSO.py @@ -49,6 +49,7 @@ class EESSI_QuantumESPRESSO_PW(QEspressoPWCheck): # For now, QE is being build for CPU targets only # compute_device = parameter([DEVICE_TYPES[CPU], DEVICE_TYPES[GPU]]) compute_device = parameter([DEVICE_TYPES[CPU], ]) + readonly_files = [''] @run_after('init') def run_after_init(self): diff --git a/eessi/testsuite/tests/apps/espresso/espresso.py b/eessi/testsuite/tests/apps/espresso/espresso.py index ade51bc0..f19c8b7c 100644 --- a/eessi/testsuite/tests/apps/espresso/espresso.py +++ b/eessi/testsuite/tests/apps/espresso/espresso.py @@ -110,6 +110,8 @@ class EESSI_ESPRESSO_P3M_IONIC_CRYSTALS(EESSI_ESPRESSO): time_limit = '300m' executable = 'python3 madelung.py' + sourcesdir = 'src/p3m' + readonly_files = ['madelung.py'] default_weak_scaling_system_size = 6 @@ -161,6 +163,8 @@ class EESSI_ESPRESSO_LJ_PARTICLES(EESSI_ESPRESSO): time_limit = '300m' executable = 'python3 lj.py' + sourcesdir = 'src/lj' + readonly_files = ['lj.py'] @run_after('init') def set_tag_ci(self): diff --git a/eessi/testsuite/tests/apps/espresso/src/__init__.py b/eessi/testsuite/tests/apps/espresso/src/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/eessi/testsuite/tests/apps/espresso/src/lj.py b/eessi/testsuite/tests/apps/espresso/src/lj/lj.py similarity index 100% rename from eessi/testsuite/tests/apps/espresso/src/lj.py rename to eessi/testsuite/tests/apps/espresso/src/lj/lj.py diff --git a/eessi/testsuite/tests/apps/espresso/src/madelung.py b/eessi/testsuite/tests/apps/espresso/src/p3m/madelung.py similarity index 100% rename from eessi/testsuite/tests/apps/espresso/src/madelung.py rename to eessi/testsuite/tests/apps/espresso/src/p3m/madelung.py From 52de27c0e4d7279983524750fb8b260844e95707 Mon Sep 17 00:00:00 2001 From: Samuel Moors Date: Mon, 23 Dec 2024 09:56:27 +0100 Subject: [PATCH 06/11] use readonly files for lammps --- eessi/testsuite/tests/apps/lammps/lammps.py | 29 +++++++++++-------- .../lammps_staging/lammps_stage_input.py | 15 ---------- .../{lammps_staging => }/src/rhodo/data.rhodo | 0 3 files changed, 17 insertions(+), 27 deletions(-) delete mode 100644 eessi/testsuite/tests/apps/lammps/lammps_staging/lammps_stage_input.py rename eessi/testsuite/tests/apps/lammps/{lammps_staging => }/src/rhodo/data.rhodo (100%) diff --git a/eessi/testsuite/tests/apps/lammps/lammps.py b/eessi/testsuite/tests/apps/lammps/lammps.py index 023a2fa1..b00284a4 100644 --- a/eessi/testsuite/tests/apps/lammps/lammps.py +++ b/eessi/testsuite/tests/apps/lammps/lammps.py @@ -10,10 +10,11 @@ from eessi.testsuite.constants import * # noqa from eessi.testsuite.eessi_mixin import EESSI_Mixin -from eessi.testsuite.tests.apps.lammps.lammps_staging.lammps_stage_input import EESSI_LAMMPS_stage_input +# from eessi.testsuite.tests.apps.lammps.lammps_staging.lammps_stage_input import EESSI_LAMMPS_stage_input -class EESSI_LAMMPS_base(rfm.RunOnlyRegressionTest, EESSI_Mixin): +# class EESSI_LAMMPS_base(rfm.RunOnlyRegressionTest, EESSI_Mixin): +class EESSI_LAMMPS_base(rfm.RunOnlyRegressionTest): time_limit = '30m' device_type = parameter([DEVICE_TYPES[CPU], DEVICE_TYPES[GPU]]) @@ -64,10 +65,12 @@ def set_compute_unit(self): @rfm.simple_test -class EESSI_LAMMPS_lj(EESSI_LAMMPS_base): +# class EESSI_LAMMPS_lj(EESSI_LAMMPS_base): +class EESSI_LAMMPS_lj(EESSI_LAMMPS_base, EESSI_Mixin): tags = {TAGS['CI']} sourcesdir = 'src/lj' + readonly_files = ['in.lj'] executable = 'lmp -in in.lj' @deferrable @@ -125,19 +128,21 @@ def set_executable_opts(self): @rfm.simple_test -class EESSI_LAMMPS_rhodo(EESSI_LAMMPS_base): +# class EESSI_LAMMPS_rhodo(EESSI_LAMMPS_base): +class EESSI_LAMMPS_rhodo(EESSI_LAMMPS_base, EESSI_Mixin): sourcesdir = 'src/rhodo' executable = 'lmp -in in.rhodo' + readonly_files = ['data.rhodo', 'in.rhodo'] - stage_input = fixture(EESSI_LAMMPS_stage_input, scope='session') + # stage_input = fixture(EESSI_LAMMPS_stage_input, scope='session') - @run_after('setup') - def symlink_lammps_data(self): - '''Create a symlink to the data.rhodo file staged by the EESSI_LAMMPS_stage_input fixture. - Lammps needs this in the current working directory''' - self.prerun_cmds = [ - f'ln -s {self.stage_input.stagedir}/rhodo/data.rhodo data.rhodo' - ] + # @run_after('setup') + # def symlink_lammps_data(self): + # '''Create a symlink to the data.rhodo file staged by the EESSI_LAMMPS_stage_input fixture. + # Lammps needs this in the current working directory''' + # self.prerun_cmds = [ + # f'ln -s {self.stage_input.stagedir}/rhodo/data.rhodo data.rhodo' + # ] @deferrable def check_number_neighbors(self): diff --git a/eessi/testsuite/tests/apps/lammps/lammps_staging/lammps_stage_input.py b/eessi/testsuite/tests/apps/lammps/lammps_staging/lammps_stage_input.py deleted file mode 100644 index 783b7bda..00000000 --- a/eessi/testsuite/tests/apps/lammps/lammps_staging/lammps_stage_input.py +++ /dev/null @@ -1,15 +0,0 @@ -import reframe as rfm -from reframe.utility import sanity as sn - - -@rfm.simple_test -class EESSI_LAMMPS_stage_input(rfm.RunOnlyRegressionTest): - '''Stage input files for LAMMPS''' - - valid_systems = ['*'] - valid_prog_environs = ['*'] - executable = "true" - local = True - - # Check that all files have been staged correctly - sanity_patterns = sn.assert_found('.*', 'rhodo/data.rhodo', "input file 'data.rhodo' seems to be missing") diff --git a/eessi/testsuite/tests/apps/lammps/lammps_staging/src/rhodo/data.rhodo b/eessi/testsuite/tests/apps/lammps/src/rhodo/data.rhodo similarity index 100% rename from eessi/testsuite/tests/apps/lammps/lammps_staging/src/rhodo/data.rhodo rename to eessi/testsuite/tests/apps/lammps/src/rhodo/data.rhodo From 063ec75521bb2f40284d7bfe2c594befa2a0c259 Mon Sep 17 00:00:00 2001 From: Samuel Moors Date: Mon, 23 Dec 2024 10:12:51 +0100 Subject: [PATCH 07/11] use readonly files for tensorflow --- eessi/testsuite/tests/apps/MetalWalls.py | 2 ++ eessi/testsuite/tests/apps/gromacs.py | 1 + eessi/testsuite/tests/apps/osu.py | 1 + eessi/testsuite/tests/apps/tensorflow/tensorflow.py | 1 + 4 files changed, 5 insertions(+) diff --git a/eessi/testsuite/tests/apps/MetalWalls.py b/eessi/testsuite/tests/apps/MetalWalls.py index cc4e9036..1d0fdfc9 100644 --- a/eessi/testsuite/tests/apps/MetalWalls.py +++ b/eessi/testsuite/tests/apps/MetalWalls.py @@ -49,6 +49,8 @@ class EESSI_MetalWalls_MW(MetalWallsCheck): valid_systems = ['*'] valid_prog_environs = ['default'] time_limit = '60m' + # input files are downloaded + readonly_files = [''] module_name = parameter(find_modules('MetalWalls')) # For now, MetalWalls is being build for CPU targets only diff --git a/eessi/testsuite/tests/apps/gromacs.py b/eessi/testsuite/tests/apps/gromacs.py index 7b2244cd..5617651b 100644 --- a/eessi/testsuite/tests/apps/gromacs.py +++ b/eessi/testsuite/tests/apps/gromacs.py @@ -52,6 +52,7 @@ class EESSI_GROMACS(EESSI_GROMACS_base, EESSI_Mixin): time_limit = '30m' module_name = parameter(find_modules('GROMACS')) bench_name_ci = 'HECBioSim/Crambin' + # input files are downloaded readonly_files = [''] def required_mem_per_node(self): diff --git a/eessi/testsuite/tests/apps/osu.py b/eessi/testsuite/tests/apps/osu.py index 83bbd0f4..b2fc8cd6 100644 --- a/eessi/testsuite/tests/apps/osu.py +++ b/eessi/testsuite/tests/apps/osu.py @@ -52,6 +52,7 @@ class EESSI_OSU_Micro_Benchmarks_pt2pt(osu_benchmark): device_type = parameter([DEVICE_TYPES[CPU], DEVICE_TYPES[GPU]]) # unset num_tasks_per_node from the hpctestlib. num_tasks_per_node = None + readonly_files = [''] # Set num_warmup_iters to 5 to reduce execution time, especially on slower interconnects num_warmup_iters = 5 diff --git a/eessi/testsuite/tests/apps/tensorflow/tensorflow.py b/eessi/testsuite/tests/apps/tensorflow/tensorflow.py index f37194f8..613f93ce 100644 --- a/eessi/testsuite/tests/apps/tensorflow/tensorflow.py +++ b/eessi/testsuite/tests/apps/tensorflow/tensorflow.py @@ -26,6 +26,7 @@ class EESSI_TensorFlow(rfm.RunOnlyRegressionTest): device_type = parameter(['cpu', 'gpu']) executable = 'python tf_test.py' + readonly_files = ['mnist_setup.py', 'tf_test.py'] time_limit = '30m' From fcc61020ecb8c776c9ce8413dccc08c91f027485 Mon Sep 17 00:00:00 2001 From: Samuel Moors Date: Mon, 23 Dec 2024 10:13:52 +0100 Subject: [PATCH 08/11] remove __init__.py from sources dirs --- eessi/testsuite/tests/apps/PyTorch/src/__init__.py | 0 eessi/testsuite/tests/apps/lammps/src/__init__.py | 0 eessi/testsuite/tests/apps/tensorflow/src/__init__.py | 0 3 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 eessi/testsuite/tests/apps/PyTorch/src/__init__.py delete mode 100644 eessi/testsuite/tests/apps/lammps/src/__init__.py delete mode 100644 eessi/testsuite/tests/apps/tensorflow/src/__init__.py diff --git a/eessi/testsuite/tests/apps/PyTorch/src/__init__.py b/eessi/testsuite/tests/apps/PyTorch/src/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/eessi/testsuite/tests/apps/lammps/src/__init__.py b/eessi/testsuite/tests/apps/lammps/src/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/eessi/testsuite/tests/apps/tensorflow/src/__init__.py b/eessi/testsuite/tests/apps/tensorflow/src/__init__.py deleted file mode 100644 index e69de29b..00000000 From 3a822f3f606853bb9255d5d5337d93c5fff43a12 Mon Sep 17 00:00:00 2001 From: Samuel Moors Date: Mon, 23 Dec 2024 10:25:33 +0100 Subject: [PATCH 09/11] cleanup lammps --- eessi/testsuite/tests/apps/lammps/lammps.py | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/eessi/testsuite/tests/apps/lammps/lammps.py b/eessi/testsuite/tests/apps/lammps/lammps.py index b00284a4..e4c4044a 100644 --- a/eessi/testsuite/tests/apps/lammps/lammps.py +++ b/eessi/testsuite/tests/apps/lammps/lammps.py @@ -10,10 +10,7 @@ from eessi.testsuite.constants import * # noqa from eessi.testsuite.eessi_mixin import EESSI_Mixin -# from eessi.testsuite.tests.apps.lammps.lammps_staging.lammps_stage_input import EESSI_LAMMPS_stage_input - -# class EESSI_LAMMPS_base(rfm.RunOnlyRegressionTest, EESSI_Mixin): class EESSI_LAMMPS_base(rfm.RunOnlyRegressionTest): time_limit = '30m' device_type = parameter([DEVICE_TYPES[CPU], DEVICE_TYPES[GPU]]) @@ -65,7 +62,6 @@ def set_compute_unit(self): @rfm.simple_test -# class EESSI_LAMMPS_lj(EESSI_LAMMPS_base): class EESSI_LAMMPS_lj(EESSI_LAMMPS_base, EESSI_Mixin): tags = {TAGS['CI']} @@ -128,22 +124,11 @@ def set_executable_opts(self): @rfm.simple_test -# class EESSI_LAMMPS_rhodo(EESSI_LAMMPS_base): class EESSI_LAMMPS_rhodo(EESSI_LAMMPS_base, EESSI_Mixin): sourcesdir = 'src/rhodo' executable = 'lmp -in in.rhodo' readonly_files = ['data.rhodo', 'in.rhodo'] - # stage_input = fixture(EESSI_LAMMPS_stage_input, scope='session') - - # @run_after('setup') - # def symlink_lammps_data(self): - # '''Create a symlink to the data.rhodo file staged by the EESSI_LAMMPS_stage_input fixture. - # Lammps needs this in the current working directory''' - # self.prerun_cmds = [ - # f'ln -s {self.stage_input.stagedir}/rhodo/data.rhodo data.rhodo' - # ] - @deferrable def check_number_neighbors(self): '''Assert that the test calulated the right number of neighbours''' From 6c961e72baa14e6f61033cdae32f6899561d44ec Mon Sep 17 00:00:00 2001 From: Samuel Moors Date: Thu, 26 Dec 2024 17:22:55 +0100 Subject: [PATCH 10/11] add readonly_files to the tutorial --- tutorial/mpi4py/mpi4py_portable_mixin.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tutorial/mpi4py/mpi4py_portable_mixin.py b/tutorial/mpi4py/mpi4py_portable_mixin.py index 854ed643..43034cd3 100644 --- a/tutorial/mpi4py/mpi4py_portable_mixin.py +++ b/tutorial/mpi4py/mpi4py_portable_mixin.py @@ -66,6 +66,9 @@ class EESSI_MPI4PY(rfm.RunOnlyRegressionTest, EESSI_Mixin): def required_mem_per_node(self): return self.num_tasks_per_node * 100 + 250 + # Define the files and/or dirs inside sourcesdir (default=src) that should be symlinked into the stage dir + readonly_files = ['mpi4py_reduce.py'] + # Now, we check if the pattern 'Sum of all ranks: X' with X the correct sum for the amount of ranks is found # in the standard output: # https://reframe-hpc.readthedocs.io/en/stable/regression_test_api.html#reframe.core.builtins.sanity_function From eb18942f2bf42ecd8b785f2c6f4993a592e0b96f Mon Sep 17 00:00:00 2001 From: Samuel Moors Date: Thu, 26 Dec 2024 17:41:36 +0100 Subject: [PATCH 11/11] slight rewording --- eessi/testsuite/eessi_mixin.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/eessi/testsuite/eessi_mixin.py b/eessi/testsuite/eessi_mixin.py index 1de3ef6d..8bbaa0c1 100644 --- a/eessi/testsuite/eessi_mixin.py +++ b/eessi/testsuite/eessi_mixin.py @@ -66,9 +66,9 @@ def __init_subclass__(cls, **kwargs): cls.time_limit = '1h' if not cls.readonly_files: msg = ' '.join([ - "Built-in attribute `readonly_files` is empty. To avoid excessive duplication, it's highly recommended", + "Built-in attribute `readonly_files` is empty. To avoid excessive copying, it's highly recommended", "to add all files and/or dirs in `sourcesdir` that are needed but not modified during the test,", - "thus can be symlinked into the stage dir. If you are sure there are no such files,", + "thus can be symlinked into the stage dirs. If you are sure there are no such files,", "set `readonly_files = ['']`.", ]) raise ReframeFatalError(msg)