Le 25/09/2011 12:19, Gabriele Fatigati a écrit :
> Hi Brice,
> >The flag says "when the first touch occurs and the physical memory is
> allocated for real, don't allocate on the local node (default), but
> >rather allocate where specified by set_membind".
> If is it already allocated for real, how set_membind() can allocate on
> other node?

Add the MIGRATE flag.

> So, what's the difference between HWLOC_MEMBIND_BIND and

First touch makes the allocation on the node local to the thread that
touches first (default on Linux).
BIND makes the allocation on the node specified in set_membind.

> Doing the follow test:
> omp parallel region
> if(tid==0){
>  malloc(array)...
>  set_area_membind(HWLOCMEMBIND_BIND, node 0)
> }
> if (tid==1){
>  set_area_membind(HWLOCMEMBIND_BIND, node 1)

If both set_area_membind work on the same array (not on different
halves), this is doubly-wrong:
* you have no guarantee that thread 0 has already finished doing the
malloc before thread 1 does set_area_membind on the buffer.
* doing two set_area_membind on the same entire array is useless, the
second one will overwrite the first one.


Reply via email to