Skip to content

[mpiFileUtils] [package list]

mpiFileUtils/0.11.1-cpeCray-24.03 (mpiFileUtils-0.11.1-cpeCray-24.03.eb)

Install with the EasyBuild-user module:

eb mpiFileUtils-0.11.1-cpeCray-24.03.eb -r
To access module help after installation and get reminded for which stacks and partitions the module is installed, use module spider mpiFileUtils/0.11.1-cpeCray-24.03.

EasyConfig:

# Created for LUMI by Orian Louant
easyblock = 'Bundle'

local_libarchive_version =   '3.7.2'         # https://github.com/libarchive/libarchive/releases

local_libcircle_version  = '0.3.0'
local_lwgrp_version      = '1.0.4'
local_dtcmp_version      = '1.1.4'
local_attr_version       = '2.5.1'

local_dtcmp_checksum        = 'dd83d8cecd68e13b78b68e88675cc5847cde06742b7740e140b98f4a08127dd3'
local_libcircle_checksum    = '5ce38eb5b3c2b394bca1316310758f276c893dd3f4c15d7bc14ea05d3110ce58'
local_lwgrp_checksum        = '0c933df7658660a0225f8e3a940eb2621efa4421397859417c8d90d906d4e90a'
local_attr_checksum         = 'bae1c6949b258a0d68001367ce0c741cebdacdd3b62965d17e5eb23cd78adaf8'
local_mpiFileUtils_checksum = 'cca1e43e16584a95945cf3c0871209c9e6a1ede128032d62141df14cbd08fca2'  

# used for description and sanity check
local_utilities = {
    'dbcast'  :  'Broadcast a file to each compute node.',
    'dbz2'    :  'Compress and decompress a file with bz2.',
    'dchmod'  :  'Change owner, group, and permissions on files.',
    'dcmp'    :  'Compare contents between directories or files.',
    'dcp'     :  'Copy files.',
    'ddup'    :  'Find duplicate files.',
    'dfind'   :  'Filter files.',
    'dreln'   :  'Update symlinks to point to a new path.',
    'drm'     :  'Remove files.',
    'dstripe' :  'Restripe files (Lustre).',
    'dsync'   :  'Synchronize source and destination directories or files.',
    'dtar'    :  'Create and extract tape archive files.',
    'dwalk'   :  'List, sort, and profile files.',
}

name = 'mpiFileUtils'
version = '0.11.1'

homepage = 'https://hpc.github.io/mpifileutils/'
whatis = ['Description: mpiFileUtils is an MPI-based tools to perform basic tasks on large datasets']

description = """

 High-performance computing users generate large datasets using parallel
 applications that can run with thousands of processes. However, users are often
 stuck managing those datasets using traditional single-process tools like cp and
 rm. This mismatch in scale makes it impractical for users to work with their
 data.

 The mpiFileUtils suite solves this problem by offering MPI-based tools for basic
 tasks like copy, remove, and compare for such datasets, delivering orders of
 magnitude in performance speedup over their single-process counterparts.
 Furthermore, the libmfu library packages common functionality to simplify the
 creation of new tools, and it can even be invoked directly from within HPC
 applications.

 The following utilities are included:

%s
""" % '\n'.join(['  - ' + local_util + ': ' + local_desc for local_util, local_desc in local_utilities.items()])

docurls = ['https://mpifileutils.readthedocs.io/en/v%(version)s/']
software_license_urls = ['https://github.com/hpc/mpifileutils/blob/main/LICENSE']

toolchain = {'name': 'cpeCray', 'version': '24.03'}
toolchainopts = {'pic': True, 'extra_cflags': '-Wno-error=implicit-function-declaration -Wno-int-conversion'}

builddependencies = [
    ('buildtools',        '%(toolchain_version)s', '', True),
    ('lustre-includes',   '2.15.1',                '', True),
    ('craype-accel-host', EXTERNAL_MODULE),
]

dependencies = [
    ('libarchive', local_libarchive_version),
]

default_easyblock = 'ConfigureMake'

# The guy that designed the MPI config part should be hanged in the public square
local_craympi_preconfigopts  = 'sed -i \'s/lx_mpi_compile_line=.*/lx_mpi_compile_line=`which $CC`/\' configure && '
local_craympi_preconfigopts += 'sed -i \'s/lx_mpi_link_line=.*/lx_mpi_link_line=`which $CC`/\' configure && '

components = [
    ('attr', local_attr_version, {
        'source_urls' : [GNU_SAVANNAH_SOURCE],
        'sources'     : [SOURCE_TAR_GZ],
        'checksums'   : [local_attr_checksum],
        # I observed possible bad interference with the system libattr
        # favour static linking to avoid problem in certain situations
        'configopts'  : '--disable-shared',
        'start_dir'   : '%(name)s-%(version)s',
    }),
    ('libcircle', local_libcircle_version, {
        'source_urls'   : ['https://github.com/hpc/%(name)s/releases/download/v0.3'],
        'sources'       : ['%(name)s-%(version)s.tar.gz'],
        'checksums'     : [local_libcircle_checksum],
        'preconfigopts' : local_craympi_preconfigopts,
        'start_dir'     : '%(name)s-%(version)s',
    }),
    ('lwgrp', local_lwgrp_version, {
        'source_urls' : ['https://github.com/llnl/%(name)s/releases/download/v%(version)s'],
        'sources'     : ['%(name)s-%(version)s.tar.gz'],
        'checksums'   : [local_lwgrp_checksum],
        'start_dir'   : '%(name)s-%(version)s',
    }),
    ('dtcmp', local_dtcmp_version, {
        'source_urls'   : ['https://github.com/llnl/%(name)s/releases/download/v%(version)s'],
        'sources'       : ['%(name)s-%(version)s.tar.gz'],
        'checksums'     : [local_dtcmp_checksum],
        'preconfigopts' : local_craympi_preconfigopts,
        'configopts'    : '--with-lwgrp=%(installdir)s',
        'start_dir'     : '%(name)s-%(version)s',
    }),
    (name, version, {
        'easyblock'     : 'CMakeMake',
        'source_urls'   : ['https://github.com/hpc/%(namelower)s/releases/download/v%(version)s/'],
        'sources'       : ['%(namelower)s-v0.11.1.tgz'],
        'checksums'     : [local_mpiFileUtils_checksum],
        'configopts'    : '-DENABLE_LUSTRE=ON',
        'start_dir'     : '%(namelower)s-v%(version)s',
    }),
]

sanity_check_paths = {
    'files': ['bin/%s' % local_util for local_util in local_utilities.keys()],
    'dirs' : [],
}

moduleclass = 'tools'

[mpiFileUtils] [package list]