From bf5f616fbe12c1ad6edebe49f2a976b0a232dde3 Mon Sep 17 00:00:00 2001
From: Marc Schluetter <m.schluetter@fz-juelich.de>
Date: Wed, 27 Sep 2023 13:53:48 +0200
Subject: [PATCH] Score-p/Scalasca with gpsmpi-2022a-pmix

---
 Golden_Repo/g/gpsmpi/gpsmpi-2022a-pmix.eb     | 19 ++++++
 .../p/psmpi/psmpi-5.8.1-1-GCC-11.3.0-pmix.eb  | 41 ++++++++++++
 .../Scalasca-2023-09-26-gpsmpi-2022a-pmix.eb  | 61 ++++++++++++++++++
 .../Score-P-2023-09-26-gpsmpi-2022a-pmix.eb   | 64 +++++++++++++++++++
 4 files changed, 185 insertions(+)
 create mode 100644 Golden_Repo/g/gpsmpi/gpsmpi-2022a-pmix.eb
 create mode 100644 Golden_Repo/p/psmpi/psmpi-5.8.1-1-GCC-11.3.0-pmix.eb
 create mode 100644 Golden_Repo/s/Scalasca/Scalasca-2023-09-26-gpsmpi-2022a-pmix.eb
 create mode 100644 Golden_Repo/s/Score-P/Score-P-2023-09-26-gpsmpi-2022a-pmix.eb

