On Sep 22, 2010, at 4:38 AM, Brice Goglin wrote:

> There are still some problems to solve in the membind branch:
> * Some OS bind the process too when you bind memory. I see the following
> solutions:
>  + Add a flag such as HWLOC_MEMBIND_EVEN_IF_FAR_FROM_PROCESS so that
> the user can explicitly refuse memory binding if it may break process
> binding
>  + Drop hwloc_set_membind on these OSes and add a
> hwloc_set_cpumembind() to bind both
>  + Make both process and memory binding do nothing if the STRICT flag
> is given. But I'd rather not play too much with this flag.
>  + Drop support for memory binding on these OS.
>  + Drop these OS.

What OS's are you specifically referring to?

I think we should support memory binding, even if it does weird things -- i.e., 
dropping membinding support on a given OS shouldn't be an option.  How about 
adding a query function that says what will happen for hwloc_set_membind() -- 
bind the memory, or bind the memory + the process?  And/or have an 
"atomic"-like function that sets the memory binding and returns the process 
memory binding? 

Just curious -- on these OS's, what happens if you:

- bind proc to A
- bind memory to B (which then also re-binds proc to B)
- re-bind proc to A

Is the memory binding then lost?

> * cpuset and nodeset structures are the same, they are both manipulated
> with hwloc_cpuset_foo functions. So maybe rename into hwloc_set_t and
> hwloc_set_foo functions. With #define and aliases to not break API/ABIs.

I'm in favor of this -- it would end the overloading of the term "cpuset" 
between hwloc and cpuset.

It would be good to put a sunset date or version on when hwloc_cpuset_foo will 
expire (e.g., 6 months from now or two major revisions form now [1.3] -- 
whichever comes last...?).  I'd also prefer a typedef than a #define for types 
(vs. a #define).

-- 
Jeff Squyres
jsquy...@cisco.com
For corporate legal information go to:
http://www.cisco.com/web/about/doing_business/legal/cri/


Reply via email to