To be future-proof (so that your code works both with current hwloc 1.x
and upcoming 2.0), the best check for non-NUMA machines is
   hwloc_get_nbobjs_by_type(topology, HWLOC_OBJ_NODE) <= 1

Otherwise, yes. Infinite/full nodeset means no NUMA. To actually check
whether a nodeset is infinite, use hwloc_bitmap_weight(obj->nodeset). It
returns -1 on infinite/full bitmaps since there's no way to count an
infinite set of bits.

Brice


Le 27/09/2016 07:45, Swati Agrawal a écrit :
> Thanks Brice for the detailed info.
> So, can I say that if obj->nodeset is all 1s, it is a no NUMA mode setup?
>
> Thanks,
> Swati
>
> On Monday, September 26, 2016, Brice Goglin <brice.gog...@inria.fr
> <mailto:brice.gog...@inria.fr>> wrote:
>
>     Hello
>
>     If there's no NUMA node object in your hwloc topology, it means
>     your machine isn't NUMA (there's a single NUMA node), or your
>     system doesn't report NUMA information at all (missing NUMA
>     support in the kernel, etc).
>
>     This is an old design choice that is not convenient. So we'll
>     change that in the upcoming hwloc 2.0. There will always be at
>     least one NUMA node object (just like in lspcu).
>
>     In the meantime, the meaning of obj->nodeset isn't very useful
>     when there's no NUMA object anyway. If you really need to look at
>     obj->nodeset on non-NUMA machines, you'll get either NULL or a
>     "full" "infinite" bitmap (meaning "the entire machine memory", as
>     explained in the description of the nodeset attribute of the
>     object structure
>     
> https://www.open-mpi.org/projects/hwloc/doc/v1.11.4/a00038.php#a08f0d0e16c619a6e653526cbee4ffea3
>     
> <https://www.open-mpi.org/projects/hwloc/doc/v1.11.4/a00038.php#a08f0d0e16c619a6e653526cbee4ffea3>).
>
>     By the way, you're not supposed to look at internal nodeset fields
>     (ulongs and ulongs_count). For instance, there's another field
>     saying that the bitmap is infinite. All these are private details
>     not meant to be understood by users. Things like
>     hwloc_bitmap_asprintf() or "lstopo -.xml" would show that
>     obj->nodeset is 0xf...f which means "infinite" or "full".
>
>     Again, these infinite nodesets will go away in the upcoming hwloc 2.0.
>
>     Brice
>
>
>
>
>
>
>     Le 27/09/2016 01:35, Swati Agrawal a écrit :
>>     Hi All,
>>
>>     I have recently started using hwloc and stuck with a case where
>>     there are no NUMA nodes. I see that when i run "lscpu" command,
>>     it shows me there is 1 Numa Node and all the PUs are in this node.
>>     But when i try reading the nodeset for my object using
>>     hwloc_get_non_io_ancestor_obj(..), I see below output:
>>
>>     obj->nodeset->ulongs_count = 1;
>>     obj->nodeset->ulongs[0] = 18446744073709551615 (UINT64 MAX Value).
>>
>>     What does this actually mean?
>>
>>     Thanks,
>>     Swati
>>
>>
>>     _______________________________________________
>>     hwloc-devel mailing list
>>     hwloc-devel@lists.open-mpi.org
>>     <javascript:_e(%7B%7D,'cvml','hwloc-devel@lists.open-mpi.org');>
>>     https://rfd.newmexicoconsortium.org/mailman/listinfo/hwloc-devel
>>     <https://rfd.newmexicoconsortium.org/mailman/listinfo/hwloc-devel>
>
> _______________________________________________
> hwloc-devel mailing list
> hwloc-devel@lists.open-mpi.org
> https://rfd.newmexicoconsortium.org/mailman/listinfo/hwloc-devel
_______________________________________________
hwloc-devel mailing list
hwloc-devel@lists.open-mpi.org
https://rfd.newmexicoconsortium.org/mailman/listinfo/hwloc-devel

Reply via email to