Hi list,
I'm hitting a limitation with paffinity/hwloc with cpu numbers >= 64.
In opal/mca/paffinity/hwloc/paffinity_hwloc_module.c, module_set() is
the routine that sets the calling process affinity to the mask given as
parameter. Note that "mask" is a opal_paffinity_base_cpu_set_t (so we
allow the cpus to be potentially numbered up to
OPAL_PAFFINITY_BITMASK_CPU_MAX - 1).
The problem with module_set() is that is loops over
OPAL_PAFFINITY_BITMASK_T_NUM_BITS bits to check if these bits are set in
the mask:
for (i = 0; ((unsigned int) i) < OPAL_PAFFINITY_BITMASK_T_NUM_BITS; ++i)
{
if (OPAL_PAFFINITY_CPU_ISSET(i, mask)) {
hwloc_bitmap_set(set, i);
}
}
Given "mask"'s type, I think module_set() should instead loop over
OPAL_PAFFINITY_BITMASK_CPU_MAX bits.
Note that module_set() uses a type for its internal mask that is
coherent with OPAL_PAFFINITY_BITMASK_T_NUM_BITS (hwloc_bitmap_t).
So I'm wondering whether this is a known limitation I've never heard of
or an actual bug?
Regards,
Nadia