From 0993e12984c751b99144c0ae1f219c931e93e196 Mon Sep 17 00:00:00 2001 From: Lukas Krupcik Date: Mon, 19 Aug 2024 10:30:48 +0200 Subject: [PATCH] new file: c/CUDA/CUDA-12.6.0.eb new file: g/GDRCopy/GDRCopy-2.1-GCCcore-10.2.0-CUDA-11.6.0.eb new file: h/hwloc/hwloc-1.11.6-GCCcore-12.2.0.eb new file: m/MVAPICH2/MVAPICH2-2.2-GCC-9.3.0.eb new file: o/OpenMPI/OpenMPI-2.1.0-GCC-12.2.0.eb modified: o/OpenMX/OpenMX-3.9-foss-2022b.eb modified: u/UCX/UCX-1.12.0-GCC-10.2.0-CUDA-11.6.0.eb --- c/CUDA/CUDA-12.6.0.eb | 17 ++++++ .../GDRCopy-2.1-GCCcore-10.2.0-CUDA-11.6.0.eb | 60 +++++++++++++++++++ h/hwloc/hwloc-1.11.6-GCCcore-12.2.0.eb | 45 ++++++++++++++ m/MVAPICH2/MVAPICH2-2.2-GCC-9.3.0.eb | 31 ++++++++++ o/OpenMPI/OpenMPI-2.1.0-GCC-12.2.0.eb | 42 +++++++++++++ o/OpenMX/OpenMX-3.9-foss-2022b.eb | 29 ++++++--- u/UCX/UCX-1.12.0-GCC-10.2.0-CUDA-11.6.0.eb | 2 + 7 files changed, 219 insertions(+), 7 deletions(-) create mode 100644 c/CUDA/CUDA-12.6.0.eb create mode 100644 g/GDRCopy/GDRCopy-2.1-GCCcore-10.2.0-CUDA-11.6.0.eb create mode 100644 h/hwloc/hwloc-1.11.6-GCCcore-12.2.0.eb create mode 100644 m/MVAPICH2/MVAPICH2-2.2-GCC-9.3.0.eb create mode 100644 o/OpenMPI/OpenMPI-2.1.0-GCC-12.2.0.eb diff --git a/c/CUDA/CUDA-12.6.0.eb b/c/CUDA/CUDA-12.6.0.eb new file mode 100644 index 00000000..a6303235 --- /dev/null +++ b/c/CUDA/CUDA-12.6.0.eb @@ -0,0 +1,17 @@ +name = 'CUDA' +version = '12.6.0' +local_nv_version = '560.28.03' + +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/local_installers/'] +sources = ['cuda_%%(version)s_%s_linux%%(cudaarch)s.run' % local_nv_version] +checksums = ['9223c4af3aebe4a7bbed9abd9b163b03a1b34b855fbc2b4a0d1b706ac09a5a16'] + +moduleclass = 'system' diff --git a/g/GDRCopy/GDRCopy-2.1-GCCcore-10.2.0-CUDA-11.6.0.eb b/g/GDRCopy/GDRCopy-2.1-GCCcore-10.2.0-CUDA-11.6.0.eb new file mode 100644 index 00000000..abfd60c2 --- /dev/null +++ b/g/GDRCopy/GDRCopy-2.1-GCCcore-10.2.0-CUDA-11.6.0.eb @@ -0,0 +1,60 @@ +# IT4Innovations 2024 +# BS + +easyblock = 'ConfigureMake' + +name = 'GDRCopy' +version = '2.1' +versionsuffix = '-CUDA-11.6.0' + +homepage = 'https://github.com/NVIDIA/gdrcopy' +description = "A low-latency GPU memory copy library based on NVIDIA GPUDirect RDMA technology." + +toolchain = {'name': 'GCCcore', 'version': '10.2.0'} +toolchainopts = {'pic': True} + +github_account = 'NVIDIA' +source_urls = [GITHUB_SOURCE] +sources = ['v%(version)s.tar.gz'] +checksums = ['cecc7dcc071107f77396f5553c9109790b6d2298ae29eb2dbbdd52b2a213e4ea'] + +builddependencies = [ + ('binutils', '2.35'), + ('Autotools', '20200321'), + ('pkg-config', '0.29.2'), +] + +dependencies = [ + ('Check', '0.15.2'), + ('CUDAcore', '11.6.0', '', True), +] + +# This easyconfig only installs the library and binaries of GDRCopy. Please +# keep in mind that GDRCopy also needs the following kernel modules at runtime: +# +# 1. Kernel module for GDRCopy: improves Host to GPU communication +# https://github.com/NVIDIA/gdrcopy +# RPM: 'gdrcopy-kmod', DEB: 'gdrdrv-dkms' +# Requirements: version of GDRCopy kernel module (gdrdrv.ko) >= 2.0 +# +# 2. (optional) Kernel module for GPUDirect RDMA: improves GPU to GPU communication +# https://github.com/Mellanox/nv_peer_memory +# RPM: 'nvidia_peer_memory' +# Requirements: Mellanox HCA with MLNX_OFED 2.1 +# +# These kernel modules are not listed as system dependencies to lower the system +# requirements to build this easyconfig, as they are not needed for the build. + +skipsteps = ['configure'] + +local_envopts = "PREFIX=%(installdir)s CUDA=$EBROOTCUDACORE" +prebuildopts = "PATH=$PATH:/sbin " # ensures that ldconfig is found +buildopts = "config lib exes %s" % local_envopts +installopts = local_envopts + +sanity_check_paths = { + 'files': ['bin/copybw', 'bin/copylat', 'bin/sanity', 'lib/libgdrapi.%s' % SHLIB_EXT], + 'dirs': ['include'], +} + +moduleclass = 'lib' diff --git a/h/hwloc/hwloc-1.11.6-GCCcore-12.2.0.eb b/h/hwloc/hwloc-1.11.6-GCCcore-12.2.0.eb new file mode 100644 index 00000000..d4892bd8 --- /dev/null +++ b/h/hwloc/hwloc-1.11.6-GCCcore-12.2.0.eb @@ -0,0 +1,45 @@ +easyblock = 'ConfigureMake' + +name = 'hwloc' +version = '1.11.6' + +homepage = 'https://www.open-mpi.org/projects/hwloc/' + +description = """ + The Portable Hardware Locality (hwloc) software package provides a portable + abstraction (across OS, versions, architectures, ...) of the hierarchical + topology of modern architectures, including NUMA memory nodes, sockets, shared + caches, cores and simultaneous multithreading. It also gathers various system + attributes such as cache and memory information as well as the locality of I/O + devices such as network interfaces, InfiniBand HCAs or GPUs. It primarily + aims at helping applications with gathering information about modern computing + hardware so as to exploit it accordingly and efficiently. +""" + +toolchain = {'name': 'GCCcore', 'version': '12.2.0'} + +source_urls = ['https://www.open-mpi.org/software/hwloc/v%(version_major_minor)s/downloads/'] +sources = [SOURCE_TAR_GZ] +checksums = ['20b2bd4df436827d8e50f7afeafb6f967259f2fb374ce7330244f8d0ed2dde6f'] + +builddependencies = [ + ('binutils', '2.39'), +] + +dependencies = [ + ('numactl', '2.0.16'), + ('libxml2', '2.10.3'), + ('libpciaccess', '0.17'), +] + +configopts = "--enable-libnuma=$EBROOTNUMACTL " +configopts += "--disable-cairo --disable-opencl --disable-cuda --disable-nvml --disable-gl --disable-libudev " + +sanity_check_paths = { + 'files': ['bin/lstopo', 'include/hwloc/linux.h', + 'lib/libhwloc.%s' % SHLIB_EXT], + 'dirs': ['share/man/man3'], +} +sanity_check_commands = ['lstopo'] + +moduleclass = 'system' diff --git a/m/MVAPICH2/MVAPICH2-2.2-GCC-9.3.0.eb b/m/MVAPICH2/MVAPICH2-2.2-GCC-9.3.0.eb new file mode 100644 index 00000000..25dc3d16 --- /dev/null +++ b/m/MVAPICH2/MVAPICH2-2.2-GCC-9.3.0.eb @@ -0,0 +1,31 @@ +# IT4Innovations 2024 + +name = 'MVAPICH2' +version = '2.2' + +homepage = 'http://mvapich.cse.ohio-state.edu/overview/mvapich2/' +description = "This is an MPI 3.0 implementation. It is based on MPICH2 and MVICH." + +toolchain = {'name': 'GCC', 'version': '9.3.0'} + +source_urls = ['http://mvapich.cse.ohio-state.edu/download/mvapich/mv2/'] +sources = [SOURCELOWER_TAR_GZ] + +checksums = [ + '27bb56bd4d1582d33ad32108fb239b546bdd1bdffd6f5b739b4423da1ab93ae2', +] + +preconfigopts = 'unset F90 && unset FC && unset F90FLAGS && unset FCFLAGS && ' + +configopts = "--enable-btl-openib-failover --with-tm=/opt/pbs/default --with-openib " +configopts += "--enable-threads=runtime --enable-shared --with-device=ch3:nemesis " +configopts += "--disable-rdma-cm --enable-romio" #--with-file-system=lustre+nfs " + +builddependencies = [('Bison', '3.5.3')] + +sanity_check_paths = { + 'files': ['lib/libmpicxx.a'], + 'dirs': ['include'] +} + +moduleclass = 'mpi' diff --git a/o/OpenMPI/OpenMPI-2.1.0-GCC-12.2.0.eb b/o/OpenMPI/OpenMPI-2.1.0-GCC-12.2.0.eb new file mode 100644 index 00000000..05fecfe1 --- /dev/null +++ b/o/OpenMPI/OpenMPI-2.1.0-GCC-12.2.0.eb @@ -0,0 +1,42 @@ +#IT4Innovations +#BS 2024 + + +easyblock = 'ConfigureMake' + +name = 'OpenMPI' +version = '2.1.0' + +homepage = 'https://www.open-mpi.org/' +description = """The Open MPI Project is an open source MPI-2 implementation.""" + +toolchain = {'name': 'GCC', 'version': '12.2.0'} + +source_urls = ['https://www.open-mpi.org/software/ompi/v%(version_major_minor)s/downloads'] +sources = [SOURCELOWER_TAR_GZ] +patches = ['OpenMPI-2.1_fix-ib-query.patch'] +checksums = [ + '265a9c64a468cce464edd069ed8612e1865c5f112f84f4a7a855fb2a0d15e74b', # openmpi-2.1.0.tar.gz + '662d7ef1d0cd0890d2dc4ecb5243012be29bf6b4003da0f006e7cd2125d40e4c', # OpenMPI-2.1_fix-ib-query.patch +] + +dependencies = [('hwloc', '1.11.6')] + +configopts = '--enable-shared --enable-mpi-thread-multiple --with-verbs ' +configopts += '--enable-mpirun-prefix-by-default ' # suppress failure modes in relation to mpirun path +configopts += '--with-hwloc=$EBROOTHWLOC ' # hwloc support +configopts += '--without-ucx ' # hard disable UCX, to dance around bug (https://github.com/open-mpi/ompi/issues/4345) + +# needed for --with-verbs +osdependencies = [('libibverbs-dev', 'libibverbs-devel', 'rdma-core-devel')] + +local_libs = ["mpi_mpifh", "mpi", "ompitrace", "open-pal", "open-rte"] +sanity_check_paths = { + 'files': ["bin/%s" % x for x in ["ompi_info", "opal_wrapper", "orterun"]] + + ["lib/lib%s.%s" % (x, SHLIB_EXT) for x in local_libs] + + ["include/%s.h" % x for x in ["mpi-ext", "mpif-config", "mpif", "mpi", "mpi_portable_platform"]], + 'dirs': [], +} + +moduleclass = 'mpi' + diff --git a/o/OpenMX/OpenMX-3.9-foss-2022b.eb b/o/OpenMX/OpenMX-3.9-foss-2022b.eb index 97234f9f..6c1ee0d3 100644 --- a/o/OpenMX/OpenMX-3.9-foss-2022b.eb +++ b/o/OpenMX/OpenMX-3.9-foss-2022b.eb @@ -4,6 +4,8 @@ name = 'OpenMX' version = '3.9' +easyblock = 'MakeCp' + homepage = 'http://www.openmx-square.org/index.html' description = """OpenMX (Open source package for Material eXplorer) is a software package for nano-scale material simulations based on density functional @@ -15,33 +17,46 @@ toolchain = {'name': 'foss', 'version': '2022b'} toolchainopts = {'usempi': True, 'openmp': True} source_urls = [ - 'http://t-ozaki.issp.u-tokyo.ac.jp/openmx%(version).tar.gz', + 'https://www.openmx-square.org/', 'http://www.openmx-square.org/bugfixed/21Oct17/' ] sources = [ { - 'filename': 'openmx%(version).tgz', - 'extract_cmd': 'mkdir -p %(builddir)s/openmx-%(version) && tar xzvf %s --strip-components=1 -C $_', + 'filename': 'openmx3.9.tar.gz', + 'extract_cmd': 'mkdir -p %(builddir)s/openmx3.9 && tar xzvf %s --strip-components=1 -C $_', }, { - 'filename': 'patch%(version).9.tar.gz', + 'filename': 'patch3.9.9.tar.gz', 'download_filename': 'patch%(version).9.tar.gz', 'source_urls': ['http://www.openmx-square.org/bugfixed/21Oct17/'] }, ] checksums = [ - '27bb56bd4d1582d33ad32108fb239b546bdd1bdffd6f5b739b4423da1ab93ae', # openmx3.9.tar.gz - '20cccc4e3412a814a53568f400260e90f79f0bfb7e2bed84447fe071b26edd3', # patch3.9.9.tar.gz + '27bb56bd4d1582d33ad32108fb239b546bdd1bdffd6f5b739b4423da1ab93ae2', # openmx3.9.tar.gz + '20cccc4e3412a814a53568f400260e90f79f0bfb7e2bed84447fe071b26edd38', # patch3.9.9.tar.gz ] dependencies = [ ('LAPACK', '3.10.0'), ('ELPA', '2022.05.001'), + ('FFTW', '3.3.10'), + ('OpenMPI', '4.1.4'), ] + +files_to_copy = [ + ('%(sourcepath)s/patch3.9.9.tar.gz', '%(builddir)s/openmx3.9/source'), + ('%(sourcepath)s/kpoint.in', '%(sourcepath)s/openmx3.9/work') +] + +#build_cmd = 'cd %(builddir)s/openmx3.9/source && sed -i "s/-xHOST//g" makefile && sed -i "s/-ip//g" makefile && make CFLAGS="-O3 -no-prec-div -fopenmp"' + + +build_cmd = 'cd /dev/shm/easybuild/build/OpenMX/3.9/foss-2022b/openmx3.9/source && sed -i "s/-xHOST//g" makefile && sed -i "s/-ip//g" makefile && sed -i "s/-qopenmp/-fopenmp/g" makefile && sed -i "s/-no-prec-div//g" makefile && make CFLAGS="-O3 -fopenmp"' + # The third party packages should be installed separately and added as # dependencies. The exception is w90, which is force built -buildopts = 'all' +#buildopts = 'all' # parallel build tends to fail parallel = 1 diff --git a/u/UCX/UCX-1.12.0-GCC-10.2.0-CUDA-11.6.0.eb b/u/UCX/UCX-1.12.0-GCC-10.2.0-CUDA-11.6.0.eb index 2ba17d25..44515b7b 100644 --- a/u/UCX/UCX-1.12.0-GCC-10.2.0-CUDA-11.6.0.eb +++ b/u/UCX/UCX-1.12.0-GCC-10.2.0-CUDA-11.6.0.eb @@ -30,11 +30,13 @@ osdependencies = [OS_PKG_IBVERBS_DEV] dependencies = [ ('numactl', '2.0.13'), ('CUDAcore', '11.6.0', '', True), + ('GDRCopy', '2.1', '-GCCcore-10.2.0-CUDA-11.6.0', True), ] configure_cmd = "contrib/configure-release" configopts = '--enable-optimizations --enable-cma --enable-mt --with-verbs --with-gdrcopy=$EBROOTGDRCOPY ' + configopts += '--without-java --disable-doxygen-doc --with-cuda=$EBROOTCUDACORE ' buildopts = 'V=1'