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