From 0f6bcea910f2a85c4f0a1c5368509aa359de3837 Mon Sep 17 00:00:00 2001
From: Tony Ranini <tony.ranini@atos.net>
Date: Thu, 7 Mar 2024 10:28:20 +0100
Subject: [PATCH] BDPO PMPI Wrapper 4.3.2 for stage 2023

---
 .../bdpo-pmpi-wrapper-4.3.2-gpsmpi-2022a.eb   | 46 +++++++++++
 .../bdpo-pmpi-wrapper-4.3.2-gpsmpi-2022b.eb   | 46 +++++++++++
 .../bdpo-pmpi-wrapper-4.3.2-npsmpic-2022a.eb  | 46 +++++++++++
 .../b/bdpo-pmpi-wrapper/generate_all_cards.py | 77 +++++++++++++++++++
 Golden_Repo/g/gpsmpi/gpsmpi-2022b.eb          | 19 +++++
 5 files changed, 234 insertions(+)
 create mode 100644 Golden_Repo/b/bdpo-pmpi-wrapper/bdpo-pmpi-wrapper-4.3.2-gpsmpi-2022a.eb
 create mode 100644 Golden_Repo/b/bdpo-pmpi-wrapper/bdpo-pmpi-wrapper-4.3.2-gpsmpi-2022b.eb
 create mode 100644 Golden_Repo/b/bdpo-pmpi-wrapper/bdpo-pmpi-wrapper-4.3.2-npsmpic-2022a.eb
 create mode 100755 Golden_Repo/b/bdpo-pmpi-wrapper/generate_all_cards.py
 create mode 100644 Golden_Repo/g/gpsmpi/gpsmpi-2022b.eb

