We've also tested lama with

-np 10 --mca rmaps_base_verbose 10 --mca rmaps_lama_priority 91 --mca
rmaps_lama_map sNbnch --mca rmaps_lama_bind 1h --mca rmaps_lama_mppr 1:c,5:s

It seems like this would do the right thing except a priority < 10 does
nothing and greater than 10 segfaults.  Is lama still intended to be
supported?  If not, any other workarounds?

[node4:30795] [[32231,0],0]: Final mapper priorities
[node4:30795]     Mapper: lama Priority: 91
[node4:30795]     Mapper: ppr Priority: 90
[node4:30795]     Mapper: seq Priority: 60
[node4:30795]     Mapper: resilient Priority: 40
[node4:30795]     Mapper: mindist Priority: 20
[node4:30795]     Mapper: round_robin Priority: 10
[node4:30795]     Mapper: staged Priority: 5
[node4:30795]     Mapper: rank_file Priority: 0
[node4:30795] mca:rmaps: mapping job [32231,1]
[node4:30795] mca:rmaps: creating new map for job [32231,1]
[node4:30795] mca:rmaps: nprocs 10
[node4:30795] mca:rmaps[139] mapping not given - using bysocket
[node4:30795] mca:rmaps[288] binding not given - using bysocket
[node4:30795] mca:rmaps:lama: Mapping job [32231,1]
[node4:30795] mca:rmaps:lama: Revised Parameters -----
[node4:30795] mca:rmaps:lama: Map   : sNbnch
[node4:30795] mca:rmaps:lama: Bind  : 1h
[node4:30795] mca:rmaps:lama: MPPR  : 1:c,5:s
[node4:30795] mca:rmaps:lama: Order : s
[node4:30795] mca:rmaps:lama: ---------------------------------
[node4:30795] mca:rmaps:lama: ----- Binding  : [1h]
[node4:30795] mca:rmaps:lama: ----- Binding  :    1 x Hw. Thread
[node4:30795] mca:rmaps:lama: ---------------------------------
[node4:30795] mca:rmaps:lama: ----- Mapping  : [sNbnch]
[node4:30795] mca:rmaps:lama: ----- Mapping  : (0)     Socket (3 vs 0)
[node4:30795] mca:rmaps:lama: ----- Mapping  : (1)       NUMA (2 vs 1)
[node4:30795] mca:rmaps:lama: ----- Mapping  : (2)      Board (1 vs 2)
[node4:30795] mca:rmaps:lama: ----- Mapping  : (3)    Machine (0 vs 3)
[node4:30795] mca:rmaps:lama: ----- Mapping  : (4)       Core (7 vs 7)
[node4:30795] mca:rmaps:lama: ----- Mapping  : (5) Hw. Thread (8 vs 8)
[node4:30795] mca:rmaps:lama: ---------------------------------
[node4:30795] mca:rmaps:lama: ----- MPPR     : [1:c,5:s]
[node4:30795] mca:rmaps:lama: ----- MPPR     :    1 at       Core
[node4:30795] mca:rmaps:lama: ----- MPPR     :    5 at     Socket
[node4:30795] mca:rmaps:lama: ---------------------------------
[node4:30795] mca:rmaps:lama: ----- Ordering : [s]
[node4:30795] mca:rmaps:lama: ----- Ordering : Sequential
[node4:30795] mca:rmaps:lama: ---------------------------------
[node4:30795] AVAILABLE NODES FOR MAPPING:
[node4:30795]     node: node4 daemon: 0
[node4:30795] mca:rmaps:lama: ---------------------------------
[node4:30795] mca:rmaps:lama: ----- Building the Max Tree...
[node4:30795] mca:rmaps:lama: ---------------------------------
[node4:30795] mca:rmaps:lama: ----- Converting Remote Tree: node4
[node4:30795] *** Process received signal ***
[node4:30795] Signal: Segmentation fault (11)
[node4:30795] Signal code: Address not mapped (1)

Stephen

On 02/11/2016 05:30 PM, Stephen Guzik wrote:
> Hi,
>
> I would like to divide n processes between the sockets on a node, with
> one process per core, and bind them to a hwthread.  Consider a system
> with 2 sockets, 10 cores per socket, and 2 hwthreads per core.  If I enter
>
> -np 20 --map-by ppr:1:core --bind-to hwthread
>
> then this works as I intend.  But if I only want 10 processes with 5 on
> each socket, then
>
> -np 10 --map-by ppr:5:socket --bind-to hwthread
>
> will map two processes to each core (1 per hwthread).  I also tried
>
> -np 10 --map-by ppr:5:socket:pe=2 --bind-to hwthread
> -np 10 --map-by ppr:5:socket --bind-to core
>
> but both of those will bind to the core.  How can I say 5 per socket and
> only 1 per core and bind to a single hardware thread?
>
> I am using openmpi 1.8.8.
>
> Thanks,
> Stephen
>

Reply via email to