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

Merge branch '2023' of...

parents f24c6740 2da1ca4d
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