Skip to content

[OSU-Micro-Benchmarks] [package list]

OSU-Micro-Benchmarks/7.3-cpeGNU-23.09-OpenMPI-4.1.6-noCrayWrappers (OSU-Micro-Benchmarks-7.3-cpeGNU-23.09-OpenMPI-4.1.6-noCrayWrappers.eb)

Install with the EasyBuild-user module:

eb OSU-Micro-Benchmarks-7.3-cpeGNU-23.09-OpenMPI-4.1.6-noCrayWrappers.eb -r
To access module help after installation and get reminded for which stacks and partitions the module is installed, use module spider OSU-Micro-Benchmarks/7.3-cpeGNU-23.09-OpenMPI-4.1.6-noCrayWrappers.

EasyConfig:

easyblock = 'ConfigureMake'

local_OpenMPI_version =       '4.1.6'
local_lumi_CPEtools_version = '1.1'

name =          'OSU-Micro-Benchmarks'
version =       '7.3'
versionsuffix = f'-OpenMPI-{local_OpenMPI_version}-noCrayWrappers'

homepage = 'https://mvapich.cse.ohio-state.edu/benchmarks/'

whatis = [
    "Description: OSU Micro-Benchmarks"    
]

description = f"""
OSU Micro-Benchmarks from the MVAPICH project.

This module only includes the full suite of C MPI benchmarks.

Its main use is as a testing tool for our Open MPI EasyConfigs. It is made 
available to users also so that they can adapt it together with the OpenMPI
module should they want to build a different version. This module in
particular is for testing OpenMPI/{local_OpenMPI_version}-%(toolchain_name)s-%(toolchain_version)s-noCrayWrappers.
"""

usage = f"""
Some example job scripts for testing are available after loading the module in
$OSU_EXAMPLES. Note that these test scripts not only need the matching
OpenMPI module which EasyBuild will build automatically as a dependency of
this module, but also the matching lumi-CPEtools module 
lumi-CPEtools/{local_lumi_CPEtools_version}-%(toolchain_name)s-%(toolchain_version)s{versionsuffix} which is 
not build automatically but can be generated from the EasyConfig
lumi-CPEtools-{local_lumi_CPEtools_version}-%(toolchain_name)s-%(toolchain_version)s{versionsuffix}.eb.

You'll have to add an account via the `sbatch` command line, and may want to
overwrite other #SBATCH parameters also.
"""

# We're abusing the toolchain here as we really only need the gcc module and
# would be better served with simply a different toolchain, but we don't have
# a gcc module built the way EasyBuild likes it.
toolchain = {'name': 'cpeGNU', 'version': '23.09'}
toolchainopts = {'usempi': True}

sources = [
    {
        'filename':    SOURCELOWER_TAR_GZ,
        'source_urls': ['https://mvapich.cse.ohio-state.edu/download/mvapich/']
    },
    {   'filename':    'OSU-p2p-template.sh' },
    {   'filename':    'OSU-coll-template.sh' },
    {   'filename':    'OSU-1sided-template.sh' },
]
checksums =   [
    '8fa25b8aaa34e4b07ab3a4f30b7690ab46b038b08d204a853a9b6aa7bdb02f2f'
]

builddependencies = [
    ('buildtools', '%(toolchain_version)s', '', SYSTEM), # For make
]

dependencies = [
    ('OpenMPI', local_OpenMPI_version, '-noCrayWrappers'),    
]

preconfigopts = 'module unload cray-libsci cray-mpich craype && '
configopts = 'CC=$EBROOTOPENMPI/bin/mpicc CXX=$EBROOTOPENMPI/bin/mpicxx'

prebuildopts = 'module unload cray-libsci cray-mpich craype && '

preinstallopts = 'module unload cray-libsci cray-mpich craype && '

local_cleanup = '\\nmodule unload cray-libsci cray-mpich craype'
local_sed_args  = '-e \'s/%toolchainversion%/%(toolchain_version)s/\' '
local_sed_args += '-e \'s/%toolchain%/%(toolchain_name)s/\' '
local_sed_args += f'-e \'s/%suffix%/{versionsuffix}/\' '
local_sed_args += f'-e \'s/%OSUversion%/{version}/\' '
local_sed_args += f'-e \'s/%CPEtoolsversion%/{local_lumi_CPEtools_version}/\' '
local_sed_args += f'-e\'s/%cleanup%/{local_cleanup}/\''

postinstallcmds = [
    'mkdir -p %(installdir)s/examples',
    f'sed {local_sed_args} ../OSU-p2p-template.sh >%(installdir)s/examples/OSU-p2p-slurm.sh',
    f'sed {local_sed_args} ../OSU-coll-template.sh >%(installdir)s/examples/OSU-coll-slurm.sh',
    f'sed {local_sed_args} ../OSU-1sided-template.sh >%(installdir)s/examples/OSU-1sided-slurm.sh',
    'mkdir -p %(installdir)s/share/licenses/%(name)s && cp COPYRIGHT README CHANGES %(installdir)s/share/licenses/%(name)s'
]

local_benchmark_dirs = [
    'libexec/osu-micro-benchmarks/mpi/%s' % x for x in ['collective', 'one-sided', 'pt2pt', 'startup']
]

modextrapaths = {
    'PATH': local_benchmark_dirs
}

modextravars = {
    'OSU_EXAMPLES': '%(installdir)s/examples',
}


sanity_check_paths = {
    'files': [],
    'dirs':  local_benchmark_dirs,
}

moduleclass = 'perf'

[OSU-Micro-Benchmarks] [package list]