Hendryk Bockelmann, le Wed 09 Feb 2011 16:57:43 +0100, a écrit :
> Since I am new to hwloc there might be a misunderstanding from my side,
> but I have a problem getting the cpuset of MPI tasks.
> /* get native cpuset of this process */
> cpuset = hwloc_bitmap_alloc();
> hwloc_get_cpubind(topology, cpuset, 0);
get_cpubind gives where the threads are bound, not where they are
actually running. If you haven't bound them yourself, the default is no
binding, i.e. all CPUs are allowed, thus a full mask, that's why you get
0xf for all of them.
Singlify is just an operation on the resulting cpu mask, taking the
first of them. That's why you end up with just 0x1.
Adding a function that returns where threads are actually running is on
the TODO list for hwloc 1.2.