Downscaling the matrix size, binding works well, but the memory available
is enought also using more big matrix, so I'm a bit confused.

Using the same big matrix size without binding the code works well, so how
I can explain this behaviour?

Maybe hwloc_set_area_membind_nodeset introduces other extra allocation that
are resilient after the call?



2012/9/5 Brice Goglin <brice.gog...@inria.fr>

>  An internal malloc failed then. That would explain why your malloc failed
> too.
> It looks like you malloc'ed too much memory in your program?
>
> Brice
>
>
>
>
> Le 05/09/2012 15:56, Gabriele Fatigati a écrit :
>
> An update:
>
>  placing strerror(errno) after hwloc_set_area_membind_nodeset  gives:
> "Cannot allocate memory"
>
> 2012/9/5 Gabriele Fatigati <g.fatig...@cineca.it>
>
>> Hi,
>>
>>  I've noted that hwloc_set_area_membind_nodeset return -1 but errno is
>> not equal to EXDEV or ENOSYS. I supposed that these two case was the two
>> unique possibly.
>>
>>  From the hwloc documentation:
>>
>>  -1 with errno set to ENOSYS if the action is not supported
>> -1 with errno set to EXDEV if the binding cannot be enforced
>>
>>
>>  Any other binding failure reason? The memory available is enought.
>>
>> 2012/9/5 Brice Goglin <brice.gog...@inria.fr>
>>
>>>  Hello Gabriele,
>>>
>>> The only limit that I would think of is the available physical memory on
>>> each NUMA node (numactl -H will tell you how much of each NUMA node memory
>>> is still available).
>>> malloc usually only fails (it returns NULL?) when there no *virtual*
>>> memory anymore, that's different. If you don't allocate tons of terabytes
>>> of virtual memory, this shouldn't happen easily.
>>>
>>> Brice
>>>
>>>
>>>
>>>
>>> Le 05/09/2012 14:27, Gabriele Fatigati a écrit :
>>>
>>>  Dear Hwloc users and developers,
>>>
>>>
>>>  I'm using hwloc 1.4.1 on a multithreaded program in a Linux platform,
>>> where each thread bind many non contiguos pieces of a big matrix using in a
>>> very intensive way hwloc_set_area_membind_nodeset function:
>>>
>>>  hwloc_set_area_membind_nodeset(topology, punt+offset, len, nodeset,
>>> HWLOC_MEMBIND_BIND, HWLOC_MEMBIND_THREAD | HWLOC_MEMBIND_MIGRATE);
>>>
>>>  Binding seems works well, since the returned code from function is 0
>>> for every calls.
>>>
>>>  The problems is that after binding, a simple little new malloc fails,
>>> without any apparent reason.
>>>
>>>  Disabling memory binding, the allocations works well.  Is there any
>>> knows problem if  hwloc_set_area_membind_nodeset is used intensively?
>>>
>>>  Is there some operating system limit for memory pages binding?
>>>
>>>  Thanks in advance.
>>>
>>>  --
>>> Ing. Gabriele Fatigati
>>>
>>> HPC specialist
>>>
>>> SuperComputing Applications and Innovation Department
>>>
>>> Via Magnanelli 6/3, Casalecchio di Reno (BO) Italy
>>>
>>> www.cineca.it                    Tel:   +39 051 
>>> 6171722<%2B39%20051%206171722>
>>>
>>> g.fatigati [AT] cineca.it
>>>
>>>
>>>  _______________________________________________
>>> hwloc-users mailing 
>>> listhwloc-users@open-mpi.orghttp://www.open-mpi.org/mailman/listinfo.cgi/hwloc-users
>>>
>>>
>>>
>>
>>
>>  --
>> Ing. Gabriele Fatigati
>>
>> HPC specialist
>>
>> SuperComputing Applications and Innovation Department
>>
>> Via Magnanelli 6/3, Casalecchio di Reno (BO) Italy
>>
>> www.cineca.it                    Tel:   +39 051 
>> 6171722<%2B39%20051%206171722>
>>
>> g.fatigati [AT] cineca.it
>>
>
>
>
>  --
> Ing. Gabriele Fatigati
>
> HPC specialist
>
> SuperComputing Applications and Innovation Department
>
> Via Magnanelli 6/3, Casalecchio di Reno (BO) Italy
>
> www.cineca.it                    Tel:   +39 051 6171722
>
> g.fatigati [AT] cineca.it
>
>
>


-- 
Ing. Gabriele Fatigati

HPC specialist

SuperComputing Applications and Innovation Department

Via Magnanelli 6/3, Casalecchio di Reno (BO) Italy

www.cineca.it                    Tel:   +39 051 6171722

g.fatigati [AT] cineca.it

Reply via email to