diff --git a/Golden_Repo/g/gpsmpi/gpsmpi-2022a-pmix.eb b/Golden_Repo/g/gpsmpi/gpsmpi-2022a-pmix.eb
new file mode 100644
index 000000000..d90a33096
--- /dev/null
+++ b/Golden_Repo/g/gpsmpi/gpsmpi-2022a-pmix.eb
@@ -0,0 +1,19 @@
+easyblock = 'Toolchain'
+
+name = 'gpsmpi'
+version = '2022a-pmix'
+
+homepage = '(none)'
+description = 'GCC and GFortran based compiler toolchain, including Parastation MPICH2 for MPI support (using PMIx).'
+
+
+toolchain = SYSTEM
+
+local_compiler = ('GCC', '11.3.0')
+
+dependencies = [
+    local_compiler,
+    ('psmpi', '5.8.1-1', '-pmix', local_compiler),
+]
+
+moduleclass = 'toolchain'
diff --git a/Golden_Repo/p/psmpi/psmpi-5.8.1-1-GCC-11.3.0-pmix.eb b/Golden_Repo/p/psmpi/psmpi-5.8.1-1-GCC-11.3.0-pmix.eb
new file mode 100644
index 000000000..368955198
--- /dev/null
+++ b/Golden_Repo/p/psmpi/psmpi-5.8.1-1-GCC-11.3.0-pmix.eb
@@ -0,0 +1,41 @@
+name = 'psmpi'
+version = '5.8.1-1'
+versionsuffix = '-pmix'
+
+homepage = 'https://github.com/ParaStation/psmpi2'
+description = """ParaStation MPI is an open source high-performance MPI 3.0 implementation,
+based on MPICH v3. It provides extra low level communication libraries and integration with
+various batch systems for tighter process control.
+"""
+
+toolchain = {'name': 'GCC', 'version': '11.3.0'}
+
+sources = [SOURCE_TAR_GZ]
+source_urls = ['https://gitlab.jsc.fz-juelich.de/ParTec/psmpi/uploads/762714c8eec01fe59239a52798a70e1c/']
+checksums = [
+    # psmpi-5.8.1-1.tar.gz
+    '54dee42a2eb6ac26d43f5e0371ddc1e75225512365749b3d03856543b6a7366d',
+]
+
+osdependencies = [
+    # needed for --with-pmix
+    ('pmix-devel'),
+]
+
+dependencies = [
+    ('pscom', '5.6-default'),
+    # needed due to the inclusion of hwloc
+    ('libxml2', '2.9.13'),
+    # Including CUDA here to trigger the hook to add the gpu property, and because it is actually needed
+    ('CUDA', '11.7', '', SYSTEM)
+]
+
+configopts = '--with-pmix=/usr/lib64/pmix'
+
+mpich_opts = '--enable-static --with-file-system=ufs+gpfs --enable-romio'
+
+threaded = False
+
+cuda = True
+
+moduleclass = 'mpi'
diff --git a/Golden_Repo/s/Scalasca/Scalasca-2023-09-26-gpsmpi-2022a-pmix.eb b/Golden_Repo/s/Scalasca/Scalasca-2023-09-26-gpsmpi-2022a-pmix.eb
new file mode 100644
index 000000000..11510cce0
--- /dev/null
+++ b/Golden_Repo/s/Scalasca/Scalasca-2023-09-26-gpsmpi-2022a-pmix.eb
@@ -0,0 +1,61 @@
+##
+# This is an easyconfig file for EasyBuild, see https://github.com/easybuilders/easybuild
+# Copyright:: Copyright 2013-2023 Juelich Supercomputing Centre, Germany
+# Authors::   Bernd Mohr <b.mohr@fz-juelich.de>
+#             Markus Geimer <m.geimer@fz-juelich.de>
+#             Christian Feld <c.feld@fz-juelich.de>
+# License::   3-clause BSD
+#
+# This work is based on experiences from the UNITE project
+# http://apps.fz-juelich.de/unite/
+##
+
+easyblock = 'EB_Score_minus_P'
+
+name = 'Scalasca'
+version = '2023-09-26'
+
+homepage = 'https://www.scalasca.org/'
+description = """
+Scalasca is a software tool that supports the performance optimization of
+parallel programs by measuring and analyzing their runtime behavior. The
+analysis identifies potential performance bottlenecks -- in particular
+those concerning communication and synchronization -- and offers guidance
+in exploring their causes.
+"""
+
+toolchain = {'name': 'gpsmpi', 'version': '2022a-pmix'}
+
+source_urls = ['https://perftools.pages.jsc.fz-juelich.de/cicd/scalasca/branches/MR71']
+sources = ['latest.tar.gz']
+builddependencies = [
+    ('CubeWriter', '4.8.2'),
+]
+
+dependencies = [
+    ('CubeGUI', '4.8.2'),
+    ('CubeLib', '4.8.2'),
+    ('OTF2', '3.0.3'),
+    ('Score-P', '2023-09-26'),
+]
+
+sanity_check_paths = {
+    'files': ['bin/scalasca', ('lib/libpearl.replay.a', 'lib64/libpearl.replay.a')],
+    'dirs': [],
+}
+
+# note that modextrapaths can be used for relative paths only
+modextrapaths = {
+    # Ensure that local metric documentation is found by CubeGUI
+    'CUBE_DOCPATH': 'share/doc/scalasca/patterns'
+}
+
+modextravars = {
+    # Specifies an optional list of colon separated paths identifying
+    # suitable file systems for tracing. If set, the file system of
+    # trace measurements has to match at least one of the specified
+    # file systems.
+    'SCAN_TRACE_FILESYS': '/p/project:/p/scratch:/p/cscratch:/p/fastdata:/p/largedata:/p/largedata2'
+}
+
+moduleclass = 'perf'
diff --git a/Golden_Repo/s/Score-P/Score-P-2023-09-26-gpsmpi-2022a-pmix.eb b/Golden_Repo/s/Score-P/Score-P-2023-09-26-gpsmpi-2022a-pmix.eb
new file mode 100644
index 000000000..290e77dde
--- /dev/null
+++ b/Golden_Repo/s/Score-P/Score-P-2023-09-26-gpsmpi-2022a-pmix.eb
@@ -0,0 +1,64 @@
+##
+# This is an easyconfig file for EasyBuild, see https://github.com/easybuilders/easybuild
+# Copyright:: Copyright 2013-2023 Juelich Supercomputing Centre, Germany
+# Authors::   Bernd Mohr <b.mohr@fz-juelich.de>
+#             Markus Geimer <m.geimer@fz-juelich.de>
+#             Christian Feld <c.feld@fz-juelich.de>
+# License::   3-clause BSD
+#
+# This work is based on experiences from the UNITE project
+# http://apps.fz-juelich.de/unite/
+##
+
+easyblock = 'EB_Score_minus_P'
+
+name = 'Score-P'
+version = '2023-09-26'
+
+homepage = 'https://www.score-p.org'
+description = """
+The Score-P measurement infrastructure is a highly scalable and easy-to-use
+tool suite for profiling, event tracing, and online analysis of HPC
+applications.
+"""
+
+toolchain = {'name': 'gpsmpi', 'version': '2022a-pmix'}
+
+source_urls = ['https://perftools.pages.jsc.fz-juelich.de/cicd/scorep/branches/MR195']
+sources = ['latest.tar.gz']
+
+builddependencies = [
+    ('CUDA', '11.7', '', SYSTEM),
+    ('CubeLib', '4.8.2'),
+    ('CubeWriter', '4.8.2'),
+    # Unwinding/sampling support (optional):
+    ('libunwind', '1.6.2'),
+]
+
+dependencies = [
+    # binutils is implicitly available via GCC toolchain
+    ('OPARI2', '2.0.8'),
+    ('OTF2', '3.0.3'),
+    # Hardware counter support (optional):
+    ('PAPI', '7.0.0'),
+]
+
+configopts = '--enable-shared --with-machine-name=$SYSTEMNAME '
+# Enable CUDA support
+configopts += '--with-libOpenCL=$EBROOTCUDA/targets/x86_64-linux '
+# Make OMPT default, if available
+configopts += '--enable-default=ompt '
+
+postinstallcmds = ['make installcheck']
+
+sanity_check_paths = {
+    'files': ['bin/scorep', 'include/scorep/SCOREP_User.h',
+              ('lib/libscorep_adapter_mpi_event.a', 'lib64/libscorep_adapter_mpi_event.a'),
+              ('lib/libscorep_adapter_mpi_event.%s' % SHLIB_EXT, 'lib64/libscorep_adapter_mpi_event.%s' % SHLIB_EXT)],
+    'dirs': [],
+}
+
+# Ensure that local metric documentation is found by CubeGUI
+modextrapaths = {'CUBE_DOCPATH': 'share/doc/scorep/profile'}
+
+moduleclass = 'perf'
-- 
GitLab