diff --git a/Golden_Repo/b/bdpo-pmpi-wrapper/bdpo-pmpi-wrapper-4.3.2-gpsmpi-2022a.eb b/Golden_Repo/b/bdpo-pmpi-wrapper/bdpo-pmpi-wrapper-4.3.2-gpsmpi-2022a.eb
new file mode 100644
index 000000000..256f83853
--- /dev/null
+++ b/Golden_Repo/b/bdpo-pmpi-wrapper/bdpo-pmpi-wrapper-4.3.2-gpsmpi-2022a.eb
@@ -0,0 +1,46 @@
+
+##
+# Author:    Eviden <bds-powerefficiency@eviden.com>
+##
+easyblock = 'ConfigureMake'
+
+name = 'bdpo-pmpi-wrapper'
+version = '4.3.2'
+toolchain = {'name': 'gpsmpi', 'version': '2022a'}
+description = """This package provides the Power Efficiency Dynamic Power Optimizer PMPI Wrapper product.
+"""
+
+local_lib_name = f"bdpopmpiwrapper-{toolchain['name']}-{toolchain['version']}.so"
+
+local_env_map = [
+    f"MPICC=$EBROOTPSMPI/bin/mpicc",
+    'MPICH=1',
+    f"DPO_PMPI_MPI_FLAVOR={toolchain['name']}",
+    f"DPO_PMPI_MPI_VERSION={toolchain['version']}",
+    'INSTALL_OPT_DIR=%(installdir)s',
+    'INSTALL_LIB_DIR=""',
+]
+
+modextravars = {
+    'BDPO_PMPIWRAPPER': f"%(installdir)s/{local_lib_name}"
+}
+
+homepage = 'https://www.eviden.com'
+
+source_urls = ['file:///p/project/deepsea/wp2/sources/bdpo-pmpi-wrapper']
+sources = ['bdpo-pmpi-wrapper-%(version)s.tar.gz']
+
+checksums = ['b3eceee09afad75c628c324081a2e443b1ef13dcb57a81b3db5a1099eb02e83b']
+
+prebuildopts = ' '.join(local_env_map)
+preinstallopts = ' '.join(local_env_map)
+
+# Hacky way to disable configure step (by returning true and comment all added things)
+configure_cmd_prefix = '/bin/true # Disabling whats coming next:'
+
+sanity_check_paths = {
+    'files': [local_lib_name],
+    'dirs': [],
+}
+
+moduleclass = 'perf'
diff --git a/Golden_Repo/b/bdpo-pmpi-wrapper/bdpo-pmpi-wrapper-4.3.2-gpsmpi-2022b.eb b/Golden_Repo/b/bdpo-pmpi-wrapper/bdpo-pmpi-wrapper-4.3.2-gpsmpi-2022b.eb
new file mode 100644
index 000000000..5bd3e13d3
--- /dev/null
+++ b/Golden_Repo/b/bdpo-pmpi-wrapper/bdpo-pmpi-wrapper-4.3.2-gpsmpi-2022b.eb
@@ -0,0 +1,46 @@
+
+##
+# Author:    Eviden <bds-powerefficiency@eviden.com>
+##
+easyblock = 'ConfigureMake'
+
+name = 'bdpo-pmpi-wrapper'
+version = '4.3.2'
+toolchain = {'name': 'gpsmpi', 'version': '2022b'}
+description = """This package provides the Power Efficiency Dynamic Power Optimizer PMPI Wrapper product.
+"""
+
+local_lib_name = f"bdpopmpiwrapper-{toolchain['name']}-{toolchain['version']}.so"
+
+local_env_map = [
+    f"MPICC=$EBROOTPSMPI/bin/mpicc",
+    'MPICH=1',
+    f"DPO_PMPI_MPI_FLAVOR={toolchain['name']}",
+    f"DPO_PMPI_MPI_VERSION={toolchain['version']}",
+    'INSTALL_OPT_DIR=%(installdir)s',
+    'INSTALL_LIB_DIR=""',
+]
+
+modextravars = {
+    'BDPO_PMPIWRAPPER': f"%(installdir)s/{local_lib_name}"
+}
+
+homepage = 'https://www.eviden.com'
+
+source_urls = ['file:///p/project/deepsea/wp2/sources/bdpo-pmpi-wrapper']
+sources = ['bdpo-pmpi-wrapper-%(version)s.tar.gz']
+
+checksums = ['b3eceee09afad75c628c324081a2e443b1ef13dcb57a81b3db5a1099eb02e83b']
+
+prebuildopts = ' '.join(local_env_map)
+preinstallopts = ' '.join(local_env_map)
+
+# Hacky way to disable configure step (by returning true and comment all added things)
+configure_cmd_prefix = '/bin/true # Disabling whats coming next:'
+
+sanity_check_paths = {
+    'files': [local_lib_name],
+    'dirs': [],
+}
+
+moduleclass = 'perf'
diff --git a/Golden_Repo/b/bdpo-pmpi-wrapper/bdpo-pmpi-wrapper-4.3.2-npsmpic-2022a.eb b/Golden_Repo/b/bdpo-pmpi-wrapper/bdpo-pmpi-wrapper-4.3.2-npsmpic-2022a.eb
new file mode 100644
index 000000000..4c0765d66
--- /dev/null
+++ b/Golden_Repo/b/bdpo-pmpi-wrapper/bdpo-pmpi-wrapper-4.3.2-npsmpic-2022a.eb
@@ -0,0 +1,46 @@
+
+##
+# Author:    Eviden <bds-powerefficiency@eviden.com>
+##
+easyblock = 'ConfigureMake'
+
+name = 'bdpo-pmpi-wrapper'
+version = '4.3.2'
+toolchain = {'name': 'npsmpic', 'version': '2022a'}
+description = """This package provides the Power Efficiency Dynamic Power Optimizer PMPI Wrapper product.
+"""
+
+local_lib_name = f"bdpopmpiwrapper-{toolchain['name']}-{toolchain['version']}.so"
+
+local_env_map = [
+    f"MPICC=$EBROOTPSMPI/bin/mpicc",
+    'MPICH=1',
+    f"DPO_PMPI_MPI_FLAVOR={toolchain['name']}",
+    f"DPO_PMPI_MPI_VERSION={toolchain['version']}",
+    'INSTALL_OPT_DIR=%(installdir)s',
+    'INSTALL_LIB_DIR=""',
+]
+
+modextravars = {
+    'BDPO_PMPIWRAPPER': f"%(installdir)s/{local_lib_name}"
+}
+
+homepage = 'https://www.eviden.com'
+
+source_urls = ['file:///p/project/deepsea/wp2/sources/bdpo-pmpi-wrapper']
+sources = ['bdpo-pmpi-wrapper-%(version)s.tar.gz']
+
+checksums = ['b3eceee09afad75c628c324081a2e443b1ef13dcb57a81b3db5a1099eb02e83b']
+
+prebuildopts = ' '.join(local_env_map)
+preinstallopts = ' '.join(local_env_map)
+
+# Hacky way to disable configure step (by returning true and comment all added things)
+configure_cmd_prefix = '/bin/true # Disabling whats coming next:'
+
+sanity_check_paths = {
+    'files': [local_lib_name],
+    'dirs': [],
+}
+
+moduleclass = 'perf'
diff --git a/Golden_Repo/b/bdpo-pmpi-wrapper/generate_all_cards.py b/Golden_Repo/b/bdpo-pmpi-wrapper/generate_all_cards.py
new file mode 100755
index 000000000..06b5420a6
--- /dev/null
+++ b/Golden_Repo/b/bdpo-pmpi-wrapper/generate_all_cards.py
@@ -0,0 +1,77 @@
+#!/usr/bin/env python3
+from string import Template
+
+# List of dict (version = version semver, sha256 = sha256 checksum of source file)
+all_dpo_versions = [
+    {'semver': '4.3.2', 'sha256':'b3eceee09afad75c628c324081a2e443b1ef13dcb57a81b3db5a1099eb02e83b'}
+]
+
+# List of dict (name = MPI provider name, version = MPI provider version,
+#  mpicc = path to the MPI compiler binary)
+all_mpi_provider = [
+    {'name': 'gpsmpi', 'version': '2022a', 'mpicc': '$EBROOTPSMPI/bin/mpicc', 'mpich': '1'},
+    {'name': 'gpsmpi', 'version': '2022b', 'mpicc': '$EBROOTPSMPI/bin/mpicc', 'mpich': '1'},
+    {'name': 'npsmpic', 'version': '2022a', 'mpicc': '$EBROOTPSMPI/bin/mpicc', 'mpich': '1'},
+]
+
+eb_dpo_template = Template('''
+##
+# Author:    Eviden <bds-powerefficiency@eviden.com>
+##
+easyblock = 'ConfigureMake'
+
+name = 'bdpo-pmpi-wrapper'
+version = '$product_version'
+toolchain = {'name': '$toolchain_name', 'version': '$toolchain_version'}
+description = """This package provides the Power Efficiency Dynamic Power Optimizer PMPI Wrapper product.
+"""
+
+local_lib_name = f"bdpopmpiwrapper-{toolchain['name']}-{toolchain['version']}.so"
+
+local_env_map = [
+    f"MPICC=$eb_mpicc_path",
+    'MPICH=$is_mpich',
+    f"DPO_PMPI_MPI_FLAVOR={toolchain['name']}",
+    f"DPO_PMPI_MPI_VERSION={toolchain['version']}",
+    'INSTALL_OPT_DIR=%(installdir)s',
+    'INSTALL_LIB_DIR=""',
+]
+
+modextravars = {
+    'BDPO_PMPIWRAPPER': f"%(installdir)s/{local_lib_name}"
+}
+
+homepage = 'https://www.eviden.com'
+
+source_urls = ['file:///p/project/deepsea/wp2/sources/bdpo-pmpi-wrapper']
+sources = ['bdpo-pmpi-wrapper-%(version)s.tar.gz']
+
+checksums = ['$source_version_checksum']
+
+prebuildopts = ' '.join(local_env_map)
+preinstallopts = ' '.join(local_env_map)
+
+# Hacky way to disable configure step (by returning true and comment all added things)
+configure_cmd_prefix = '/bin/true # Disabling whats coming next:'
+
+sanity_check_paths = {
+    'files': [local_lib_name],
+    'dirs': [],
+}
+
+moduleclass = 'perf'
+''')
+
+for version in all_dpo_versions:
+    for provider in all_mpi_provider:
+        with open(f"bdpo-pmpi-wrapper-{version['semver']}-{provider['name']}-{provider['version']}.eb", 'wt+') as f:
+            f.write(
+                eb_dpo_template.substitute({
+                    'product_version': version['semver'],
+                    'toolchain_name': provider['name'],
+                    'toolchain_version': provider['version'],
+                    'eb_mpicc_path': provider['mpicc'],
+                    'source_version_checksum': version['sha256'],
+                    'is_mpich': provider['mpich'],
+                })
+            )
diff --git a/Golden_Repo/g/gpsmpi/gpsmpi-2022b.eb b/Golden_Repo/g/gpsmpi/gpsmpi-2022b.eb
new file mode 100644
index 000000000..a62c94262
--- /dev/null
+++ b/Golden_Repo/g/gpsmpi/gpsmpi-2022b.eb
@@ -0,0 +1,19 @@
+easyblock = 'Toolchain'
+
+name = 'gpsmpi'
+version = '2022b'
+
+homepage = '(none)'
+description = 'GCC and GFortran based compiler toolchain, including Parastation MPICH2 for MPI support.'
+
+
+toolchain = SYSTEM
+
+local_compiler = ('GCC', '11.3.0')
+
+dependencies = [
+    local_compiler,
+    ('psmpi', '5.8.1-1', '', local_compiler),
+]
+
+moduleclass = 'toolchain'
-- 
GitLab