diff --git a/Custom_Hooks/eb_hooks.py b/Custom_Hooks/eb_hooks.py index 84406d85140503a534dc5a3c6efde61005ccac40..e666341bfc9afc31dc18973963759c4087495954 100644 --- a/Custom_Hooks/eb_hooks.py +++ b/Custom_Hooks/eb_hooks.py @@ -72,12 +72,13 @@ VETOED_INSTALLATIONS = { TWEAKABLE_DEPENDENCIES = { 'UCX': 'default', - #'CUDA': '11.5', + 'CUDA': '11.7', 'Mesa': ('OpenGL', '2022a'), 'libglvnd': ('OpenGL', '2022a'), #'libxc': '5.1.7', 'glu': ('OpenGL', '2022a'), 'glew': ('OpenGL', '2022a'), + 'pkg-config': ('pkgconf', '1.8.0'), #'Boost': '1.78.0', #'Boost.Python': '1.78.0', } @@ -371,6 +372,7 @@ def inject_gpu_property(ec): if ( "CUDA" in [dep[0] for dep in iter(ec_dict["dependencies"])] or ec_dict["toolchain"]["name"] in CUDA_ENABLED_TOOLCHAINS + or ec_dict["name"] == 'CUDA' ): key = "modluafooter" value = 'add_property("arch","gpu")' diff --git a/Golden_Repo/c/CMake/CMake-3.23.1.eb b/Golden_Repo/c/CMake/CMake-3.23.1.eb new file mode 100644 index 0000000000000000000000000000000000000000..362642b94b7ecd370263028deb839e4418d879b7 --- /dev/null +++ b/Golden_Repo/c/CMake/CMake-3.23.1.eb @@ -0,0 +1,29 @@ +name = 'CMake' +version = '3.23.1' + +homepage = 'https://www.cmake.org' + +description = """ + CMake, the cross-platform, open-source build system. CMake is a family of + tools designed to build, test and package software. +""" + +toolchain = SYSTEM + +source_urls = ['https://www.cmake.org/files/v%(version_major_minor)s'] +sources = [SOURCELOWER_TAR_GZ] +checksums = ['33fd10a8ec687a4d0d5b42473f10459bb92b3ae7def2b745dc10b192760869f3'] + +builddependencies = [ + ('binutils', '2.38'), +] + +dependencies = [ + ('ncurses', '6.3'), + ('zlib', '1.2.12'), + ('OpenSSL', '1.1', '', True), +] + +hidden = True + +moduleclass = 'devel' diff --git a/Golden_Repo/c/CUDA/CUDA-11.7.eb b/Golden_Repo/c/CUDA/CUDA-11.7.eb new file mode 100644 index 0000000000000000000000000000000000000000..cfe1d35e940298e1712117e555b108d9ed5a25d8 --- /dev/null +++ b/Golden_Repo/c/CUDA/CUDA-11.7.eb @@ -0,0 +1,28 @@ +name = 'CUDA' +version = '11.7' +local_nv_version = '515.43.04' + +homepage = 'https://developer.nvidia.com/cuda-toolkit' +description = """CUDA (formerly Compute Unified Device Architecture) is a parallel + computing platform and programming model created by NVIDIA and implemented by the + graphics processing units (GPUs) that they produce. CUDA gives developers access + to the virtual instruction set and memory of the parallel computational elements in CUDA GPUs.""" + +toolchain = SYSTEM + +source_urls = ['https://developer.download.nvidia.com/compute/cuda/%(version)s.0/local_installers/'] +sources = ['cuda_%%(version)s.0_%s_linux%%(cudaarch)s.run' % local_nv_version] +checksums = [ + { + 'cuda_%%(version)s.0_%s_linux.run' % local_nv_version: + '087fdfcbba1f79543b1f78e43a8dfdac5f6db242d042dde820e16dc185892f26', + 'cuda_%%(version)s.0_%s_linux_ppc64le.run' % local_nv_version: + '74a507ac54067c258e6b7c9063c98d411116ecc5c5397b1f6e6a999e86dff08a', + 'cuda_%%(version)s.0_%s_linux_sbsa.run' % local_nv_version: + 'e777839a618ca9a3d5ad42ded43a1b6392af2321a7327635a4afcc986876a21b', + } +] + +dependencies = [('nvidia-driver', 'default', '', SYSTEM)] + +moduleclass = 'system' diff --git a/Golden_Repo/n/numactl/numactl-2.0.15.eb b/Golden_Repo/n/numactl/numactl-2.0.15.eb new file mode 100644 index 0000000000000000000000000000000000000000..f40ad527f72b4ed5859da6ec4959677f7eaee7f7 --- /dev/null +++ b/Golden_Repo/n/numactl/numactl-2.0.15.eb @@ -0,0 +1,34 @@ +easyblock = 'ConfigureMake' + +name = 'numactl' +version = '2.0.15' + +homepage = 'https://github.com/numactl/numactl' + +description = """ + The numactl program allows you to run your application program on specific + cpu's and memory nodes. It does this by supplying a NUMA memory policy to + the operating system before running your program. The libnuma library provides + convenient ways for you to add NUMA memory policies into your own program. +""" + +toolchain = SYSTEM +toolchainopts = {'pic': True} + +source_urls = ['https://github.com/numactl/numactl/archive/'] +sources = ['v%(version)s.tar.gz'] +checksums = ['1508bb02f56f1b9376243980ba96291856ba083e7a3480fdcb0fbf11ff01d6fa'] + +builddependencies = [ + ('binutils', '2.38'), + ('Autotools', '20220317', '', SYSTEM), +] + +preconfigopts = './autogen.sh && ' + +sanity_check_paths = { + 'files': ['bin/numactl', 'bin/numastat', 'lib/libnuma.%s' % SHLIB_EXT, 'lib/libnuma.a'], + 'dirs': ['share/man', 'include'] +} + +moduleclass = 'tools' diff --git a/Golden_Repo/n/nvidia-driver/nvidia-driver-default.eb b/Golden_Repo/n/nvidia-driver/nvidia-driver-default.eb new file mode 100644 index 0000000000000000000000000000000000000000..c844f598dd2233e889f5ed22a0e1563b9ad7e7f8 --- /dev/null +++ b/Golden_Repo/n/nvidia-driver/nvidia-driver-default.eb @@ -0,0 +1,23 @@ +name = 'nvidia-driver' +version = 'default' +realversion = '515.65.01' + +homepage = 'https://developer.nvidia.com/cuda-toolkit' +description = """This is a set of libraries normally installed by the NVIDIA driver installer.""" + +site_contacts = 'sc@fz-juelich.de' + +toolchain = SYSTEM + +source_urls = ['http://us.download.nvidia.com/tesla/%s/' % realversion] +sources = ['NVIDIA-Linux-x86_64-%s.run' % realversion] +checksums = ['0492ddc5b5e65aa00cbc762e8d6680205c8d08e103b7131087a15126aee495e9'] + +# To avoid conflicts between NVML and the kernel driver +postinstallcmds = ['rm %(installdir)s/lib64/libnvidia-ml.so*'] + +modluafooter = ''' +add_property("arch","gpu") +''' + +moduleclass = 'system' diff --git a/Golden_Repo/p/popt/popt-1.18.eb b/Golden_Repo/p/popt/popt-1.18.eb new file mode 100644 index 0000000000000000000000000000000000000000..e6f801c8c216aa078fbce81684d586dd9741fd6f --- /dev/null +++ b/Golden_Repo/p/popt/popt-1.18.eb @@ -0,0 +1,20 @@ +easyblock = 'ConfigureMake' + +name = 'popt' +version = '1.18' + +homepage = 'https://github.com/rpm-software-management/popt' +description = 'Popt is a C library for parsing command line parameters.' + +toolchain = SYSTEM + +sources = [SOURCE_TAR_GZ] +source_urls = ['http://ftp.rpm.org/popt/releases/popt-1.x'] +checksums = ['5159bc03a20b28ce363aa96765f37df99ea4d8850b1ece17d1e6ad5c24fdc5d1'] + +sanity_check_paths = { + 'files': ['include/%(name)s.h', ('lib/libpopt.a', 'lib64/libpopt.a'), ('lib/libpopt.so', 'lib64/libpopt.so')], + 'dirs': [], +} + +moduleclass = 'tools' diff --git a/Golden_Repo/p/pscom/pscom-5.6-default.eb b/Golden_Repo/p/pscom/pscom-5.6-default.eb new file mode 100644 index 0000000000000000000000000000000000000000..e112fa7f4bc15a045b75f1390bab34c424a2d6b8 --- /dev/null +++ b/Golden_Repo/p/pscom/pscom-5.6-default.eb @@ -0,0 +1,49 @@ +easyblock = 'CMakeMake' + +name = 'pscom' +# Create drop-in replacement version that ensures overriding behaviour +version = '5.6-default' +local_realversion = '5.6.0-1' +homepage = 'http://www.par-tec.com' +description = """ParaStation is a robust and efficient cluster middleware, consisting of a high-performance +communication layer (MPI) and a sophisticated management layer. +""" + +toolchain = SYSTEM + +source_urls = ['https://github.com/ParaStation/%(name)s/archive/'] +sources = ['%s.tar.gz' % local_realversion] +checksums = ['b7c12b434c777e49c62ce0edbae830176f5627fe6f50170774669125d1940272'] + +builddependencies = [ + ('binutils', '2.38'), + ('popt', '1.18'), + ('CUDA', '11.7.0'), + ('CMake', '3.23.1'), +] + +dependencies = [ + ('UCX', '1.13.1'), +] + +build_type = 'RelWithDebInfo' + +preconfigopts = 'export UCP_LDFLAGS="-L$EBROOTUCX/lib" && ' +preconfigopts += 'export CUDA_LDFLAGS="-L$EBROOTNVIDIA/lib64" &&' + +configopts = '-DCUDA_ENABLED=ON' + +sanity_check_paths = { + 'files': [ + 'include/%(name)s.h', + ('lib/libpscom.so', 'lib64/libpscom.so'), + ('lib/libpscom4ucp.so', 'lib64/libpscom4ucp.so'), + ], + 'dirs': [], +} + +modextravars = { + 'PSCOMVERSION': '%s' % local_realversion, +} + +moduleclass = 'tools' diff --git a/Golden_Repo/p/psmpi-settings/psmpi-settings-5.6-CUDA.eb b/Golden_Repo/p/psmpi-settings/psmpi-settings-5.6-CUDA.eb new file mode 100644 index 0000000000000000000000000000000000000000..ddb203c2252b0b17c1d071d679a9a141b04e143a --- /dev/null +++ b/Golden_Repo/p/psmpi-settings/psmpi-settings-5.6-CUDA.eb @@ -0,0 +1,39 @@ +easyblock = 'SystemBundle' + +name = 'psmpi-settings' +version = '5.6' +versionsuffix = 'CUDA' + +homepage = '' +description = ''' +This module loads the ParaStationMPI configuration. It enables UCX as a communication library and CUDA-aware features. +''' + +toolchain = SYSTEM + +source_urls = [] + +sources = [] +modextravars = { + 'PSP_OPENIB': '0', + 'PSP_UCP': '1', + 'PSP_CUDA': '1', + 'PSP_SHM': '0', + 'PSP_HARD_ABORT': '1', +} + +modluafooter = ''' +if mode()=="load" then + if isloaded("UCX-settings/RC") then + try_load("UCX-settings/RC-CUDA") + elseif isloaded("UCX-settings/UD") then + try_load("UCX-settings/UD-CUDA") + elseif isloaded("UCX-settings/DC") then + try_load("UCX-settings/DC-CUDA") + elseif not isloaded("UCX-settings") then + try_load("UCX-settings/RC-CUDA") + end +end +''' + +moduleclass = 'system' diff --git a/Golden_Repo/p/psmpi-settings/psmpi-settings-5.6-UCX.eb b/Golden_Repo/p/psmpi-settings/psmpi-settings-5.6-UCX.eb new file mode 100644 index 0000000000000000000000000000000000000000..7e82e4a74b46d69084d43c8d59ea474222e92a9f --- /dev/null +++ b/Golden_Repo/p/psmpi-settings/psmpi-settings-5.6-UCX.eb @@ -0,0 +1,21 @@ +easyblock = 'SystemBundle' + +name = 'psmpi-settings' +version = '5.6' +versionsuffix = 'UCX' + +homepage = '' +description = 'This module loads the ParaStationMPI configuration. It enables UCX as a communication library.' + +toolchain = SYSTEM + +source_urls = [] + +sources = [] +modextravars = { + 'PSP_OPENIB': '0', + 'PSP_UCP': '1', + 'PSP_HARD_ABORT': '1', +} + +moduleclass = 'system' diff --git a/Golden_Repo/p/psmpi-settings/psmpi-settings-5.6-plain.eb b/Golden_Repo/p/psmpi-settings/psmpi-settings-5.6-plain.eb new file mode 100644 index 0000000000000000000000000000000000000000..7586f6ec33262e33ea88f23a5090608f6f4c2287 --- /dev/null +++ b/Golden_Repo/p/psmpi-settings/psmpi-settings-5.6-plain.eb @@ -0,0 +1,19 @@ +easyblock = 'SystemBundle' + +name = 'psmpi-settings' +version = '5.6' +versionsuffix = 'plain' + +homepage = '' +description = 'This module loads the ParaStationMPI configuration. It relies on the defaults.' + +toolchain = SYSTEM + +source_urls = [] + +sources = [] +modextravars = { + 'PSP_HARD_ABORT': '1', +} + +moduleclass = 'system' diff --git a/Golden_Repo/p/psmpi/psmpi-5.5.0-1_ime.patch b/Golden_Repo/p/psmpi/psmpi-5.5.0-1_ime.patch new file mode 100644 index 0000000000000000000000000000000000000000..61547f3e447515d55b229b44a4191513d938de6a --- /dev/null +++ b/Golden_Repo/p/psmpi/psmpi-5.5.0-1_ime.patch @@ -0,0 +1,220 @@ +diff -ruN psmpi-5.5.0-1.orig/mpich2/src/mpi/romio/adio/ad_ime/ad_ime.c psmpi-5.5.0-1/mpich2/src/mpi/romio/adio/ad_ime/ad_ime.c +--- psmpi-5.5.0-1.orig/mpich2/src/mpi/romio/adio/ad_ime/ad_ime.c 2021-10-21 20:06:57.000000000 +0200 ++++ psmpi-5.5.0-1/mpich2/src/mpi/romio/adio/ad_ime/ad_ime.c 2021-11-09 14:53:59.545886977 +0100 +@@ -10,8 +10,8 @@ + + struct ADIOI_Fns_struct ADIO_IME_operations = { + ADIOI_IME_Open, /* Open */ +- ADIOI_SCALEABLE_OpenColl, /* OpenColl */ /*XXX*/ +- ADIOI_IME_ReadContig, /* ReadContig */ ++ ADIOI_GEN_OpenColl, /* OpenColl */ ++ ADIOI_IME_ReadContig, /* ReadContig */ + ADIOI_IME_WriteContig, /* WriteContig */ + ADIOI_GEN_ReadStridedColl, /* ReadStridedColl */ + ADIOI_GEN_WriteStridedColl, /* WriteStridedColl */ +diff -ruN psmpi-5.5.0-1.orig/mpich2/src/mpi/romio/adio/ad_ime/ad_ime_common.c psmpi-5.5.0-1/mpich2/src/mpi/romio/adio/ad_ime/ad_ime_common.c +--- psmpi-5.5.0-1.orig/mpich2/src/mpi/romio/adio/ad_ime/ad_ime_common.c 2021-10-21 20:06:57.000000000 +0200 ++++ psmpi-5.5.0-1/mpich2/src/mpi/romio/adio/ad_ime/ad_ime_common.c 2021-11-09 14:53:59.545886977 +0100 +@@ -58,24 +58,38 @@ + MPI_Attr_put(MPI_COMM_SELF, ADIOI_IME_Initialized, (void *) 0); + } + +-/* Return an IME-compatible filename (add 'ime:' prefix). +- * New filename must be free'd by the user */ +-char *ADIOI_IME_Add_prefix(const char *filename) ++/** ++ * Return an IME-compatible filename ++ * An absolute BFS path will get added the 'ime:' prefix. ++ * A path on ime-fuse will be converted to a relative ime path, ++ * with the ime:/ prefix ++ * The returned filename must be free'd by the user ++ */ ++char *ADIOI_IME_Convert_filename(const char *filename) + { +- static char myname[] = "ADIOI_IME_ADD_PREFIX"; +- size_t f_len = strlen(filename) + 1; +- char *ime_filename = ADIOI_Malloc(f_len + ADIOI_IME_PREFIX_LEN); ++ static char myname[] = "ADIOI_IME_CONVERT_FILENAME"; + +- if (!ime_filename) { ++#if (IME_NATIVE_API_VERSION >= 131) ++ bool is_fuse = ime_native_is_fuse_path_and_convert(filename, NULL); ++ if (is_fuse) { ++ return ADIOI_Strdup(filename); ++ } ++#endif + ++ size_t f_len = strlen(filename) + 1; ++ char *ime_filename = ADIOI_Malloc(f_len + IME_FILE_PREFIX_LEN_NO_FWD_SLASH); ++ if (!ime_filename) { + MPIO_Err_create_code(MPI_SUCCESS, + MPIR_ERR_FATAL, +- myname, __LINE__, MPI_ERR_UNKNOWN, "Error allocating memory", 0); ++ myname, __LINE__, MPI_ERR_UNKNOWN, ++ "Error allocating memory", 0); + + return NULL; + } + +- ADIOI_Strncpy(ime_filename, ADIOI_IME_PREFIX, ADIOI_IME_PREFIX_LEN); +- ADIOI_Strncpy((ime_filename + ADIOI_IME_PREFIX_LEN), filename, f_len); ++ ADIOI_Strncpy(ime_filename, DEFAULT_IME_PREFIX_NO_FWD_SLASH, ++ IME_FILE_PREFIX_LEN_NO_FWD_SLASH); ++ ADIOI_Strncpy((ime_filename + IME_FILE_PREFIX_LEN_NO_FWD_SLASH), ++ filename, f_len); + return ime_filename; + } +diff -ruN psmpi-5.5.0-1.orig/mpich2/src/mpi/romio/adio/ad_ime/ad_ime_common.h psmpi-5.5.0-1/mpich2/src/mpi/romio/adio/ad_ime/ad_ime_common.h +--- psmpi-5.5.0-1.orig/mpich2/src/mpi/romio/adio/ad_ime/ad_ime_common.h 2021-10-21 20:06:57.000000000 +0200 ++++ psmpi-5.5.0-1/mpich2/src/mpi/romio/adio/ad_ime/ad_ime_common.h 2021-11-09 14:53:59.545886977 +0100 +@@ -17,5 +17,5 @@ + void ADIOI_IME_End(int *error_code); + int ADIOI_IME_End_call(MPI_Comm comm, int keyval, void *attribute_val, void *extra_state); + +-char *ADIOI_IME_Add_prefix(const char *filename); ++char *ADIOI_IME_Convert_filename(const char *filename); + #endif /* AD_IME_COMMON_H_INCLUDED */ +diff -ruN psmpi-5.5.0-1.orig/mpich2/src/mpi/romio/adio/ad_ime/ad_ime_delete.c psmpi-5.5.0-1/mpich2/src/mpi/romio/adio/ad_ime/ad_ime_delete.c +--- psmpi-5.5.0-1.orig/mpich2/src/mpi/romio/adio/ad_ime/ad_ime_delete.c 2021-10-21 20:06:57.000000000 +0200 ++++ psmpi-5.5.0-1/mpich2/src/mpi/romio/adio/ad_ime/ad_ime_delete.c 2021-11-09 14:53:59.545886977 +0100 +@@ -13,7 +13,7 @@ + int ret; + static char myname[] = "ADIOI_IME_DELETE"; + +- char *ime_filename = ADIOI_IME_Add_prefix(filename); ++ char *ime_filename = ADIOI_IME_Convert_filename(filename); + ret = ime_native_unlink(ime_filename); + ADIOI_Free(ime_filename); + if (ret) +diff -ruN psmpi-5.5.0-1.orig/mpich2/src/mpi/romio/adio/ad_ime/ad_ime.h psmpi-5.5.0-1/mpich2/src/mpi/romio/adio/ad_ime/ad_ime.h +--- psmpi-5.5.0-1.orig/mpich2/src/mpi/romio/adio/ad_ime/ad_ime.h 2021-10-21 20:06:57.000000000 +0200 ++++ psmpi-5.5.0-1/mpich2/src/mpi/romio/adio/ad_ime/ad_ime.h 2021-11-09 14:53:59.545886977 +0100 +@@ -7,9 +7,7 @@ + #define AD_IME_H_INCLUDED + + #include "adio.h" +-#ifdef HAVE_IME_NATIVE_H + #include "ime_native.h" +-#endif + + #define ADIOI_IME_PREFIX "ime:" + #define ADIOI_IME_PREFIX_LEN (sizeof(ADIOI_IME_PREFIX) - 1) +diff -ruN psmpi-5.5.0-1.orig/mpich2/src/mpi/romio/adio/ad_ime/ad_ime_open.c psmpi-5.5.0-1/mpich2/src/mpi/romio/adio/ad_ime/ad_ime_open.c +--- psmpi-5.5.0-1.orig/mpich2/src/mpi/romio/adio/ad_ime/ad_ime_open.c 2021-10-21 20:06:57.000000000 +0200 ++++ psmpi-5.5.0-1/mpich2/src/mpi/romio/adio/ad_ime/ad_ime_open.c 2021-11-09 14:53:59.545886977 +0100 +@@ -68,7 +68,7 @@ + return; + } + +- ime_fs->ime_filename = ADIOI_IME_Add_prefix(fd->filename); ++ ime_fs->ime_filename = ADIOI_IME_Convert_filename(fd->filename); + + /* all processes open the file */ + ret = ime_native_open(ime_fs->ime_filename, amode, perm); +diff -ruN psmpi-5.5.0-1.orig/mpich2/src/mpi/romio/adio/common/ad_fstype.c psmpi-5.5.0-1/mpich2/src/mpi/romio/adio/common/ad_fstype.c +--- psmpi-5.5.0-1.orig/mpich2/src/mpi/romio/adio/common/ad_fstype.c 2021-10-21 20:06:57.000000000 +0200 ++++ psmpi-5.5.0-1/mpich2/src/mpi/romio/adio/common/ad_fstype.c 2021-11-09 14:53:59.545886977 +0100 +@@ -97,6 +97,20 @@ + #define DAOS_SUPER_MAGIC (0xDA05AD10) + #endif + ++# if defined(ROMIO_IME) ++/* fuse super magic is somehow missing in system includes */ ++# if !defined(FUSE_SUPER_MAGIC) ++# define FUSE_SUPER_MAGIC 0x65735546 ++# endif ++# include "ime_native.h" ++# if (IME_NATIVE_API_VERSION) >= 131 ++# include "ime_ioctl.h" ++ ++/* Disable auto-switching from posix to IME */ ++#define IME_NO_AUTO_NATIVE "IME_NO_AUTO_NATIVE" ++# endif ++# endif /* ROMIO_IME */ ++ + #ifdef ROMIO_HAVE_STRUCT_STATVFS_WITH_F_BASETYPE + #ifdef HAVE_SYS_STATVFS_H + #include <sys/statvfs.h> +@@ -486,6 +500,39 @@ + } + #endif + ++#ifdef FUSE_SUPER_MAGIC ++ if (fsbuf.f_type == FUSE_SUPER_MAGIC) { ++ /* fuse does not allow to override FUSE_SUPER_MAGIC ++ * Any file system that is fused based needs to hook in ++ * here and use its own ioctl. ++ */ ++ #if defined ROMIO_IME && defined IM_FIOC_GET_F_TYPE ++ char *dir; ++ ADIO_FileSysType_parentdir(filename, &dir); ++ int fd = open(dir, O_RDONLY); ++ if (fd == -1) ++ { ++ /* dir should typically work, but try to fail back to ++ * filename if it somehow failed ++ */ ++ fd = open(filename, O_RDONLY); ++ } ++ ++ if (fd >= 0) { ++ uint32_t f_type; ++ int rc = ioctl(fd, IM_FIOC_GET_F_TYPE, &f_type); ++ close(fd); ++ if (rc == 0 && f_type == IME_SUPER_MAGIC && ++ getenv(IME_NO_AUTO_NATIVE) == NULL) { ++ *fstype = ADIO_IME; ++ return; ++ } ++ } ++ #endif /* ROMIO_IME */ ++ } ++#endif /* FUSE_SUPER_MAGIC */ ++ ++ + #endif /*ROMIO_HAVE_STRUCT_STATFS_WITH_F_TYPE */ + + #ifdef ROMIO_UFS +diff -ruN psmpi-5.5.0-1.orig/mpich2/src/mpi/romio/configure.ac psmpi-5.5.0-1/mpich2/src/mpi/romio/configure.ac +--- psmpi-5.5.0-1.orig/mpich2/src/mpi/romio/configure.ac 2021-10-21 20:06:57.000000000 +0200 ++++ psmpi-5.5.0-1/mpich2/src/mpi/romio/configure.ac 2021-11-09 14:54:27.824926093 +0100 +@@ -231,6 +231,8 @@ + --with-pvfs2=path - Path to installation of PVFS (version 2)],,) + AC_ARG_WITH(mpi-impl,[ + --with-mpi-impl=name - Specify MPI implementation to build ROMIO for],,) ++AC_ARG_WITH(ime,[ ++--with-ime=PATH - Path to installation of IME],,) + dnl + AC_ARG_WITH(mpi, [ + --with-mpi=path - Path to instalation of MPI (headers, libs, etc)],,) +@@ -806,6 +808,30 @@ + fi + fi + ++# ++# IME specific build path. ++# Automatically adds IME to the file systems if not present ++# ++if test -n "${with_ime}" ; then ++ AC_SUBST(IME_INSTALL_PATH, ["${with_ime}"]) ++fi ++ ++ime_default_path="/opt/ddn/ime" ++if test -n "${with_ime}" -o -e "${ime_default_path}/include/ime_native.h"; then ++ # Use IME and the default path, if not specified or overriden ++ with_ime="${ime_default_path}" ++ file_system_ime=1 ++fi ++ ++if test -n "${file_system_ime}" ; then ++ CFLAGS="$CFLAGS -I${with_ime}/include" ++ CPPFLAGS="$CPPFLAGS -I${with_ime}/include" ++ LDFLAGS="$LDFLAGS -L${with_ime}/lib" ++ LIBS="-lim_client -lim_common" ++ export LD_LIBRARY_PATH="${with_ime}/lib:$LD_LIBRARY_PATH" ++fi ++ ++ + ############################################# + # This PVFS2 logic is special because it's hard to get it right if it comes + # before the known_filesystems check loop above. So we handle it down here, diff --git a/Golden_Repo/p/psmpi/psmpi-5.6.0-1-GCC-11.3.0.eb b/Golden_Repo/p/psmpi/psmpi-5.6.0-1-GCC-11.3.0.eb new file mode 100644 index 0000000000000000000000000000000000000000..4ce432c499589d1de6c40e8ea97885199264a596 --- /dev/null +++ b/Golden_Repo/p/psmpi/psmpi-5.6.0-1-GCC-11.3.0.eb @@ -0,0 +1,44 @@ +name = 'psmpi' +version = '5.6.0-1' + +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://github.com/ParaStation/psmpi/archive/'] +checksums = [ + # psmpi-5.6.0-1.tar.gz + 'bb532c9cc49da31384bb7d73faccf0be224317bc5b055723095c3965f7ad6209', + '978eb3223c978477c40987f745c07fda26ccbad2f468616faf92f0d71b81a156', # psmpi_shebang.patch + # psmpi-5.5.0-1_ime.patch + 'c2418b9511560dca197242508de9c7b6b117122912b6d3a4aa18398834f465ff', +] + +dependencies = [ + ('pscom', '5.6-default', '', SYSTEM), + # 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.0', '', SYSTEM) +] + +patches = [ + 'psmpi_shebang.patch', + 'psmpi-5.5.0-1_ime.patch' +] + +mpich_opts = '--enable-static --with-file-system=ime+ufs+gpfs --enable-romio' + +preconfigopts = 'export CFLAGS="-I/opt/ddn/ime/include $CFLAGS" && ' +preconfigopts += 'export LDFLAGS="$LDFLAGS -L/opt/ddn/ime/lib -lim_client" && ' + +threaded = False + +cuda = True + +moduleclass = 'mpi' diff --git a/Golden_Repo/p/psmpi/psmpi_shebang.patch b/Golden_Repo/p/psmpi/psmpi_shebang.patch new file mode 100644 index 0000000000000000000000000000000000000000..3fa1addb4933086fe98c728006242843b0c7c4a8 --- /dev/null +++ b/Golden_Repo/p/psmpi/psmpi_shebang.patch @@ -0,0 +1,36 @@ +diff -ruN psmpi-5.2.0-1.old/mpich2/src/env/mpicc.bash.in psmpi-5.2.0-1/mpich2/src/env/mpicc.bash.in +--- psmpi-5.2.0-1.old/mpich2/src/env/mpicc.bash.in 2017-03-08 20:47:13.159276458 +0100 ++++ psmpi-5.2.0-1/mpich2/src/env/mpicc.bash.in 2017-03-08 20:47:48.430966270 +0100 +@@ -1,4 +1,4 @@ +-#! @BASH_SHELL@ ++#!/usr/bin/env bash + ## + ## (C) 2006 by Argonne National Laboratory. + ## See COPYRIGHT in top-level directory. +diff -ruN psmpi-5.2.0-1.old/mpich2/src/env/mpicxx.bash.in psmpi-5.2.0-1/mpich2/src/env/mpicxx.bash.in +--- psmpi-5.2.0-1.old/mpich2/src/env/mpicxx.bash.in 2017-03-08 20:47:13.160276506 +0100 ++++ psmpi-5.2.0-1/mpich2/src/env/mpicxx.bash.in 2017-03-08 20:47:51.549115658 +0100 +@@ -1,4 +1,4 @@ +-#! @BASH_SHELL@ ++#!/usr/bin/env bash + ## + ## (C) 2006 by Argonne National Laboratory. + ## See COPYRIGHT in top-level directory. +diff -ruN psmpi-5.2.0-1.old/mpich2/src/env/mpif77.bash.in psmpi-5.2.0-1/mpich2/src/env/mpif77.bash.in +--- psmpi-5.2.0-1.old/mpich2/src/env/mpif77.bash.in 2017-03-08 20:47:13.160276506 +0100 ++++ psmpi-5.2.0-1/mpich2/src/env/mpif77.bash.in 2017-03-08 20:47:55.148288103 +0100 +@@ -1,4 +1,4 @@ +-#! @BASH_SHELL@ ++#!/usr/bin/env bash + ## + ## (C) 2006 by Argonne National Laboratory. + ## See COPYRIGHT in top-level directory. +diff -ruN psmpi-5.2.0-1.old/mpich2/src/env/mpifort.bash.in psmpi-5.2.0-1/mpich2/src/env/mpifort.bash.in +--- psmpi-5.2.0-1.old/mpich2/src/env/mpifort.bash.in 2017-03-08 20:47:13.160276506 +0100 ++++ psmpi-5.2.0-1/mpich2/src/env/mpifort.bash.in 2017-03-08 20:48:08.913947609 +0100 +@@ -1,4 +1,4 @@ +-#! @BASH_SHELL@ ++#!/usr/bin/env bash + ## + ## (C) 2006 by Argonne National Laboratory. + ## See COPYRIGHT in top-level directory. diff --git a/Golden_Repo/u/UCX-settings/UCX-settings-DC-CUDA.eb b/Golden_Repo/u/UCX-settings/UCX-settings-DC-CUDA.eb new file mode 100644 index 0000000000000000000000000000000000000000..d335c8261eb2457db6ff040f80958482ca89a53d --- /dev/null +++ b/Golden_Repo/u/UCX-settings/UCX-settings-DC-CUDA.eb @@ -0,0 +1,25 @@ +easyblock = 'SystemBundle' + +name = 'UCX-settings' +version = 'DC-CUDA' + +homepage = '' +description = ''' +This module sets UCX to use DC as the transport layer, together with the CUWA-aware transports. +The maximum number of rails is limited to 1 to avoid pitfalls of blindly using multiple rails. +''' + +toolchain = SYSTEM + +source_urls = [] + +sources = [] +modextravars = { + 'UCX_TLS': 'dc_x,self,sm,cuda_ipc,gdr_copy,cuda_copy', + # Since most users do not share HCAs for a single process, it does not make sense to enable this in most cases. + # It actually has the side effect of using Ethernet and IB ports on JUSUF, which end up saturating the ethernet + # fabric and result in a slow down + 'UCX_MAX_RNDV_RAILS': '1', +} + +moduleclass = 'system' diff --git a/Golden_Repo/u/UCX-settings/UCX-settings-DC.eb b/Golden_Repo/u/UCX-settings/UCX-settings-DC.eb new file mode 100644 index 0000000000000000000000000000000000000000..318ad964f59969258a0d89b11a2659199406dced --- /dev/null +++ b/Golden_Repo/u/UCX-settings/UCX-settings-DC.eb @@ -0,0 +1,25 @@ +easyblock = 'SystemBundle' + +name = 'UCX-settings' +version = 'DC' + +homepage = '' +description = ''' +This module sets UCX to use DC as the transport layer. +The maximum number of rails is limited to 1 to avoid pitfalls of blindly using multiple rails. +''' + +toolchain = SYSTEM + +source_urls = [] + +sources = [] +modextravars = { + 'UCX_TLS': 'dc_x,self,sm', + # Since most users do not share HCAs for a single process, it does not make sense to enable this in most cases. + # It actually has the side effect of using Ethernet and IB ports on JUSUF, which end up saturating the ethernet + # fabric and result in a slow down + 'UCX_MAX_RNDV_RAILS': '1', +} + +moduleclass = 'system' diff --git a/Golden_Repo/u/UCX-settings/UCX-settings-RC-CUDA.eb b/Golden_Repo/u/UCX-settings/UCX-settings-RC-CUDA.eb new file mode 100644 index 0000000000000000000000000000000000000000..f3d28552145c2e7576c6060e8af92ca48897a126 --- /dev/null +++ b/Golden_Repo/u/UCX-settings/UCX-settings-RC-CUDA.eb @@ -0,0 +1,25 @@ +easyblock = 'SystemBundle' + +name = 'UCX-settings' +version = 'RC-CUDA' + +homepage = '' +description = ''' +This module sets UCX to use RC as the transport layer, together with the CUWA-aware transports. +The maximum number of rails is limited to 1 to avoid pitfalls of blindly using multiple rails. +''' + +toolchain = SYSTEM + +source_urls = [] + +sources = [] +modextravars = { + 'UCX_TLS': 'rc_x,self,sm,cuda_ipc,gdr_copy,cuda_copy', + # Since most users do not share HCAs for a single process, it does not make sense to enable this in most cases. + # It actually has the side effect of using Ethernet and IB ports on JUSUF, which end up saturating the ethernet + # fabric and result in a slow down + 'UCX_MAX_RNDV_RAILS': '1', +} + +moduleclass = 'system' diff --git a/Golden_Repo/u/UCX-settings/UCX-settings-RC.eb b/Golden_Repo/u/UCX-settings/UCX-settings-RC.eb new file mode 100644 index 0000000000000000000000000000000000000000..7fd77ab1cedccd75718ef8606b8ef9980a17c7d2 --- /dev/null +++ b/Golden_Repo/u/UCX-settings/UCX-settings-RC.eb @@ -0,0 +1,25 @@ +easyblock = 'SystemBundle' + +name = 'UCX-settings' +version = 'RC' + +homepage = '' +description = ''' +This module sets UCX to use RC as the transport layer. +The maximum number of rails is limited to 1 to avoid pitfalls of blindly using multiple rails. +''' + +toolchain = SYSTEM + +source_urls = [] + +sources = [] +modextravars = { + 'UCX_TLS': 'rc_x,self,sm', + # Since most users do not share HCAs for a single process, it does not make sense to enable this in most cases. + # It actually has the side effect of using Ethernet and IB ports on JUSUF, which end up saturating the ethernet + # fabric and result in a slow down + 'UCX_MAX_RNDV_RAILS': '1', +} + +moduleclass = 'system' diff --git a/Golden_Repo/u/UCX-settings/UCX-settings-UD-CUDA.eb b/Golden_Repo/u/UCX-settings/UCX-settings-UD-CUDA.eb new file mode 100644 index 0000000000000000000000000000000000000000..a2d8d373290e1f96e9aa4d79bb968a0b54ed583a --- /dev/null +++ b/Golden_Repo/u/UCX-settings/UCX-settings-UD-CUDA.eb @@ -0,0 +1,25 @@ +easyblock = 'SystemBundle' + +name = 'UCX-settings' +version = 'UD-CUDA' + +homepage = '' +description = ''' +This module sets UCX to use UD as the transport layer, together with the CUWA-aware transports. +The maximum number of rails is limited to 1 to avoid pitfalls of blindly using multiple rails. +''' + +toolchain = SYSTEM + +source_urls = [] + +sources = [] +modextravars = { + 'UCX_TLS': 'ud_x,self,sm,cuda_ipc,gdr_copy,cuda_copy', + # Since most users do not share HCAs for a single process, it does not make sense to enable this in most cases. + # It actually has the side effect of using Ethernet and IB ports on JUSUF, which end up saturating the ethernet + # fabric and result in a slow down + 'UCX_MAX_RNDV_RAILS': '1', +} + +moduleclass = 'system' diff --git a/Golden_Repo/u/UCX-settings/UCX-settings-UD.eb b/Golden_Repo/u/UCX-settings/UCX-settings-UD.eb new file mode 100644 index 0000000000000000000000000000000000000000..2c6588fc76aa60dba97514a866cdb6ad466603b3 --- /dev/null +++ b/Golden_Repo/u/UCX-settings/UCX-settings-UD.eb @@ -0,0 +1,25 @@ +easyblock = 'SystemBundle' + +name = 'UCX-settings' +version = 'UD' + +homepage = '' +description = ''' +This module sets UCX to use UD as the transport layer. +The maximum number of rails is limited to 1 to avoid pitfalls of blindly using multiple rails. +''' + +toolchain = SYSTEM + +source_urls = [] + +sources = [] +modextravars = { + 'UCX_TLS': 'ud_x,self,sm', + # Since most users do not share HCAs for a single process, it does not make sense to enable this in most cases. + # It actually has the side effect of using Ethernet and IB ports on JUSUF, which end up saturating the ethernet + # fabric and result in a slow down + 'UCX_MAX_RNDV_RAILS': '1', +} + +moduleclass = 'system' diff --git a/Golden_Repo/u/UCX-settings/UCX-settings-plain.eb b/Golden_Repo/u/UCX-settings/UCX-settings-plain.eb new file mode 100644 index 0000000000000000000000000000000000000000..31076312770265601177fb1a86a5b3898d70dfc4 --- /dev/null +++ b/Golden_Repo/u/UCX-settings/UCX-settings-plain.eb @@ -0,0 +1,15 @@ +easyblock = 'SystemBundle' + +name = 'UCX-settings' +version = 'plain' + +homepage = '' +description = 'This module sets UCX to rely on its internal heuristics for transport selection.' + +toolchain = SYSTEM + +source_urls = [] + +sources = [] + +moduleclass = 'system' diff --git a/Golden_Repo/u/UCX/UCX-default.eb b/Golden_Repo/u/UCX/UCX-default.eb new file mode 100644 index 0000000000000000000000000000000000000000..3d541586a62d7c81c5b951da51a524d454274acb --- /dev/null +++ b/Golden_Repo/u/UCX/UCX-default.eb @@ -0,0 +1,77 @@ +easyblock = 'ConfigureMake' + +name = 'UCX' +version = 'default' +local_realversion = '1.13.1' + +homepage = 'https://www.openucx.org/' +description = """Unified Communication X +An open-source production grade communication framework for data centric +and high-performance applications +""" + +toolchain = SYSTEM +toolchainopts = {'pic': True} + +source_urls = [f'https://github.com/openucx/ucx/releases/download/v{local_realversion}'] +sources = ['%%(namelower)s-%s.tar.gz' % local_realversion] +checksums = ['efc37829b68e131d2acc82a3fd4334bfd611156a756837ffeb650ab9a9dd3828'] + +builddependencies = [ + ('binutils', '2.38'), + ('Autotools', '20220317'), + ('pkgconf', '1.8.0'), +] + +osdependencies = [OS_PKG_IBVERBS_DEV] + +dependencies = [ + ('zlib', '1.2.12'), + ('numactl', '2.0.15'), + ('CUDA', '11.7.0'), +] + +configopts = '--with-verbs ' # Build OpenFabrics support +configopts += '--without-java ' +configopts += '--disable-doxygen-doc ' + +# Enable machine-specific optimizations, default: NO +configopts += '--enable-optimizations ' +# configopts += '--enable-tuning ' # Enable parameter tuning in run-time, default: NO +# Enable thread support in UCP and UCT, default: NO +configopts += '--enable-mt ' +configopts += '--disable-debug ' +configopts += '--disable-logging ' +configopts += '--disable-assertions ' +configopts += '--disable-params-check ' +configopts += '--disable-dependency-tracking ' +configopts += '--with-cuda=$EBROOTCUDA ' + +configopts += '--enable-cma ' # Enable Cross Memory Attach + +# Compile with IB Reliable Connection support +configopts += '--with-rc ' +# Compile with IB Unreliable Datagram support +configopts += '--with-ud ' +# Compile with IB Dynamic Connection support +configopts += '--with-dc ' +configopts += '--with-mlx5-dv ' # Compile with mlx5 Direct Verbs support +configopts += '--with-ib-hw-tm ' # Compile with IB Tag Matching support +configopts += '--with-dm ' # Compile with Device Memory support + +configopts += '--with-avx ' # Compile with AVX +configopts += '--with-gdrcopy ' # Compile with GDRCopy + +# Compile without IB Connection Manager support +configopts += '--without-cm ' + +buildopts = 'V=1' + +sanity_check_paths = { + 'files': ['bin/ucx_info', 'bin/ucx_perftest', 'bin/ucx_read_profile'], + 'dirs': ['include', 'lib', 'share'] +} + +sanity_check_commands = ["ucx_info -d"] + +moduleclass = 'system' diff --git a/Overlays/hdfml_overlay/p/psmpi/psmpi-5.5.0-1-GCC-11.2.0.eb b/Overlays/hdfml_overlay/p/psmpi/psmpi-5.5.0-1-GCC-11.2.0.eb new file mode 100644 index 0000000000000000000000000000000000000000..8802bddf14805efd46c070ca7275acf4f1d98247 --- /dev/null +++ b/Overlays/hdfml_overlay/p/psmpi/psmpi-5.5.0-1-GCC-11.2.0.eb @@ -0,0 +1,45 @@ +name = 'psmpi' +version = '5.6.0-1' + +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://github.com/ParaStation/psmpi/archive/'] +checksums = [ + # psmpi-5.6.0-1.tar.gz + 'bb532c9cc49da31384bb7d73faccf0be224317bc5b055723095c3965f7ad6209', + '978eb3223c978477c40987f745c07fda26ccbad2f468616faf92f0d71b81a156', # psmpi_shebang.patch +] + +dependencies = [ + ('pscom', '5.6-default', '', SYSTEM), + # 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.0', '', SYSTEM) +] + +patches = [ + 'psmpi_shebang.patch', + # We don't have IME in HDFML so we skip this + # 'psmpi-5.5.0-1_ime.patch' +] + +# We don't have IME in HDFML so we skip this +# mpich_opts = '--enable-static --with-file-system=ime+ufs+gpfs --enable-romio' +# +# preconfigopts += 'export CFLAGS="-I/opt/ddn/ime/include $CFLAGS" && ' +# preconfigopts += 'export LDFLAGS="$LDFLAGS -L/opt/ddn/ime/lib -lim_client" && ' +mpich_opts = '--enable-static --with-file-system=ufs+gpfs --enable-romio' + +threaded = False + +cuda = True + +moduleclass = 'mpi' diff --git a/bin/gcc11ize.py b/bin/gcc11ize.py index 90e69bac02ca8b2ff67804dcbc744311c0dec7bf..bc8dcd498b8963d7ec77e52adbbe67aa5151095a 100755 --- a/bin/gcc11ize.py +++ b/bin/gcc11ize.py @@ -14,18 +14,18 @@ releases = { 'ATK': ['2.36.0', '2.36.0'], 'AT-SPI2-ATK': ['2.34.2', '2.38.0'], 'AT-SPI2-core': ['2.36.0', '2.40.3'], - 'Autotools': ['20200321', '20210726'], + 'Autotools': ['20210726', '20220317'], 'archspec': ['0.1.0', '0.1.3'], - 'binutils': ['2.36.1', '2.37'], + 'binutils': ['2.37', '2.38'], 'Bison': ['3.6.4', '3.7.6'], 'Boost': ['1.74.0', '1.78.0'], 'Boost.Python': ['1.74.0', '1.78.0'], 'cairo': ['1.17.2', '1.16.0'], - 'CMake': ['3.18.0', '3.21.1'], + 'CMake': ['3.21.1', '3.23.1'], 'CGAL': ['5.1', '5.2'], 'Clang': ['11.0.1', '13.0.1'], 'Coreutils': ['8.32', '9.0'], - 'CUDA': ['11.3', '11.5'], + 'CUDA': ['11.5', '11.7.0'], 'cuDNN': ['8.2.1.32', '8.2.2.26'], 'cURL': ['7.71.1', '7.78.0'], 'dask': ['2.22.0', '2021.9.1'], @@ -43,7 +43,7 @@ releases = { 'g2lib': ['3.1.0', '3.2.0'], 'g2clib': ['1.6.0', '1.6.3'], 'gc': ['8.0.2', '8.2.0'], - 'GCC': ['10.3.0', '11.2.0'], + 'GCC': ['11.2.0', '11.3.0'], 'GDAL': ['3.1.2', '3.3.2'], 'gcccoremkl': ['10.3.0-2021.2.0', '11.2.0-2021.4.0'], 'gnuplot': ['5.2.8', '5.4.2'], @@ -88,7 +88,7 @@ releases = { 'LibTIFF': ['4.1.0', '4.3.0'], 'libunwind': ['1.4,0', '1.5.0'], 'libxc': ['5.1.5', '5.1.6'], - 'libxml2': ['2.9.10', '2.9.10'], + 'libxml2': ['2.9.10', '2.9.13'], 'LLVM': ['10.0.1', '13.0.0'], 'M4': ['1.4.18', '1.4.19'], 'Mako': ['1.1.3', '1.1.4'], @@ -99,7 +99,7 @@ releases = { 'Ninja': ['1.10.0', '1.10.2'], 'NSS': ['3.51', '3.69'], 'netCDF': ['4.7.4', '4.8.1'], - 'numactl': ['2.0.13', '2.0.14'], + 'numactl': ['2.0.14', '2.0.15'], 'OpenEXR': ['2.5.2', '3.1.1'], 'OpenGL': ['2020', '2021b'], 'Pango': ['1.44.7', '1.48.8'], @@ -139,7 +139,7 @@ releases = { 'X11': ['20200222', '20210802'], 'x264': ['20200912', '20210613'], 'XServer': ['1.20.9', '1.20.13'], - 'zlib': ['1.2.11', '1.2.11'], + 'zlib': ['1.2.11', '1.2.12'], 'zstd': ['1.4.9', '1.5.0'], }