get_area_membind() would return a full nodeset if you don't membind first.

By the way, mydata_ptr is not a physical address, it's a virtual address.

Brice



Le 27/01/2016 02:23, Rezaul Karim Raju a écrit :
> Hi,
>
> I am interested to know about what 'hwloc_bind'  does beyond malloc()-
> the OS call. 
> If I do like this: 
>
>         int mydata=11;
> int * mydata_ptr;
> *mydata_ptr = (int *)malloc(sizeof(int));  *
> * *
> *or,***
> *       mydata_ptr = (int *) hwloc_alloc (topology, (sizeof(int)));*
> **
> *        mydata_ptr = &mydata; *
> **
> and then call: 
> *hwloc_get_area_membind_nodeset (*topology, *mydata_ptr,* sizeof(int),
> *nodeset,* &nodepolicy, flags); flags:= 0/1 process / thread   
>
> it gives me the all available nodesets.
> According to Brice previous reply: hwloc (get_area_membind ) returns
> once Linux could have allocated (bound) memory buffer (the physical
> address I am sending as *mydata_ptr*). 
>
> *Is this something hwloc can only returns locations (& corresponding
> nodeset) once it is bound (*set_area_membind*) prior ..? *
> *
> *
> Thank you in advance.
> - Raju
>
> On Fri, Dec 18, 2015 at 11:57 AM, Rezaul Karim Raju
> <raju.cse.b...@gmail.com <mailto:raju.cse.b...@gmail.com>> wrote:
>
>     Hi Brice, 
>
>     Thanks for your time and nice explanation. 
>     I have looked at the issue with location return (the page
>     proportion across multiple node & physical allocation). Are you
>     thinking to add this function..? Like if we think list of node or
>     nodes where the array is allocated (only if physically allocated
>     otherwise NULL) is it possible..? 
>
>     I am looking for getting the physical location of data allocated
>     by OS default policy. Appreciate any better idea and please share
>     with me. 
>
>     Best Regards,
>     - Raju    
>
>     On Tue, Dec 15, 2015 at 3:28 AM, Brice Goglin
>     <brice.gog...@inria.fr <mailto:brice.gog...@inria.fr>> wrote:
>
>
>
>         Le 15/12/2015 07:21, Brice Goglin a écrit :
>>
>>
>>         Le 15/12/2015 05:57, Rezaul Karim Raju a écrit :
>>>         *OUTPUT: *
>>>         *Policy-->* buffer(Array: A) *membind [default OS binding]
>>>         Policy is:= 1 [1 refers to *HWLOC_MEMBIND_FIRSTTOUCH
>>>         
>>> <https://www.open-mpi.org/projects/hwloc/doc/v1.11.1/a00083.php#ggac9764f79505775d06407b40f5e4661e8a979c7aa78dd32780858f30f47a72cca0>*]*
>>>         *Nodeset --> *buffer(Array: A) bound to nodeset*0x000000ff
>>>         *with contains*:*
>>>         * *node #0 (OS index 0) with 8387047424 bytes of memory
>>>          node #1 (OS index 1) with 8471617536 bytes of memory
>>>          node #2 (OS index 2) with 8471621632 bytes of memory
>>>          node #3 (OS index 3) with 8471617536 bytes of memory
>>>          node #4 (OS index 4) with 8471621632 bytes of memory
>>>          node #5 (OS index 5) with 8471617536 bytes of memory
>>>          node #6 (OS index 6) with 8471621632 bytes of memory
>>>          node #7 (OS index 7) with 8471564288 bytes of memory
>>>         *
>>>         *
>>>         *why it shows allocated memory is bound to all available
>>>         nodeset..? should it not be allocated to a specific nodeset
>>>         one ..?*
>>>         *
>>>         *
>>
>>         Hello
>>
>>         You are confusing the "binding" and the "actual location".
>>         Your memory buffer isn't bound to a specific location by
>>         default. But Linux has to allocate it somewhere. So your
>>         buffer is "located" in some node after the allocation, but it
>>         is not "bound" there (what get_area_membind returns) which
>>         means Linux could have allocated it somewhere else.
>>
>>         hwloc cannot currently return the "location" of a memory
>>         buffer. I have been thinking about adding this feature in the
>>         past, but it looks like you are the first actual user
>>         requesting this. We could add something like
>>         hwloc_get_last_memory_location(topology, input buffer,
>>         outputnodeset)
>>         At least on Linux that's possible.
>>
>>         For clarity, this is similar to the difference between
>>         hwloc_get_cpubind() and hwloc_get_last_cpu_location(): A task
>>         always runs on a specific PU, even if it is not bound to
>>         anything specific PU.
>
>         By the way, there is already an issue for this:
>         https://github.com/open-mpi/hwloc/issues/97
>
>         Feel to comment there.
>
>         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/2015/12/1226.php
>
>
>
>
>     -- 
>     ------------------------
>     RaJu, Rezaul Karim
>     Graduate Student (PhD) | Computer Science | University of Houston
>     Research in High Performance Computing Tools  
>     Houston, Texas-77004
>
>
>
>
> -- 
> ------------------------
> RaJu, Rezaul Karim
> Graduate Student (PhD) | Computer Science | University of Houston
> Research in High Performance Computing Tools  
> Houston, Texas-77004

Reply via email to