Skip to content

Charm-8.0.0 build fails because "cmi_" prefix is not defined for hwloc #3843

@maxim-masterov

Description

@maxim-masterov

Hi! I'm getting the following errors when trying to build charm-8.0.0:

[ 27%] Building CXX object CMakeFiles/converse.dir/src/conv-core/cpthreads.C.o
[ 27%] Building CXX object CMakeFiles/converse.dir/src/conv-core/cpuaffinity.C.o
/home/maximm/easybuild/official_fork/easybuild-easyconfigs/easybuild/easyconfigs/n/NAMD/tmp/NAMD_3.0_Source/charm-8.0.0/src/conv-core/cpuaffinity.C: In function ‘void CmiInitHwlocTopology()’:
/home/maximm/easybuild/official_fork/easybuild-easyconfigs/easybuild/easyconfigs/n/NAMD/tmp/NAMD_3.0_Source/charm-8.0.0/src/conv-core/cpuaffinity.C:53:5: error: ‘cmi_hwloc_topology_init’ was not declared in this scope; did you mean ‘hwloc_topology_init’?
   53 |     cmi_hwloc_topology_init(&topology);
      |     ^~~~~~~~~~~~~~~~~~~~~~~
      |     hwloc_topology_init
/home/maximm/easybuild/official_fork/easybuild-easyconfigs/easybuild/easyconfigs/n/NAMD/tmp/NAMD_3.0_Source/charm-8.0.0/src/conv-core/cpuaffinity.C:54:5: error: ‘cmi_hwloc_topology_load’ was not declared in this scope; did you mean ‘hwloc_topology_load’?
   54 |     cmi_hwloc_topology_load(topology);
      |     ^~~~~~~~~~~~~~~~~~~~~~~
      |     hwloc_topology_load
/home/maximm/easybuild/official_fork/easybuild-easyconfigs/easybuild/easyconfigs/n/NAMD/tmp/NAMD_3.0_Source/charm-8.0.0/src/conv-core/cpuaffinity.C:57:13: error: ‘cmi_hwloc_get_type_depth’ was not declared in this scope; did you mean ‘hwloc_get_type_depth’?
   57 |     depth = cmi_hwloc_get_type_depth(topology, HWLOC_OBJ_PACKAGE);
      |             ^~~~~~~~~~~~~~~~~~~~~~~~
      |             hwloc_get_type_depth
/home/maximm/easybuild/official_fork/easybuild-easyconfigs/easybuild/easyconfigs/n/NAMD/tmp/NAMD_3.0_Source/charm-8.0.0/src/conv-core/cpuaffinity.C:58:77: error: ‘cmi_hwloc_get_nbobjs_by_depth’ was not declared in this scope; did you mean ‘hwloc_get_nbobjs_by_depth’?
   58 |     CmiHwlocTopologyLocal.num_sockets = depth != HWLOC_TYPE_DEPTH_UNKNOWN ? cmi_hwloc_get_nbobjs_by_depth(topology, depth) : 1;
      |                                                                             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                                                             hwloc_get_nbobjs_by_depth
/home/maximm/easybuild/official_fork/easybuild-easyconfigs/easybuild/easyconfigs/n/NAMD/tmp/NAMD_3.0_Source/charm-8.0.0/src/conv-core/cpuaffinity.C:72:51: error: ‘cmi_hwloc_topology_get_flags’ was not declared in this scope; did you mean ‘hwloc_topology_get_flags’?
   72 |     cmi_hwloc_topology_set_flags(legacy_topology, cmi_hwloc_topology_get_flags(legacy_topology) | HWLOC_TOPOLOGY_FLAG_INCLUDE_DISALLOWED);
      |                                                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                                   hwloc_topology_get_flags
/home/maximm/easybuild/official_fork/easybuild-easyconfigs/easybuild/easyconfigs/n/NAMD/tmp/NAMD_3.0_Source/charm-8.0.0/src/conv-core/cpuaffinity.C:72:5: error: ‘cmi_hwloc_topology_set_flags’ was not declared in this scope; did you mean ‘hwloc_topology_set_flags’?
   72 |     cmi_hwloc_topology_set_flags(legacy_topology, cmi_hwloc_topology_get_flags(legacy_topology) | HWLOC_TOPOLOGY_FLAG_INCLUDE_DISALLOWED);
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |     hwloc_topology_set_flags
/home/maximm/easybuild/official_fork/easybuild-easyconfigs/easybuild/easyconfigs/n/NAMD/tmp/NAMD_3.0_Source/charm-8.0.0/src/conv-core/cpuaffinity.C: In function ‘int set_process_affinity(hwloc_cpuset_t)’:
/home/maximm/easybuild/official_fork/easybuild-easyconfigs/easybuild/easyconfigs/n/NAMD/tmp/NAMD_3.0_Source/charm-8.0.0/src/conv-core/cpuaffinity.C:142:7: error: ‘cmi_hwloc_set_proc_cpubind’ was not declared in this scope; did you mean ‘hwloc_set_proc_cpubind’?
  142 |   if (cmi_hwloc_set_proc_cpubind(topology, process, cpuset, HWLOC_CPUBIND_PROCESS|HWLOC_CPUBIND_STRICT))
      |       ^~~~~~~~~~~~~~~~~~~~~~~~~~
      |       hwloc_set_proc_cpubind
/home/maximm/easybuild/official_fork/easybuild-easyconfigs/easybuild/easyconfigs/n/NAMD/tmp/NAMD_3.0_Source/charm-8.0.0/src/conv-core/cpuaffinity.C:146:5: error: ‘cmi_hwloc_bitmap_asprintf’ was not declared in this scope; did you mean ‘hwloc_bitmap_asprintf’?
  146 |     cmi_hwloc_bitmap_asprintf(&str, cpuset);
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~
      |     hwloc_bitmap_asprintf

This is just a snippet, the rest of the errors are similar, saying that thecmi_hwloc_XXX function is not declared.
The build command I use is the following one:

./build charm++ mpi-linux-x86_64 mpicxx  --with-production --with-numa -j1 '-O2 -ftree-vectorize -O2 -mavx2 -mfma -fno-math-errno -fPIC -DMPICH_IGNORE_CXX_SEEK -fpermissive'

The buildold script works just fine, so the problem is in the build script and the CMake logic, I guess. I see that the hwloc.cmake calls for the contrib/hwloc/configure script and all the logic for setting up the correct prefix is implemented there: https://github.com/charmplusplus/charm/blob/c92494d89be08e1f4c1d556da34ac74b5bd2eb0f/contrib/hwloc/configure#L20306-L20316

Any suggestions how to make build script work?

Packages versions:

  • Charm 8.0.0
  • CMake 3.29.3
  • GCC 13.3.0
  • OpenMPI 5.0.3

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions