From 89b0225744ae6516b5ea53ff313bb8a3be68e4b1 Mon Sep 17 00:00:00 2001 From: Vasileios Karakasis Date: Wed, 13 Nov 2024 00:53:59 +0100 Subject: [PATCH 1/2] Make directory prefix for topology files configurable --- docs/config_reference.rst | 18 +++++++++++++++++- reframe/frontend/autodetect.py | 2 +- reframe/schemas/config.json | 1 + 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/docs/config_reference.rst b/docs/config_reference.rst index 04d6959d6..b8573bfbb 100644 --- a/docs/config_reference.rst +++ b/docs/config_reference.rst @@ -639,12 +639,19 @@ System Partition Configuration In case of errors during auto-detection, ReFrame will simply issue a warning and continue. + .. note:: + + The directory prefix for storing topology information is configurable through the :attr:`~config.general.topology_prefix` configuration option. + .. versionadded:: 3.5.0 .. versionchanged:: 3.7.0 ReFrame is now able to detect the processor information automatically. + .. versionchanged:: 4.7 + Directory prefix for topology files is now configurable. + .. py:attribute:: systems.partitions.devices @@ -1855,6 +1862,16 @@ General Configuration +.. py:attribute:: general.topology_prefix + + :required: No + :default: ``"${HOME}/.reframe/topology"`` + + Directory prefix for storing the auto-detected processor topology. + + .. versionadded:: 4.7 + + .. py:attribute:: general.trap_job_errors :required: No @@ -1864,7 +1881,6 @@ General Configuration .. versionadded:: 3.2 - .. py:attribute:: general.keep_stage_files :required: No diff --git a/reframe/frontend/autodetect.py b/reframe/frontend/autodetect.py index e78ba24cb..45cc5a463 100644 --- a/reframe/frontend/autodetect.py +++ b/reframe/frontend/autodetect.py @@ -204,7 +204,7 @@ def _emit_custom_script(job, env, commands): def detect_topology(): rt = runtime.runtime() detect_remote_systems = rt.get_option('general/0/remote_detect') - topo_prefix = os.path.join(os.getenv('HOME'), '.reframe/topology') + topo_prefix = rt.get_option('general/0/topology_prefix') for part in rt.system.partitions: getlogger().debug(f'detecting topology info for {part.fullname}') found_procinfo = False diff --git a/reframe/schemas/config.json b/reframe/schemas/config.json index 2350ec4fb..c1684adc8 100644 --- a/reframe/schemas/config.json +++ b/reframe/schemas/config.json @@ -601,6 +601,7 @@ "general/save_log_files": false, "general/table_format": "pretty", "general/target_systems": ["*"], + "general/topology_prefix": "${HOME}/.reframe/topology", "general/timestamp_dirs": "%Y%m%dT%H%M%S%z", "general/trap_job_errors": false, "general/unload_modules": [], From 268f9da4e028fdd7daa1f0bb61711ea0a83b31d6 Mon Sep 17 00:00:00 2001 From: Vasileios Karakasis Date: Wed, 13 Nov 2024 10:34:17 +0100 Subject: [PATCH 2/2] Expand envvars in `topology_prefix` configuration option --- reframe/frontend/autodetect.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reframe/frontend/autodetect.py b/reframe/frontend/autodetect.py index 45cc5a463..6378155fb 100644 --- a/reframe/frontend/autodetect.py +++ b/reframe/frontend/autodetect.py @@ -204,7 +204,7 @@ def _emit_custom_script(job, env, commands): def detect_topology(): rt = runtime.runtime() detect_remote_systems = rt.get_option('general/0/remote_detect') - topo_prefix = rt.get_option('general/0/topology_prefix') + topo_prefix = osext.expandvars(rt.get_option('general/0/topology_prefix')) for part in rt.system.partitions: getlogger().debug(f'detecting topology info for {part.fullname}') found_procinfo = False