[slurm-users] Slurm not building with HWLOC 2.0.2

Andreas Henkel henkel at uni-mainz.de
Wed Oct 24 01:43:00 MDT 2018


HI all,

did anyone build Slurm using a recent version of HWLOC like 2.0.1 or 2.0.2?

When I try to I end up with

task_cgroup_cpuset.c:486:40: error: 'struct hwloc_obj' has no member
named 'allowed_cpuset'
    hwloc_bitmap_or(cpuset, cpuset, pobj->allowed_cpuset);
                                        ^
task_cgroup_cpuset.c:492:39: error: 'struct hwloc_obj' has no member
named 'allowed_cpuset'
    hwloc_bitmap_or(cpuset, cpuset, obj->allowed_cpuset);
                                       ^
task_cgroup_cpuset.c:496:38: error: 'struct hwloc_obj' has no member
named 'allowed_cpuset'
   hwloc_bitmap_or(cpuset, cpuset, obj->allowed_cpuset);
                                      ^
task_cgroup_cpuset.c: In function '_task_cgroup_cpuset_dist_cyclic':
task_cgroup_cpuset.c:621:31: error: 'struct hwloc_obj' has no member
named 'allowed_cpuset'
        (hwloc_bitmap_first(obj->allowed_cpuset) != -1)) {
                               ^
task_cgroup_cpuset.c:632:14: error: 'struct hwloc_obj' has no member
named 'allowed_cpuset'
           obj->allowed_cpuset) != -1)) {
              ^
task_cgroup_cpuset.c: In function '_validate_mask':
task_cgroup_cpuset.c:880:29: error: 'struct hwloc_obj' has no member
named 'allowed_cpuset'
   j = hwloc_bitmap_isset(obj->allowed_cpuset, i);
                             ^
task_cgroup_cpuset.c:893:30: error: 'struct hwloc_obj' has no member
named 'allowed_cpuset'
    if (hwloc_bitmap_isset(obj->allowed_cpuset, i) > 0)


which is completely in sync with


  allowed_cpuset and allowed_nodeset only in the main topology

Objects do not have |allowed_cpuset| and |allowed_nodeset| anymore. They
are only available for the entire topology using
hwloc_topology_get_allowed_cpuset()
<https://www.open-mpi.org/projects/hwloc/doc/v2.0.1/a00166.php#ga517d5d68ec9f24583d8933aab713be8e>
and hwloc_topology_get_allowed_nodeset()
<https://www.open-mpi.org/projects/hwloc/doc/v2.0.1/a00166.php#ga21a4d7237a11e76b912ed4524ab78cbd>.

As usual, those are only needed when the WHOLE_SYSTEM topology flag is
given, which means disallowed objects are kept in the topology. If so,
one may find out whether some PUs inside an object is allowed by checking

hwloc_bitmap_intersects(obj->cpuset, hwloc_topology_get_allowed_cpuset(topology))

Replace cpusets with nodesets for NUMA nodes. To find out which ones,
replace intersects() with and() to get the actual intersection.

at https://www.open-mpi.org/projects/hwloc/doc/v2.0.1/a00327.php

Yet in the source code of Slurm there are already some preprocessor
switches for HWLOC 2.

Any hints welcome.

Best,

Andreas Henkel

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.schedmd.com/pipermail/slurm-users/attachments/20181024/cbd81d81/attachment-0001.html>


More information about the slurm-users mailing list