Skip to content

Building OpenMPI 4.1.1 against PMIx 4.1.0 leads to compilation errors (PMIX_PACKAGE_RANK) #9211

@Micket

Description

@Micket

Thank you for taking the time to submit an issue!

Background information

What version of Open MPI are you using? (e.g., v3.0.5, v4.0.2, git branch name and hash, etc.)

OpenMPI v4.1.1
PMIx v4.1.0

Describe how Open MPI was installed (e.g., from a source/distribution tarball, from a git clone, from an operating system distribution package, etc.)

Everything is build from source for the EasyBuild project.

Please describe the system on which you are running

Error seems reproducible on many (all?) platforms. Cf. easybuilders/easybuild-easyconfigs#13668


Details of the problem

Building against the new PMIx 4.1.0 I see compilation errors almost immediately

make[2]: Leaving directory `/local/EB/build/OpenMPI/4.1.1/GCC-11.2.0/openmpi-4.1.1/opal'
Making all in mca/common/ofi
make[2]: Entering directory `/local/EB/build/OpenMPI/4.1.1/GCC-11.2.0/openmpi-4.1.1/opal/mca/common/ofi'
  CC       common_ofi.lo
  LN_S     libmca_common_ofi.la
In file included from ../../../../opal/mca/pmix/base/base.h:22,
                 from common_ofi.c:29:
common_ofi.c: In function get_package_rank:
common_ofi.c:321:40: error: PMIX_PACKAGE_RANK undeclared (first use in this function)
  321 |     OPAL_MODEX_RECV_VALUE_OPTIONAL(rc, PMIX_PACKAGE_RANK,
      |                                        ^~~~~~~~~~~~~~~~~
../../../../opal/mca/pmix/pmix.h:153:56: note: in definition of macro OPAL_MODEX_RECV_VALUE_OPTIONAL
  153 |         if (OPAL_SUCCESS == ((r) = opal_pmix.get((p), (s), &(_ilist), &(_kv)))) {        \
      |                                                        ^
common_ofi.c:321:40: note: each undeclared identifier is reported only once for each function it appears in
  321 |     OPAL_MODEX_RECV_VALUE_OPTIONAL(rc, PMIX_PACKAGE_RANK,
      |                                        ^~~~~~~~~~~~~~~~~
../../../../opal/mca/pmix/pmix.h:153:56: note: in definition of macro OPAL_MODEX_RECV_VALUE_OPTIONAL
  153 |         if (OPAL_SUCCESS == ((r) = opal_pmix.get((p), (s), &(_ilist), &(_kv)))) {        \
      |                                                        ^
make[2]: *** [common_ofi.lo] Error 1
make[2]: Leaving directory `/local/EB/build/OpenMPI/4.1.1/GCC-11.2.0/openmpi-4.1.1/opal/mca/common/ofi'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/local/EB/build/OpenMPI/4.1.1/GCC-11.2.0/openmpi-4.1.1/opal'
make: *** [all-recursive] Error 1

I seems like it might be as simple as a missing include.
Perhaps trying to use PMIx 4 isn't a good idea here? (I'm not sure about how it would interact with pmix3 software, like the slurm builds likely would be using)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions