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


Reply via email to