[mvapich-discuss] mvapich2-1.4.0 question about CPU affinity
Dhabaleswar Panda
panda at cse.ohio-state.edu
Fri Oct 30 14:49:13 EDT 2009
Dr. Kallies,
Thanks for your note. We are analyzing the situations you have described
and we will get back to you soon. Our long-term objective is to provide
the best intelligence within the MVAPICH2 library to come up with the most
efficient CPU binding for multi-core platforms. As you know, multi-core
platforms come with all different configurations, cache sizes/speeds and
memory sizes/speeds. Similarly, parallel applications have diverse
computation and communication requirements. Thus, if some specific
user-defined CPU mapping is good for a particular application and
platform, it can always be used by the user-defined CPU mapping option of
the MVAPICH2 library.
Best Regards,
DK
On Fri, 30 Oct 2009, Bernd Kallies wrote:
> Dear list members,
>
> I ran mvapich2 v1.4.0 on clusters equipped with Intel Xeon E5472
> (Harpertown/Penryn, 4 cores per socket, 2 sockets per node) and Intel
> Xeon X5570 (Gainestown/Nehalem, 4 cores per socket, 2 sockets per node).
>
> I analyzed the default CPU affinity maps applied by mvapich2 1.4.0
> (MV2_CPU_MAPPING is unset, MV2_ENABLE_AFFINITY is 1). For code see
> https://www.hlrn.de/home/view/System/PlaceMe
>
> It seems to me that the following maps are applied:
> 1) Harpertown: 0:2:4:6:1:3:5:7
> 2) Gainestown: 0:1:2:3:4:5:6:7
>
> The map found for Hapertown is different from previous mvapich2
> releases, but is still far away from "Optimal runtime CPU binding" as
> written in the Changelog.
>
> The lstopo tool of the hwloc package
> http://www.open-mpi.org/projects/hwloc/
> gives for a node with Harpertown CPUs:
>
> System(15GB)
> Socket#0
> L2(6144KB)
> L1(32KB) + Core#0 + P#0
> L1(32KB) + Core#1 + P#2
> L2(6144KB)
> L1(32KB) + Core#2 + P#4
> L1(32KB) + Core#3 + P#6
> Socket#1
> L2(6144KB)
> L1(32KB) + Core#0 + P#1
> L1(32KB) + Core#1 + P#3
> L2(6144KB)
> L1(32KB) + Core#2 + P#5
> L1(32KB) + Core#3 + P#7
>
> So, on this architecture the "optimal" affinity map for a pure MPI
> application is 0:1:4:5:2:3:6:7, because one has to try to minimize usage
> of shared L2 caches as much as possible (run 4 tasks on 0:1:4:5, not on
> 0:2:4:6 as mvapich2 does).
>
> On the other hand, the map applied on Gainestown is correct (minimizes
> usage of shared L3 cache and NUMA node memory). The topology map is here
>
> System(47GB)
> Node#0(23GB) + Socket#0 + L3(8192KB)
> L2(256KB) + L1(32KB) + Core#0
> P#0
> P#8
> L2(256KB) + L1(32KB) + Core#1
> P#2
> P#10
> L2(256KB) + L1(32KB) + Core#2
> P#4
> P#12
> L2(256KB) + L1(32KB) + Core#3
> P#6
> P#14
> Node#1(23GB) + Socket#1 + L3(8192KB)
> L2(256KB) + L1(32KB) + Core#0
> P#1
> P#9
> L2(256KB) + L1(32KB) + Core#1
> P#3
> P#11
> L2(256KB) + L1(32KB) + Core#2
> P#5
> P#13
> L2(256KB) + L1(32KB) + Core#3
> P#7
> P#15
>
> I'm wondering if I made a mistake or understood something wrong, or if
> there is some bug in the mvapich2 intelligence that seems to be used to
> analyze the cpu topology, or if this intelligence might become increased
> in future mvapich2 releases to reduce the need to know a value of
> MV2_CPU_MAPPING on a particular architecture, which is more suitable
> than the default.
>
> Sincerely, BK
>
> --
> Dr. Bernd Kallies
> Konrad-Zuse-Zentrum für Informationstechnik Berlin
> Takustr. 7
> 14195 Berlin
> Tel: +49-30-84185-270
> Fax: +49-30-84185-311
> e-mail: kallies at zib.de
>
>
> _______________________________________________
> mvapich-discuss mailing list
> mvapich-discuss at cse.ohio-state.edu
> http://mail.cse.ohio-state.edu/mailman/listinfo/mvapich-discuss
>
More information about the mvapich-discuss
mailing list