Skip to content
Snippets Groups Projects
Commit 2da1ca4d authored by Anke Kreuzer's avatar Anke Kreuzer
Browse files

Merge branch 'cea/mpcframework-4.2.0' into '2023'

Add MPC Framework 4.2.0 recipe

See merge request deep-sea/wp3/software/easybuild-repository-deep-sea!26
parents fbf60b69 2c18902a
Branches
No related tags found
No related merge requests found
from easybuild.easyblocks.generic.binary import Binary
from easybuild.tools.filetools import write_file
import os.path
class EB_MPCFramework(Binary):
"""Support for building/installing the MPC Framework."""
def make_module_extra(self):
"""Correctly prepend $PYTHONPATH and set environment variables for MPC Framework. Equivalent to mpcvars.sh."""
txt = super(EB_MPCFramework, self).make_module_extra()
txt += self.module_generator.set_environment(
"MPC_INSTALL_DIR_PREFIX", self.installdir)
txt += self.module_generator.set_environment(
"MPC_VERSION", self.version)
# Variables such as $PATH, $CPATH or $LD_LIBRARY_PATH are already set
# by default by EasyBuild.
txt += self.module_generator.prepend_paths(
"PYTHONPATH", ['lib/python/', 'lib64/python/'])
txt += self.module_generator.set_environment(
"MPCFRAMEWORK_DIR", self.installdir + 'share/mpcframework/cmake/')
return txt
def post_install_step(self):
"""Override network rail configuration by adding an MPC configuration file"""
write_file(os.path.join(self.installdir, "etc", "mpcframework", "rail.conf"),
"LOWCOMM_NETWORKING_RAILS_IBMPI_DEVICE=mlx5_0")
name = 'MPCFramework'
version = '4.2.0'
homepage = 'https://mpc.hpcframework.com'
description = """An Implementation of MPI and OpenMP relying on user-level threads"""
toolchain = {'name': 'GCC', 'version': '11.3.0'}
source_urls = [
'https://github.com/cea-hpc/mpc/archive/refs/tags/'
]
sources = ['MPC_%(version)s.zip']
checksums = [
# MPC_4.2.0.zip
'd2610173cf0bf8f64985bc45602c133ca0beaff78c8bea7fe35fda771ceae5ca',
# nvdimm.patch
'36e058b5aa7a2b4d850e0ffba72c113acede2906b143a61dc63a5da68a4c7e85',
# pmix.patch
'85bd42edd90d6e9bb83e0dd60accc69e260eecd600b15230e6693be39e88598a',
# rma-get-attr.patch
'f5f308c1438fd5c33ead66ac83592749227a8cabd99ff717bcdde85ce89ecf8f',
]
patches = [
'nvdimm.patch',
'pmix.patch',
'rma-get-attr.patch',
]
builddependencies = [
('CMake', '3.23.1'),
('bzip2', '1.0.8', '', ('GCCcore', '11.3.0')),
('cURL', '7.83.0'),
('help2man', '1.49.2'),
('OpenSSL', '1.1', '', SYSTEM),
]
installopts = '--prefix=%(installdir)s '
installopts += '-j%(parallel)s '
installopts += '--enable-color '
installopts += '--disable-spack '
installopts += '--disable-spack-build '
installopts += '--mpc-option="--without-portals" '
# To enable SLURM integration (site-specific)
installopts += '--with-pmix '
sanity_check_commands = [
"mpcrun --help",
"mpc_print_config"
]
moduleclass = 'devel'
# Options passed to the Binary EasyBlock (superclass of the MPCFramework EasyBlock)
extract_sources = True
install_cmd = 'mkdir BUILD && cd BUILD && ../installmpc'
[PATCH] LAUNCH: Fix mpcrun --help crash with NVDIMM
author: Remi Dehenne
mpcrun --help no longer crashes when mpc_print_config displays
`<Topology> NVDIMM Found ! (OS Device #xx)` messages.
Those messages are now printed on stderr with
mpc_common_debug_log, rather than with fprintf on stdout.
---
src/MPC_Topology/src/topology.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/MPC_Topology/src/topology.c b/src/MPC_Topology/src/topology.c
index e62cbcb01..9172c6de2 100644
--- a/src/MPC_Topology/src/topology.c
+++ b/src/MPC_Topology/src/topology.c
@@ -1376,7 +1376,7 @@ void _mpc_topology_nvdimm_detection(hwloc_topology_t topology)
{
if(strcmp(current->subtype, "NVDIMM") == 0)
{
- fprintf(stdout, "<Topology> %s Found ! (OS Device #%d)\n", current->subtype, current->logical_index);
+ mpc_common_debug_log("<Topology> %s Found ! (OS Device #%d)\n", current->subtype, current->logical_index);
++__mpc_module_avail_nvdimm;
}
}
--
From fc4b775594984ecac16ec56074a0636961ecb3f2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?R=C3=A9mi=20Dehenne?= <remi.dehenne@cea.fr>
Date: Tue, 25 Jul 2023 13:02:19 +0200
Subject: [PATCH] LAUNCH: Fix PMIx compilation error
---
src/MPC_Launch/src/pmi.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/MPC_Launch/src/pmi.c b/src/MPC_Launch/src/pmi.c
index 3970bd598..08916cd46 100644
--- a/src/MPC_Launch/src/pmi.c
+++ b/src/MPC_Launch/src/pmi.c
@@ -1004,7 +1004,7 @@ int mpc_launch_pmi_get( char *value, size_t size, char *key, int remote)
assume(val->type == PMIX_STRING);
strcpy(value, val->data.string);
PMIX_VALUE_RELEASE(val);
- PMIX_PROC_DESTRUCT(proc);
+ PMIX_PROC_DESTRUCT(&proc);
PMI_RETURN( rc );
#else
UNUSED(remote);
--
2.34.1
From 831247ca5ab5589e42be0864bc3d1965b7cec914 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?R=C3=A9mi=20Dehenne?= <remi.dehenne@cea.fr>
Date: Fri, 27 Oct 2023 18:44:31 +0200
Subject: [PATCH] RMA: Fix invalid arg type in MPI_Win_get_attr
The attribute_val argument of MPI_Win_get_attr was improperly set regarding
to the MPI Standard.
Prior to casting, the attribute_val argument must be an int** or void**.
MPC assumed attribute_val to be an int* or void*, thus leading to
unexpected behaviors in user applications.
---
src/MPC_MPI/src/mpi_rma_win.c | 11 ++++-------
1 file changed, 4 insertions(+), 7 deletions(-)
diff --git a/src/MPC_MPI/src/mpi_rma_win.c b/src/MPC_MPI/src/mpi_rma_win.c
index de22d11db..c02ba4d9c 100644
--- a/src/MPC_MPI/src/mpi_rma_win.c
+++ b/src/MPC_MPI/src/mpi_rma_win.c
@@ -1163,7 +1163,6 @@ int mpc_MPI_Win_get_attr(MPI_Win win, int keyval, void *attr_val, int *flag)
}
struct mpc_lowcomm_rdma_window *low_win = sctk_win_translate(win);
- uintptr_t val;
/* First handle special values */
switch(keyval)
@@ -1175,24 +1174,22 @@ int mpc_MPI_Win_get_attr(MPI_Win win, int keyval, void *attr_val, int *flag)
case MPI_WIN_SIZE:
*flag = 1;
- *( (void **)attr_val) = (void *)low_win->size;
+ *( (void **)attr_val) = (void *)&low_win->size;
return MPI_SUCCESS;
case MPI_WIN_DISP_UNIT:
*flag = 1;
- *( (void **)attr_val) = (void *)low_win->disp_unit;
+ *( (void **)attr_val) = (void *)&low_win->disp_unit;
return MPI_SUCCESS;
case MPI_WIN_CREATE_FLAVOR:
*flag = 1;
- val = desc->flavor;
- *( (void **)attr_val) = (void *)val;
+ *( (void **)attr_val) = (void *)&desc->flavor;
return MPI_SUCCESS;
case MPI_WIN_MODEL:
*flag = 1;
- val = desc->model;
- *( (void **)attr_val) = (void *)val;
+ *( (void **)attr_val) = (void *)&desc->model;
return MPI_SUCCESS;
}
--
2.34.1
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment