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 >