From 59cb4282661248180a0eaed8ce55287e24992ef0 Mon Sep 17 00:00:00 2001 From: Lukas Krupcik Date: Wed, 22 Nov 2023 09:21:06 +0100 Subject: [PATCH] new file: a/ADIOS2/ADIOS2-2.7.0-gompi-2020e.eb new file: c/c-blosc/c-blosc-1.21.0-GCC-10.3.0.eb new file: g/gompi/gompi-2020e.eb new file: h/HDF5/HDF5-1.12.0-gompi-2020e.eb new file: l/libfabric/libfabric-1.11.0-GCCcore-10.3.0.eb new file: o/OpenMPI/OpenMPI-4.1.4-GCC-10.3.0-CUDA-11.3.1.eb new file: o/openPMD-api/openPMD-api-0.14.4-gompi-2020e.eb new file: p/PNGwriter/PNGwriter-0.7.0-GCC-10.3.0.eb --- a/ADIOS2/ADIOS2-2.7.0-gompi-2020e.eb | 40 +++++++++ c/c-blosc/c-blosc-1.21.0-GCC-10.3.0.eb | 33 +++++++ g/gompi/gompi-2020e.eb | 23 +++++ h/HDF5/HDF5-1.12.0-gompi-2020e.eb | 28 ++++++ .../libfabric-1.11.0-GCCcore-10.3.0.eb | 48 ++++++++++ .../OpenMPI-4.1.4-GCC-10.3.0-CUDA-11.3.1.eb | 87 +++++++++++++++++++ .../openPMD-api-0.14.4-gompi-2020e.eb | 40 +++++++++ p/PNGwriter/PNGwriter-0.7.0-GCC-10.3.0.eb | 40 +++++++++ 8 files changed, 339 insertions(+) create mode 100644 a/ADIOS2/ADIOS2-2.7.0-gompi-2020e.eb create mode 100644 c/c-blosc/c-blosc-1.21.0-GCC-10.3.0.eb create mode 100644 g/gompi/gompi-2020e.eb create mode 100644 h/HDF5/HDF5-1.12.0-gompi-2020e.eb create mode 100644 l/libfabric/libfabric-1.11.0-GCCcore-10.3.0.eb create mode 100644 o/OpenMPI/OpenMPI-4.1.4-GCC-10.3.0-CUDA-11.3.1.eb create mode 100644 o/openPMD-api/openPMD-api-0.14.4-gompi-2020e.eb create mode 100644 p/PNGwriter/PNGwriter-0.7.0-GCC-10.3.0.eb diff --git a/a/ADIOS2/ADIOS2-2.7.0-gompi-2020e.eb b/a/ADIOS2/ADIOS2-2.7.0-gompi-2020e.eb new file mode 100644 index 00000000..aac8ffa9 --- /dev/null +++ b/a/ADIOS2/ADIOS2-2.7.0-gompi-2020e.eb @@ -0,0 +1,40 @@ +# IT4Innovations +# BS 2023 + +easyblock = "CMakeMake" + +name = "ADIOS2" +version = "2.7.0" + +homepage = 'https://github.com/ornladios/ADIOS2/' +description = """This is ADIOS2: The Adaptable Input/Output (I/O) System. +ADIOS2 is developed as part of the United States Department of Energy's Exascale Computing +Project. It is a framework for scientific data I/O to publish and subscribe to data when +and where required. +ADIOS2 transports data as groups of self-describing variables and attributes across different +media types (such as files, wide-area-networks, and remote direct memory access) using a +common application programming interface for all transport modes. ADIOS2 can be used on +supercomputers, cloud systems, and personal computers. """ + +toolchain = {'name': 'gompi', 'version': '2020e'} + +source_urls = ['https://github.com/ornladios/ADIOS2/archive/refs/tags/'] +sources = ['v%(version)s.tar.gz'] +checksums = ['4b5df1a1f92d7ff380416dec7511cfcfe3dc44da27e486ed63c3e6cffb173924'] + +builddependencies = [('CMake', '3.20.1')] + +dependencies = [ + ('HDF5', '1.12.0'), + ('c-blosc', '1.21.0'), + ('libfabric', '1.12.1'), +] + +separate_build_dir = True + +sanity_check_paths = { + 'files': ['bin/adios2-config', 'include/adios2.h', 'include/adios2_c.h'], + 'dirs': ['bin', 'include', 'lib64'] +} + +moduleclass = 'tools' diff --git a/c/c-blosc/c-blosc-1.21.0-GCC-10.3.0.eb b/c/c-blosc/c-blosc-1.21.0-GCC-10.3.0.eb new file mode 100644 index 00000000..34e5c490 --- /dev/null +++ b/c/c-blosc/c-blosc-1.21.0-GCC-10.3.0.eb @@ -0,0 +1,33 @@ +# IT4Innovations +# BS 2023 + +easyblock = "CMakeMake" + +name = "c-blosc" +version = "1.21.0" + +homepage = 'https://github.com/Blosc/c-blosc' +description = """Blosc is a high performance compressor optimized for binary +data. It has been designed to transmit data to the processor cache faster than +the traditional, non-compressed, direct memory fetch approach via a memcpy() OS + call. Blosc is the first compressor (that I'm aware of) that is meant not +only to reduce the size of large datasets on-disk or in-memory, but also to +accelerate memory-bound computations. +""" + +toolchain = {'name': 'GCC', 'version': '10.3.0'} + +source_urls = ['https://github.com/Blosc/c-blosc/archive/refs/tags/'] +sources = ['v%(version)s.tar.gz'] +checksums = ['b0ef4fda82a1d9cbd11e0f4b9685abf14372db51703c595ecd4d76001a8b342d'] + +builddependencies = [('CMake', '3.20.1')] + +separate_build_dir = True + +sanity_check_paths = { + 'files': ['include/blosc.h', 'include/blosc-export.h', 'lib/libblosc.a'], + 'dirs': ['include', 'lib'] +} + +moduleclass = 'tools' diff --git a/g/gompi/gompi-2020e.eb b/g/gompi/gompi-2020e.eb new file mode 100644 index 00000000..7ae8a72b --- /dev/null +++ b/g/gompi/gompi-2020e.eb @@ -0,0 +1,23 @@ +# IT4Innovations +# LK 2023 + +easyblock = "Toolchain" + +name = 'gompi' +version = '2020e' + +homepage = '(none)' +description = """GNU Compiler Collection (GCC) based local_compiler toolchain, + including OpenMPI for MPI support.""" + +toolchain = SYSTEM + +local_gccver = '10.3.0' + +# local_compiler toolchain dependencies +dependencies = [ + ('GCC', local_gccver), # includes both GCC and local_binutils + ('OpenMPI', '4.1.4', '-CUDA-11.3.1', ('GCC', local_gccver)), +] + +moduleclass = 'toolchain' diff --git a/h/HDF5/HDF5-1.12.0-gompi-2020e.eb b/h/HDF5/HDF5-1.12.0-gompi-2020e.eb new file mode 100644 index 00000000..a0e431b7 --- /dev/null +++ b/h/HDF5/HDF5-1.12.0-gompi-2020e.eb @@ -0,0 +1,28 @@ +# IT4Innoivations +# BS 2023 + +name = 'HDF5' +version = '1.12.0' + +homepage = 'https://portal.hdfgroup.org/display/support' +description = """HDF5 is a data model, library, and file format for storing and managing data. + It supports an unlimited variety of datatypes, and is designed for flexible + and efficient I/O and for high volume and complex data.""" + +toolchain = {'name': 'gompi', 'version': '2020e'} +import os +if os.environ.get("CLUSTERNAME") in ["KAROLINA"]: + toolchainopts = {'optarch': 'march=core-avx2', 'pic': True, 'usempi': True} +else: + toolchainopts = {'pic': True, 'usempi': True} + +source_urls = ['https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-%(version_major_minor)s/hdf5-%(version)s/src'] +sources = [SOURCELOWER_TAR_GZ] +checksums = ['a62dcb276658cb78e6795dd29bf926ed7a9bc4edf6e77025cd2c689a8f97c17a'] + +dependencies = [ + ('zlib', '1.2.11'), + ('Szip', '2.1.1'), +] + +moduleclass = 'data' diff --git a/l/libfabric/libfabric-1.11.0-GCCcore-10.3.0.eb b/l/libfabric/libfabric-1.11.0-GCCcore-10.3.0.eb new file mode 100644 index 00000000..a90b0a48 --- /dev/null +++ b/l/libfabric/libfabric-1.11.0-GCCcore-10.3.0.eb @@ -0,0 +1,48 @@ +# IT4Innovations +# LK 2023 + +easyblock = 'ConfigureMake' + +name = 'libfabric' +version = '1.11.0' + +homepage = 'https://ofiwg.github.io/libfabric/' +description = """ +Libfabric is a core component of OFI. It is the library that defines and exports +the user-space API of OFI, and is typically the only software that applications +deal with directly. It works in conjunction with provider libraries, which are +often integrated directly into libfabric. +""" + +toolchain = {'name': 'GCCcore', 'version': '10.3.0'} +toolchainopts = {'pic': True} + +github_account = 'ofiwg' +source_urls = ['https://github.com/ofiwg/%(name)s/releases/download/v%(version)s'] +sources = [SOURCE_TAR_BZ2] +checksums = ['9938abf628e7ea8dcf60a94a4b62d499fbc0dbc6733478b6db2e6a373c80d58f'] + +builddependencies = [ + ('binutils', '2.36.1'), + ('pkg-config', '0.29.2'), +] + +osdependencies = [OS_PKG_IBVERBS_DEV] + +# Disable deprecated "sockets" provider +configopts = "--disable-sockets " + +# Disable usNIC provider by default as this requires specific osdependencies +# If you want to enable this provider you need to uncomment the following line: +# osdependencies.append(('libnl3-devel', 'libnl3-dev')) +configopts += "--disable-usnic " + +sanity_check_paths = { + 'files': ['bin/fi_info', 'bin/fi_pingpong', 'bin/fi_strerror'] + + ['lib/libfabric.%s' % x for x in ['a', SHLIB_EXT]], + 'dirs': ['include/rdma', 'lib/pkgconfig', 'share'] +} + +sanity_check_commands = ['fi_info'] + +moduleclass = 'lib' diff --git a/o/OpenMPI/OpenMPI-4.1.4-GCC-10.3.0-CUDA-11.3.1.eb b/o/OpenMPI/OpenMPI-4.1.4-GCC-10.3.0-CUDA-11.3.1.eb new file mode 100644 index 00000000..f9afe054 --- /dev/null +++ b/o/OpenMPI/OpenMPI-4.1.4-GCC-10.3.0-CUDA-11.3.1.eb @@ -0,0 +1,87 @@ +# IT4Innovations +# BS 2023 + +name = 'OpenMPI' +version = '4.1.4' +versionsuffix = '-CUDA-11.3.1' + +homepage = 'https://www.open-mpi.org/' +description = """The Open MPI Project is an open source MPI-3 implementation.""" + +toolchain = {'name': 'GCC', 'version': '10.3.0'} + +source_urls = ['https://www.open-mpi.org/software/ompi/v%(version_major_minor)s/downloads'] +sources = [SOURCELOWER_TAR_BZ2] +checksums = [ + '92912e175fd1234368c8730c03f4996fe5942e7479bb1d10059405e7f2b3930d', # openmpi-4.1.4.tar.bz2 +] + +builddependencies = [ + ('pkgconf', '1.8.0'), + ('Perl', '5.32.1'), + ('Autotools', '20210128'), +] + +dependencies = [ + ('zlib', '1.2.11'), + ('hwloc', '2.4.1'), + ('libevent', '2.1.12'), + ('UCX', '1.10.0'), + ('UCX-CUDA', '1.10.0', '-CUDA-11.3.1'), + ('libfabric', '1.12.1'), + ('PMIx', '3.2.3'), + #('UCC', '1.0.0'), + ('CUDA', '11.3.1', '', True), +] + +preconfigopts = './autogen.pl --force && ' + +# IT4I-specific settings + +configopts = '--enable-shared --enable-mpi-thread-multiple --with-verbs ' +configopts += '--enable-mpirun-prefix-by-default ' +configopts += '--with-hwloc=$EBROOTHWLOC ' # hwloc support +configopts += '--with-slurm ' # Enable slurm +configopts += '--enable-mpi-cxx ' # Enable building the C++ MPI bindings +configopts += '--with-ucx=$EBROOTUCX ' +configopts += '--with-cuda=$EBROOTCUDA ' +#configopts += '--with-pmix=/opt/it4i-libs/PMIx/4.2.6 ' + +osdependencies = [('libibverbs-dev', 'libibverbs-devel', 'rdma-core-devel')] + +postinstallcmds = [ + 'echo "# By default, for Open MPI 4.0 and later, infiniband ports on a device are not used by default." >> %(installdir)s/etc/openmpi-mca-params.conf', + 'echo "btl_openib_allow_ib = true" >> %(installdir)s/etc/openmpi-mca-params.conf', +] + +local_libs = ["mpi_mpifh", "mpi", "ompitrace", "open-pal", "open-rte"] +sanity_check_paths = { + 'files': [ + "bin/%s" % + binfile for binfile in [ + "ompi_info", "opal_wrapper", "orterun"]] + [ + "lib/lib%s.%s" % + (libfile, SHLIB_EXT) for libfile in local_libs] + [ + "include/%s.h" % + x for x in [ + "mpi-ext", "mpif-config", "mpif", "mpi", "mpi_portable_platform"]], 'dirs': [], } + +import os +if os.environ.get("CLUSTERNAME") in ["BARBORA"]: + modextravars = {'OMPI_MCA_btl_openib_if_include': 'mlx5_0', + 'OMPI_MCA_btl_tcp_if_include': '10.33.4.0/24', + 'OMPI_MCA_orte_base_help_aggregate': '0', + 'SLURM_MPI_TYPE': 'pmix_v4', + } +elif os.environ.get("CLUSTERNAME") in ["KAROLINA"]: + modextravars = {'OMPI_MCA_btl_openib_if_include': 'mlx5_0', + 'OMPI_MCA_orte_base_help_aggregate': '0', + 'SLURM_MPI_TYPE': 'pmix_v4', + } +else: + modextravars = {'OMPI_MCA_btl_openib_if_include': 'mlx4_0', + 'OMPI_MCA_oob_tcp_if_include': '10.0.0.0/8', + 'SLURM_MPI_TYPE': 'pmix_v4', + } + +moduleclass = 'mpi' diff --git a/o/openPMD-api/openPMD-api-0.14.4-gompi-2020e.eb b/o/openPMD-api/openPMD-api-0.14.4-gompi-2020e.eb new file mode 100644 index 00000000..65b4da54 --- /dev/null +++ b/o/openPMD-api/openPMD-api-0.14.4-gompi-2020e.eb @@ -0,0 +1,40 @@ +# IT4Innovations +# BS 2023 + +easyblock = "CMakeMake" + +name = "openPMD-api" +version = "0.14.4" + +homepage = 'https://github.com/openPMD/openPMD-api' +description = """openPMD is an open meta-data schema that provides meaning and self-description +for data sets in science and engineering. See the openPMD standard for details of this schema. +This library provides a reference API for openPMD data handling. Since openPMD is a schema +(or markup) on top of portable, hierarchical file formats, this library implements various +backends such as HDF5, ADIOS2 and JSON. Writing & reading through those backends and their +associated files are supported for serial and MPI-parallel workflows. +""" + +toolchain = {'name': 'gompi', 'version': '2020e'} + +source_urls = ['https://github.com/openPMD/openPMD-api/archive/refs/tags/'] +sources = ['%(version)s.tar.gz'] +checksums = ['42b7bcd043e772d63f0fe0e5e70da411f001db10096d5b8be797ffc88e786379'] + +builddependencies = [('CMake', '3.20.1')] + +dependencies = [ + ('HDF5', '1.12.0'), + ('ADIOS2', '2.7.0'), +] + +configopts = '-DopenPMD_USE_ADIOS2=ON -DopenPMD_USE_HDF5=ON ' + +separate_build_dir = True + +sanity_check_paths = { + 'files': ['bin/openpmd-ls', 'bin/openpmd-pipe', 'lib/libopenPMD.so'], + 'dirs': ['bin', 'include', 'lib64'] +} + +moduleclass = 'tools' diff --git a/p/PNGwriter/PNGwriter-0.7.0-GCC-10.3.0.eb b/p/PNGwriter/PNGwriter-0.7.0-GCC-10.3.0.eb new file mode 100644 index 00000000..d732573a --- /dev/null +++ b/p/PNGwriter/PNGwriter-0.7.0-GCC-10.3.0.eb @@ -0,0 +1,40 @@ +# IT4Innovations +# LK 2023 + +easyblock = "CMakeMake" + +name = "PNGwriter" +version = "0.7.0" + +homepage = 'https://github.com/pngwriter/pngwriter/' +description = """PNGwriter is a very easy to use open source graphics library +that uses PNG as its output format. The interface has been designed to be as +simple and intuitive as possible. It supports plotting and reading pixels in +the RGB (red, green, blue), HSV (hue, saturation, value/brightness) and CMYK +(cyan, magenta, yellow, black) colour spaces, basic shapes, scaling, bilinear +interpolation, full TrueType antialiased and rotated text support, bezier +curves, opening existing PNG images and more. Documentation in English +(and Spanish up to v0.5.4). Runs under Linux, Unix, Mac OS X and Windows. +Requires libpng and optionally FreeType2 for the text support.""" + +toolchain = {'name': 'GCC', 'version': '10.3.0'} + +source_urls = ['https://github.com/pngwriter/pngwriter/archive/refs/tags/'] +sources = ['%(version)s.tar.gz'] +checksums = ['82d46eef109f434f95eba9cf5908710ae4e75f575fd3858178ad06e800152825'] + +builddependencies = [('CMake', '3.20.1')] + +dependencies = [ + ('freetype', '2.10.4'), + ('libpng', '1.6.37'), +] + +separate_build_dir = True + +sanity_check_paths = { + 'files': ['include/pngwriter.h', 'lib/libPNGwriter.a'], + 'dirs': ['include', 'lib'] +} + +moduleclass = 'lib'