You have to pass HWLOC_MEMBIND_STRICT if you want an error code when the
policy isn't supported.


Assuming you get the nodeset of your current binding with
get_area_membind_nodeset() in bindset, you can do something like this
(untested):

hwloc_bitmap_t bindset, totalset, newset;
int i;
/* get the total nodeset and duplicate it before modifying it */
totalset = hwloc_bitmap_dup(hwloc_topology_get_topology_nodeset(topo));
/* get the current binding */
bindset = hwloc_bitmap_alloc();
hwloc_get_area_membind_nodeset(topology, ..., bindset, ...);
/* substract the nodeset where the buffer is already available */
hwloc_bitmap_andnot(totalset, totalset, bindset);
/* create a empty bitmap to play with inside the next loop */
newset = hwloc_bitmap_alloc();
/* iterate over remaining bits and alloc/bind there */
hwloc_bitmap_foreach_begin(i, totalset) {
   hwloc_bitmap_only(newset, i);
   p = hwloc_alloc_membind_nodeset(...., newset, ...);
}
hwloc_bitmap_free(totalset);
hwloc_bitmap_free(bindset);
hwloc_bitmap_free(newset);

Brice



Le 19/08/2014 19:10, Aulwes, Rob a écrit :
> ok, in the meantime, is there a way to manually 'replicate'?  That is,
> if I allocate a node, I would like to find out which NUMA domain it
> resides in, and then allocate replicates to other domains.  Are there
> example codes that show how to use the bitmaps for this?  I've been
> unsuccessful in finding example codes that illustrate the bitmaps.
>  Did I miss it in any doc?
>
> Thanks for the help!  Rob
>
> From: Brice Goglin <brice.gog...@inria.fr <mailto:brice.gog...@inria.fr>>
> Reply-To: Hardware locality user list <hwloc-us...@open-mpi.org
> <mailto:hwloc-us...@open-mpi.org>>
> Date: Tue, 19 Aug 2014 19:03:56 +0200
> To: Hardware locality user list <hwloc-us...@open-mpi.org
> <mailto:hwloc-us...@open-mpi.org>>
> Subject: Re: [hwloc-users] setting memory bindings
>
> REPLICATE isn't support either on Linux unfortunately.
>
> I'll look at clarifying the doc and/or returning an error and/or
> adding a way to find out.
>
> Brice
>
>
>
> Le 19/08/2014 19:00, Aulwes, Rob a écrit :
>> nope, no error.  is there a way to find out what policies are
>> supported?  I would like to try 'replicate'.
>>
>> From: Brice Goglin <brice.gog...@inria.fr <mailto:brice.gog...@inria.fr>>
>> Reply-To: Hardware locality user list <hwloc-us...@open-mpi.org
>> <mailto:hwloc-us...@open-mpi.org>>
>> Date: Tue, 19 Aug 2014 18:55:57 +0200
>> To: Hardware locality user list <hwloc-us...@open-mpi.org
>> <mailto:hwloc-us...@open-mpi.org>>
>> Subject: Re: [hwloc-users] setting memory bindings
>>
>> NEXTTOUCH isn't supported on Linux. I hope you'd get an error if you
>> request it.
>>
>> Brice
>>
>>
>>
>> Le 19/08/2014 18:48, Aulwes, Rob a écrit :
>>> Hi Brice,
>>>
>>> I've tried:
>>>
>>>                   p = hwloc_alloc_membind_policy(_topo, cnt * sizeof
>>> (T),
>>>                           mem_nodeset, HWLOC_MEMBIND_NEXTTOUCH, 0);
>>>
>>> and 
>>>
>>>                   p = hwloc_alloc_membind_nodeset(_topo, cnt *
>>> sizeof (T),
>>>                           mem_nodeset, HWLOC_MEMBIND_NEXTTOUCH, 0);
>>>
>>> and
>>>
>>>
>>>                   p = hwloc_alloc(_topo, cnt * sizeof (T));
>>>   hwloc_set_area_membind_nodeset(_topo, p, cnt * sizeof (T),
>>>                                        
>>>  mem_nodeset, HWLOC_MEMBIND_NEXTTOUCH, 0);
>>>
>>> where
>>>
>>> mem_nodeset = hwloc_topology_get_complete_nodeset(_topo);
>>>
>>> Thanks,Rob
>>>
>>> From: Brice Goglin <brice.gog...@inria.fr
>>> <mailto:brice.gog...@inria.fr>>
>>> Reply-To: Hardware locality user list <hwloc-us...@open-mpi.org
>>> <mailto:hwloc-us...@open-mpi.org>>
>>> Date: Tue, 19 Aug 2014 18:44:05 +0200
>>> To: Hardware locality user list <hwloc-us...@open-mpi.org
>>> <mailto:hwloc-us...@open-mpi.org>>
>>> Subject: Re: [hwloc-users] setting memory bindings
>>>
>>> Le 19/08/2014 18:38, Aulwes, Rob a écrit :
>>>> Hi,
>>>>
>>>> I'm trying to write a custom C++ allocator that wraps hwloc calls.
>>>>  I've tried using various hwloc_alloc* functions to set the memory
>>>> bindings, but when I call hwloc_get_area_membind_nodeset to verify,
>>>> I don't get the same policy I passed to alloc.  Are there example
>>>> codes that show how to set memory bindings?  More generally, are
>>>> there example codes that help illustrate how to use hwloc API?
>>>>
>>>> Thanks,Rob Aulwes
>>>>
>>>
>>> Hello
>>>
>>> Your problem may be related to the fact that same policies are
>>> identical on some operating systems. For instance DEFAULT and
>>> FIRST_TOUCH are often identical. What did you set and what did you
>>> get back?
>>>
>>> There are many examples in the tests subdirectory, in
>>> doc/hwloc-helloc.c and in hwloc/helper.h and hwloc/inline.h, but I
>>> don't think we have much about the membind API, and this API isn't a
>>> easy one unfortunately (given the variety of existing policies and
>>> operating systems).
>>>
>>> Brice
>>>
>>> _______________________________________________ hwloc-users mailing
>>> list hwloc-us...@open-mpi.org <mailto:hwloc-us...@open-mpi.org>
>>> Subscription:
>>> http://www.open-mpi.org/mailman/listinfo.cgi/hwloc-users Link to
>>> this post:
>>> http://www.open-mpi.org/community/lists/hwloc-users/2014/08/1058.php
>>>
>>>
>>> _______________________________________________
>>> hwloc-users mailing list
>>> hwloc-us...@open-mpi.org
>>> Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/hwloc-users
>>> Link to this post: 
>>> http://www.open-mpi.org/community/lists/hwloc-users/2014/08/1058.php
>>
>> _______________________________________________ hwloc-users mailing
>> list hwloc-us...@open-mpi.org <mailto:hwloc-us...@open-mpi.org>
>> Subscription:
>> http://www.open-mpi.org/mailman/listinfo.cgi/hwloc-users Link to this
>> post:
>> http://www.open-mpi.org/community/lists/hwloc-users/2014/08/1059.php
>>
>>
>> _______________________________________________
>> hwloc-users mailing list
>> hwloc-us...@open-mpi.org
>> Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/hwloc-users
>> Link to this post: 
>> http://www.open-mpi.org/community/lists/hwloc-users/2014/08/1060.php
>
> _______________________________________________ hwloc-users mailing
> list hwloc-us...@open-mpi.org <mailto:hwloc-us...@open-mpi.org>
> Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/hwloc-users
> <http://www.open-mpi.org/mailman/listinfo.cgi/hwloc-users> Link to
> this post:
> http://www.open-mpi.org/community/lists/hwloc-users/2014/08/1062.php
>
>
> _______________________________________________
> hwloc-users mailing list
> hwloc-us...@open-mpi.org
> Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/hwloc-users
> Link to this post: 
> http://www.open-mpi.org/community/lists/hwloc-users/2014/08/1063.php

Reply via email to