Ralph filed https://svn.open-mpi.org/trac/ompi/ticket/3075 about this.
I just reviewed Brice's patch and it looks good to me (it looks like I forgot to update the logical/physical conversion in the module_set/get methods). Thanks! On Apr 12, 2012, at 1:46 AM, Brice Goglin wrote: > Hello Tetsuya, > I think it's expected that the displayed cpusets are different. > I only converted the code that applies/retrieves the binding, I did not > touch the code that prints it. > Good to know it works. > Brice > > > > Le 12/04/2012 05:24, tmish...@jcity.maeda.co.jp a écrit : >> Hi, Brice. >> >> Thank you for sending me a patch. Now, I quickly tested your try2.patch. >> >> Then, regarding execution speed it works well. >> But, in terms of core binding reports, it's still different from >> openmpi-1.5.4. >> I'm not sure which is better for a standard user like me, reporting logical >> indexes or physical ones. >> >> patched openmpi-1.5.5 Reports: >> [node03.cluster:09780] [[43552,0],0] odls:default:fork binding child >> [[43552,1],1] to cpus 00f0 >> [node03.cluster:09780] [[43552,0],0] odls:default:fork binding child >> [[43552,1],2] to cpus 0f00 >> [node03.cluster:09780] [[43552,0],0] odls:default:fork binding child >> [[43552,1],3] to cpus f000 >> [node03.cluster:09780] [[43552,0],0] odls:default:fork binding child >> [[43552,1],4] to cpus f0000 >> [node03.cluster:09780] [[43552,0],0] odls:default:fork binding child >> [[43552,1],5] to cpus f00000 >> [node03.cluster:09780] [[43552,0],0] odls:default:fork binding child >> [[43552,1],6] to cpus f000000 >> [node03.cluster:09780] [[43552,0],0] odls:default:fork binding child >> [[43552,1],7] to cpus f0000000 >> [node03.cluster:09780] [[43552,0],0] odls:default:fork binding child >> [[43552,1],0] to cpus 000f >> >> Regards, >> Tetsuya Mishima >> >>> Here's a better patch. Still only compile tested :) >>> Brice >>> >>> >>> Le 11/04/2012 10:36, Brice Goglin a écrit : >>> >>> A quick look at the code seems to confirm my feeling. get/set_module() >>> callbacks manipulate arrays of logical indexes, and they do not convert >>> them back to physical indexes before binding. >>> >>> Here's a quick patch that may help. Only compile tested... >>> >>> Brice >>> >>> >>> >>> Le 11/04/2012 09:49, Brice Goglin a écrit : >>> >>> Le 11/04/2012 09:06, tmish...@jcity.maeda.co.jp a écrit : >>> >>> Hi, Brice. >>> >>> I installed the latest hwloc-1.4.1. >>> Here is the output of lstopo -p. >>> >>> [root@node03 bin]# ./lstopo -p >>> Machine (126GB) >>> Socket P#0 (32GB) >>> NUMANode P#0 (16GB) + L3 (5118KB) >>> L2 (512KB) + L1 (64KB) + Core P#0 + PU P#0 >>> L2 (512KB) + L1 (64KB) + Core P#1 + PU P#4 >>> L2 (512KB) + L1 (64KB) + Core P#2 + PU P#8 >>> L2 (512KB) + L1 (64KB) + Core P#3 + PU P#12 >>> >>> Ok then the cpuset of this numanode is 1111. >>> >>> [node03.cluster:21706] [[55518,0],0] odls:default:fork binding child >>> [[55518,1],0] to cpus 1111 >>> >>> So openmpi 1.5.4 is correct. >>> >>> [node03.cluster:04706] [[40566,0],0] odls:default:fork binding child >>> [[40566,1],0] to cpus 000f >>> >>> And openmpi 1.5.5 is indeed wrong. >>> >>> Random guess: 000f is the bitmask made of hwloc *logical* indexes. hwloc >>> cpusets (used for binding) are internally made of hwloc *physical* >>> indexes (1111 here). >>> >>> Jeff, Ralph: >>> How does OMPI 1.5.5 build hwloc cpusets for binding? Are you doing >>> bitmap operations on hwloc object cpusets? >>> If yes, I don't know what's going wrong here. >>> If no, are you building hwloc cpusets manually by setting individual >>> bits from object indexes? If yes, you must use *physical* indexes to do >> so. >>> Brice >>> >>> _______________________________________________ >>> users mailing >> listusers@open-mpi.orghttp://www.open-mpi.org/mailman/listinfo.cgi/users >>> >>> >>> _______________________________________________ >>> users mailing >> listusers@open-mpi.orghttp://www.open-mpi.org/mailman/listinfo.cgi/users >>> >>> >>> --- opal/mca/paffinity/hwloc/paffinity_hwloc_module.c.old 2012-04-11 >> 10:19:36.766710073 +0200 >>> +++ opal/mca/paffinity/hwloc/paffinity_hwloc_module.c 2012-04-11 >> 11:13:52.930438083 +0200 >>> @@ -164,9 +164,10 @@ >>> >>> static int module_set(opal_paffinity_base_cpu_set_t mask) >>> { >>> - int i, ret = OPAL_SUCCESS; >>> + int ret = OPAL_SUCCESS; >>> hwloc_bitmap_t set; >>> hwloc_topology_t *t; >>> + hwloc_obj_t pu; >>> >>> /* bozo check */ >>> if (NULL == opal_hwloc_topology) { >>> @@ -178,10 +179,11 @@ >>> if (NULL == set) { >>> return OPAL_ERR_OUT_OF_RESOURCE; >>> } >>> - hwloc_bitmap_zero(set); >>> - for (i = 0; ((unsigned int) i) < OPAL_PAFFINITY_BITMASK_CPU_MAX; + >> +i) { >>> - if (OPAL_PAFFINITY_CPU_ISSET(i, mask)) { >>> - hwloc_bitmap_set(set, i); >>> + for (pu = hwloc_get_obj_by_type(*t, HWLOC_OBJ_PU, 0); >>> + pu && pu->logical_index < OPAL_PAFFINITY_BITMASK_CPU_MAX; >>> + pu = pu->next_cousin) { >>> + if (OPAL_PAFFINITY_CPU_ISSET(pu->logical_index, mask)) { >>> + hwloc_bitmap_set(set, pu->os_index); >>> } >>> } >>> >>> @@ -196,9 +198,10 @@ >>> >>> static int module_get(opal_paffinity_base_cpu_set_t *mask) >>> { >>> - int i, ret = OPAL_SUCCESS; >>> + int ret = OPAL_SUCCESS; >>> hwloc_bitmap_t set; >>> hwloc_topology_t *t; >>> + hwloc_obj_t pu; >>> >>> /* bozo check */ >>> if (NULL == opal_hwloc_topology) { >>> @@ -218,9 +221,11 @@ >>> ret = OPAL_ERR_IN_ERRNO; >>> } else { >>> OPAL_PAFFINITY_CPU_ZERO(*mask); >>> - for (i = 0; ((unsigned int) i) < 8 * sizeof(*mask); i++) { >>> - if (hwloc_bitmap_isset(set, i)) { >>> - OPAL_PAFFINITY_CPU_SET(i, *mask); >>> + for (pu = hwloc_get_obj_by_type(*t, HWLOC_OBJ_PU, 0); >>> + pu && pu->logical_index < 8 * sizeof(*mask); >>> + pu = pu->next_cousin) { >>> + if (hwloc_bitmap_isset(set, pu->os_index)) { >>> + OPAL_PAFFINITY_CPU_SET(pu->logical_index, *mask); >>> } >>> } >>> } >>> >>> _______________________________________________ >>> users mailing list >>> us...@open-mpi.org >>> http://www.open-mpi.org/mailman/listinfo.cgi/users >> >> _______________________________________________ >> users mailing list >> us...@open-mpi.org >> http://www.open-mpi.org/mailman/listinfo.cgi/users > > _______________________________________________ > users mailing list > us...@open-mpi.org > http://www.open-mpi.org/mailman/listinfo.cgi/users -- Jeff Squyres jsquy...@cisco.com For corporate legal information go to: http://www.cisco.com/web/about/doing_business/legal/cri/