diff --git a/pyproject.toml b/pyproject.toml index 09c4d3d2..a6c96b5d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -16,6 +16,7 @@ readme = "README.md" authors = [ { name = "Christophe Prud'homme", email = "christophe.prudhomme@cemosis.fr" }, { name = "Vincent Chabannes", email = "vincent.chabannes@cemosis.fr" }, + { name = "Javier Cladellas", email = "javier.cladellas@cemosis.fr" }, ] requires-python = ">=3.7" classifiers = [ @@ -27,6 +28,7 @@ classifiers = [ "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", ] dependencies = [ diff --git a/src/feelpp/benchmarking/reframe/config/configSchemas.py b/src/feelpp/benchmarking/reframe/config/configSchemas.py index 9d71bd60..0bbf8b16 100644 --- a/src/feelpp/benchmarking/reframe/config/configSchemas.py +++ b/src/feelpp/benchmarking/reframe/config/configSchemas.py @@ -61,7 +61,7 @@ def extractProtocol(self): @field_validator("name", mode="after") @classmethod def checkImage(cls,v,info): - if info.data["protocol"] == "local": + if info.data["protocol"] == "local" and not ("{{" in v or "}}" in v) : if not os.path.exists(v): if info.context and info.context.get("dry_run", False): print(f"Dry Run: Skipping image check for {v}") diff --git a/src/feelpp/benchmarking/reframe/config/machineConfigs/discoverer.py b/src/feelpp/benchmarking/reframe/config/machineConfigs/discoverer.py index fde71cf0..a819a11e 100644 --- a/src/feelpp/benchmarking/reframe/config/machineConfigs/discoverer.py +++ b/src/feelpp/benchmarking/reframe/config/machineConfigs/discoverer.py @@ -37,16 +37,13 @@ ], 'sched_options': { 'use_nodes_option': True }, } - ], - 'env_vars':[ - ["OMP_NUM_THREADS",1] ] } ], 'environments': [ { 'name':'default', - 'modules': [], + 'modules': ["openmpi/4/gcc/latest"], 'target_systems':['discoverer:cn'] } ] diff --git a/src/feelpp/benchmarking/reframe/config/machineConfigs/gaya.py b/src/feelpp/benchmarking/reframe/config/machineConfigs/gaya.py index 006acf6d..39c312ec 100644 --- a/src/feelpp/benchmarking/reframe/config/machineConfigs/gaya.py +++ b/src/feelpp/benchmarking/reframe/config/machineConfigs/gaya.py @@ -39,9 +39,6 @@ } ], }, - ], - 'env_vars':[ - ["OMP_NUM_THREADS",1] ] } ], diff --git a/src/feelpp/benchmarking/reframe/config/machineConfigs/vega.py b/src/feelpp/benchmarking/reframe/config/machineConfigs/vega.py new file mode 100644 index 00000000..fac7c6aa --- /dev/null +++ b/src/feelpp/benchmarking/reframe/config/machineConfigs/vega.py @@ -0,0 +1,47 @@ +import socket + +hostname = socket.gethostname() +print("Hostname:", hostname) + +site_configuration = { + 'systems':[ + { + 'name': 'vega', + 'descr': 'Vega', + 'hostnames': [f'{hostname}'], + 'modules_system': 'lmod', + 'partitions': [ + { + 'name': 'cpu', + 'scheduler': 'slurm', + 'launcher': 'srun', + # 'max_jobs': 8, + 'access': [f"--partition=cpu"], + 'environs': ['default'], + 'processor': { + 'num_cpus': 128 + }, + 'devices': [ + { + 'type': 'cpu', + 'num_devices': 960 + } + ], + 'container_platforms':[ + { + 'type': 'Singularity' + } + ], + 'sched_options': { 'use_nodes_option': True }, + } + ] + } + ], + 'environments': [ + { + 'name':'default', + 'modules': ["OpenMPI/4.1.5-GCC-12.3.0"], + 'target_systems':['vega:cpu'] + } + ] +} \ No newline at end of file diff --git a/src/feelpp/benchmarking/reframe/config/machineConfigs/vega.sh b/src/feelpp/benchmarking/reframe/config/machineConfigs/vega.sh new file mode 100644 index 00000000..945f4bf6 --- /dev/null +++ b/src/feelpp/benchmarking/reframe/config/machineConfigs/vega.sh @@ -0,0 +1,14 @@ +#!/bin/bash -l + + +echo "===========================" +/ceph/hpc/bin/accountingreport.sh +echo "===========================" + +module load Python/3.10.8-GCCcore-12.2.0 +export LD_LIBRARY_PATH=/cvmfs/sling.si/modules/el7/software/Python/3.10.8-GCCcore-12.2.0/lib:$LD_LIBRARY_PATH +python3.10 -m venv .venv +echo 'export LD_LIBRARY_PATH=/cvmfs/sling.si/modules/el7/software/Python/3.10.8-GCCcore-12.2.0/lib:$LD_LIBRARY_PATH' >> .venv/bin/activate +source .venv/bin/activate +.venv/bin/python3.10 -m pip install --upgrade pip +.venv/bin/python3.10 -m pip install -r requirements.txt \ No newline at end of file diff --git a/src/feelpp/benchmarking/reframe/outputs.py b/src/feelpp/benchmarking/reframe/outputs.py index f5dee18f..7922fb43 100644 --- a/src/feelpp/benchmarking/reframe/outputs.py +++ b/src/feelpp/benchmarking/reframe/outputs.py @@ -63,7 +63,7 @@ def copyParametrizedDescriptions(self,dir_path,name): """ if self.additional_files_config and self.additional_files_config.parameterized_descriptions_filepath: - file_extension = self.additional_files_config.description_filepath.split(".")[-1] if "." in self.additional_files_config.description_filepath else None + file_extension = self.additional_files_config.parameterized_descriptions_filepath.split(".")[-1] if "." in self.additional_files_config.parameterized_descriptions_filepath else None outdir = os.path.join(dir_path,"partials") if not os.path.exists(outdir): diff --git a/src/feelpp/benchmarking/report/atomicReports/model.py b/src/feelpp/benchmarking/report/atomicReports/model.py index a9253c9a..589a941d 100644 --- a/src/feelpp/benchmarking/report/atomicReports/model.py +++ b/src/feelpp/benchmarking/report/atomicReports/model.py @@ -33,7 +33,11 @@ def buildMasterDf(self,runs): "platform":testcase["check_vars"]["platform"] } for dim, v in testcase["check_params"].items(): - tmp_dct[dim] = v + if isinstance(v,dict): + for subdim, v2 in v.items(): + tmp_dct[f"{dim}.{subdim}"] = v2 + else: + tmp_dct[dim] = v processed_data.append(tmp_dct) continue diff --git a/src/feelpp/benchmarking/scripts/hpcSystems.py b/src/feelpp/benchmarking/scripts/hpcSystems.py index 3fa8ba48..3474f625 100644 --- a/src/feelpp/benchmarking/scripts/hpcSystems.py +++ b/src/feelpp/benchmarking/scripts/hpcSystems.py @@ -48,6 +48,8 @@ def dispatch(machine_name): return HpcSystem( runner = "self-gaya", machine = "gaya", python_version = "3.10", user_name = "prudhomm", submit = "cli" ) elif machine_name == "discoverer": return HpcSystem( runner = "self-discoverer", machine = "discoverer", partition = "truePartition", python_version = "3.6", user_name = "vchabannes", submit = "cli" ) + elif machine_name == "vega": + return HpcSystem( runner= "self-vega", machine="vega", python_version = "3", user_name = "euvincentc", submit ="cli" ) else: raise ValueError(f"HPC resource {machine_name} not found...")