Hallo, I'm using hwloc-1.1 on Linux 2.6.32.19 (x86_64) on a machine that has several NUMA nodes. It seems to me that there are unwanted bits left in the nodeset "set", when calling hwloc_get_membind_nodeset(topo, set, ...) after a successful hwloc_set_membind() or hwloc_set_membind_nodeset().
E.g. when binding to node 2, then calling hwloc_get_membind_nodeset(topo, set), then stringifying set, I get something like 2,516,518. The machine has 64 nodes and 1024 pus. It seems that the following resolves the problem: --- src/topology-linux.c.bak 2010-11-25 15:01:48.000000000 +0100 +++ src/topology-linux.c 2011-01-18 17:38:18.000000000 +0100 @@ -886,18 +886,13 @@ static void hwloc_linux_membind_mask_to_nodeset(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_nodeset_t nodeset, - unsigned _max_os_index, const unsigned long *linuxmask) + unsigned max_os_index, const unsigned long *linuxmask) { - unsigned max_os_index; unsigned i; - /* round up to the nearest multiple of BITS_PER_LONG */ - max_os_index = (_max_os_index + HWLOC_BITS_PER_LONG) & ~(HWLOC_BITS_PER_LONG - 1); - hwloc_bitmap_zero(nodeset); for(i=0; i<max_os_index/HWLOC_BITS_PER_LONG; i++) hwloc_bitmap_set_ith_ulong(nodeset, i, linuxmask[i]); - /* if we don't trust the kernel, we could clear bits from _max_os_index+1 to max_os_index-1 */ } #endif /* HWLOC_HAVE_SET_MEMPOLICY || HWLOC_HAVE_MBIND */ but I'm not sure if this is the correct way. Regards BK -- Dr. Bernd Kallies Konrad-Zuse-Zentrum für Informationstechnik Berlin Takustr. 7 14195 Berlin Tel: +49-30-84185-270 Fax: +49-30-84185-311 e-mail: kall...@zib.de