<html>
<head>
<style>
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Verdana
}
</style>
</head>
<body class='hmmessage'>
Hi,<br><br>This problem is not very strange at all.<br>Different CPU's have different efficiencies for different types of code.<br>In this case the Opteron and new Xeon have measurably different<br>(although probably not more than 20%) relative performance<br>for particle-particle and PME interactions.<br><br>Also, your results tell you exactly what the problem is.<br>If without seperate PME nodes PME takes 44.1% of the time,<br>you will not get good load balancing by using 5 PP and 3 PME nodes<br>(which gives 37.5% PME processing power).<br><br>You can simply try different -npme, including 0, and see when<br>you get the best performance.<br><br>BTW, a cut-off of 1.0 nm with a fourierspacing of 0.16 gives<br>pretty bad accuracy, you should increase the cut-off or decrease the spacing.<br>A reasonable ratio off cut-off/fourier_spacing is 8.<br>Increasing the cut-off will reduce the relative PME load, which will<br>make load balancing easier and PME communication less costly.<br><br>Berk<br><br>&gt; Date: Wed, 2 Sep 2009 21:52:47 -0500<br>&gt; From: dadriano@gmail.com<br>&gt; To: gmx-users@gromacs.org<br>&gt; Subject: [gmx-users] Scaling problems in 8-cores nodes with GROMACS 4.0x<br>&gt; <br>&gt; Dear Gromacs users, (all related to GROMACS ver 4.0.x)<br>&gt; <br>&gt; I am facing a very strange problem on a recently acquired supermicro 8<br>&gt; XEON-cores nodes (2.5GHz quad-core/node, 4G/RAM with the four memory<br>&gt; channels activated, XEON E5420, 20Gbs Infiniband Infinihost III Lx<br>&gt; DDR): I had been testing these nodes with one of our most familiar<br>&gt; protein model (49887 atoms: 2873 for protein and the rest for water<br>&gt; into a dodecahedron cell) which I known scales almost linearly until<br>&gt; 32 cores in a quad-core/node Opteron 2.4 GHz cluster. Now, with our<br>&gt; recently acquired nodes I have severe imbalance PME/PP ratios (from<br>&gt; 20% and up). At the beginning I think that this problem was related to<br>&gt; Infiniband latency problems, but recently I made a test that gave me a<br>&gt; big surprise: since my model scales very well to 8 cores I spreaded it<br>&gt; to 8 cores into four machines and the performance was the same than in<br>&gt; a single node, which in turns suggests that the problem could be<br>&gt; caused by a different reason that latency. After several tests I<br>&gt; realized that the problem arises when the process is divided into PME<br>&gt; and PP nodes, even into a single node!!!, it is to say:<br>&gt; -if for a short job I do (it is exactly the same for a long run):<br>&gt; srun -n8 /home/dsilva/PROGRAMAS/gromacs-4.0.5-mavapich2_gcc-1.2p1/bin/mdrun<br>&gt; -v -dlb yes -deffnm FULL01/full01<br>&gt; <br>&gt;  Average load imbalance: 0.7 %<br>&gt;  Part of the total run time spent waiting due to load imbalance: 0.2 %<br>&gt;  Steps where the load balancing was limited by -rdd, -rcon and/or<br>&gt; -dds: X 0 % Y 0 %<br>&gt; <br>&gt; <br>&gt;      R E A L   C Y C L E   A N D   T I M E   A C C O U N T I N G<br>&gt; <br>&gt;  Computing:         Nodes     Number     G-Cycles    Seconds     %<br>&gt; -----------------------------------------------------------------------<br>&gt;  Domain decomp.         8        101       19.123        7.6     2.5<br>&gt;  Vsite constr.          8       1001        2.189        0.9     0.3<br>&gt;  Comm. coord.           8       1001        5.810        2.3     0.8<br>&gt;  Neighbor search        8        101       51.432       20.4     6.7<br>&gt;  Force                  8       1001      250.938       99.5    32.7<br>&gt;  Wait + Comm. F         8       1001       15.064        6.0     2.0<br>&gt;  PME mesh               8       1001      337.946      133.9    44.1<br>&gt;  Vsite spread           8       2002        2.991        1.2     0.4<br>&gt;  Write traj.            8          2        0.604        0.2     0.1<br>&gt;  Update                 8       1001       17.854        7.1     2.3<br>&gt;  Constraints            8       1001       35.782       14.2     4.7<br>&gt;  Comm. energies         8       1001        1.407        0.6     0.2<br>&gt;  Rest                   8                  25.889       10.3     3.4<br>&gt; -----------------------------------------------------------------------<br>&gt;  Total                  8                 767.030      304.0   100.0<br>&gt; -----------------------------------------------------------------------<br>&gt; <br>&gt;         Parallel run - timing based on wallclock.<br>&gt; <br>&gt;                NODE (s)   Real (s)      (%)<br>&gt;        Time:     38.000     38.000    100.0<br>&gt;                (Mnbf/s)   (GFlops)   (ns/day)  (hour/ns)<br>&gt; Performance:    254.161     14.534     11.380      2.109<br>&gt; <br>&gt; <br>&gt; <br>&gt; which in turns reflects that there are not separation between PME and<br>&gt; PP and scaling is almost lineal compared with 1 processor.  But if I<br>&gt; force PME, and use exactly the same number of processors :<br>&gt; srun -n8 --cpu_bind=rank<br>&gt; /home/dsilva/PROGRAMAS/gromacs-4.0.5-mavapich2_gcc-1.2p1/bin/mdrun -v<br>&gt; -dlb yes -npme 3 -deffnm FULL01/full01<br>&gt; <br>&gt; <br>&gt;  Average load imbalance: 0.5 %<br>&gt;  Part of the total run time spent waiting due to load imbalance: 0.2 %<br>&gt;  Steps where the load balancing was limited by -rdd, -rcon and/or -dds: X 0 %<br>&gt;  Average PME mesh/force load: 1.901<br>&gt;  Part of the total run time spent waiting due to PP/PME imbalance: 23.9 %<br>&gt; <br>&gt; NOTE: 23.9 % performance was lost because the PME nodes<br>&gt;       had more work to do than the PP nodes.<br>&gt;       You might want to increase the number of PME nodes<br>&gt;       or increase the cut-off and the grid spacing.<br>&gt; <br>&gt; <br>&gt;      R E A L   C Y C L E   A N D   T I M E   A C C O U N T I N G<br>&gt; <br>&gt;  Computing:         Nodes     Number     G-Cycles    Seconds     %<br>&gt; -----------------------------------------------------------------------<br>&gt;  Domain decomp.         5        101       14.660        5.9     1.4<br>&gt;  Vsite constr.          5       1001        1.440        0.6     0.1<br>&gt;  Send X to PME          5       1001        4.601        1.9     0.5<br>&gt;  Comm. coord.           5       1001        3.229        1.3     0.3<br>&gt;  Neighbor search        5        101       48.143       19.4     4.8<br>&gt;  Force                  5       1001      252.340      101.8    25.0<br>&gt;  Wait + Comm. F         5       1001        8.845        3.6     0.9<br>&gt;  PME mesh               3       1001      304.447      122.9    30.1<br>&gt;  Wait + Comm. X/F       3       1001       73.389       29.6     7.3<br>&gt;  Wait + Recv. PME F     5       1001      219.552       88.6    21.7<br>&gt;  Vsite spread           5       2002        3.828        1.5     0.4<br>&gt;  Write traj.            5          2        0.555        0.2     0.1<br>&gt;  Update                 5       1001       17.765        7.2     1.8<br>&gt;  Constraints            5       1001       31.203       12.6     3.1<br>&gt;  Comm. energies         5       1001        1.977        0.8     0.2<br>&gt;  Rest                   5                  25.105       10.1     2.5<br>&gt; -----------------------------------------------------------------------<br>&gt;  Total                  8                1011.079      408.0   100.0<br>&gt; -----------------------------------------------------------------------<br>&gt; <br>&gt;         Parallel run - timing based on wallclock.<br>&gt; <br>&gt;                NODE (s)   Real (s)      (%)<br>&gt;        Time:     51.000     51.000    100.0<br>&gt;                (Mnbf/s)   (GFlops)   (ns/day)  (hour/ns)<br>&gt; Performance:    189.377     10.354      8.479      2.831<br>&gt; <br>&gt; <br>&gt; As you can see I got a very bad performance, and this is also true if<br>&gt; I do not specify the number of PME nodes and spread the job into 11<br>&gt; processors (and goes worst with more processors), which gives me:<br>&gt; srun -n11 --cpu_bind=rank<br>&gt; /home/dsilva/PROGRAMAS/gromacs-4.0.5-mavapich2_gcc-1.2p1/bin/mdrun -v<br>&gt; -dlb yes -deffnm FULL01/full01<br>&gt; <br>&gt; NOTE: 11.9 % performance was lost because the PME nodes<br>&gt;       had more work to do than the PP nodes.<br>&gt;       You might want to increase the number of PME nodes<br>&gt;       or increase the cut-off and the grid spacing.<br>&gt; <br>&gt; <br>&gt;      R E A L   C Y C L E   A N D   T I M E   A C C O U N T I N G<br>&gt; <br>&gt;  Computing:         Nodes     Number     G-Cycles    Seconds     %<br>&gt; -----------------------------------------------------------------------<br>&gt;  Domain decomp.         6        101       15.450        6.2     1.6<br>&gt;  Vsite constr.          6       1001        1.486        0.6     0.2<br>&gt;  Send X to PME          6       1001        1.154        0.5     0.1<br>&gt;  Comm. coord.           6       1001        3.832        1.5     0.4<br>&gt;  Neighbor search        6        101       47.950       19.1     5.1<br>&gt;  Force                  6       1001      250.202       99.7    26.7<br>&gt;  Wait + Comm. F         6       1001       10.022        4.0     1.1<br>&gt;  PME mesh               5       1001      314.841      125.5    33.6<br>&gt;  Wait + Comm. X/F       5       1001      111.565       44.5    11.9<br>&gt;  Wait + Recv. PME F     6       1001      102.240       40.8    10.9<br>&gt;  Vsite spread           6       2002        2.317        0.9     0.2<br>&gt;  Write traj.            6          2        0.567        0.2     0.1<br>&gt;  Update                 6       1001       17.849        7.1     1.9<br>&gt;  Constraints            6       1001       31.215       12.4     3.3<br>&gt;  Comm. energies         6       1001        2.274        0.9     0.2<br>&gt;  Rest                   6                  25.283       10.1     2.7<br>&gt; -----------------------------------------------------------------------<br>&gt;  Total                 11                 938.249      374.0   100.0<br>&gt; -----------------------------------------------------------------------<br>&gt; <br>&gt;         Parallel run - timing based on wallclock.<br>&gt; <br>&gt;                NODE (s)   Real (s)      (%)<br>&gt;        Time:     34.000     34.000    100.0<br>&gt;                (Mnbf/s)   (GFlops)   (ns/day)  (hour/ns)<br>&gt; Performance:    284.388     15.963     12.719      1.887<br>&gt; <br>&gt; <br>&gt; <br>&gt; I had tried everything that came in my mind, from modify npme to<br>&gt; cpu_affinity and mdp cut-offs and fourierspacing, also recompiling<br>&gt; things and tried different versions of fftw. Please advice me with any<br>&gt; ideas, trps to test or any tips. My mdp options for this runs were:<br>&gt; <br>&gt; integrator      = md                        <br>&gt; dt              = 0.005                        <br>&gt; nsteps          = 1000                <br>&gt; <br>&gt; pbc             = xyz                <br>&gt; nstlist         = 10                        <br>&gt; rlist           = 1.0                        <br>&gt; ns_type         = grid                <br>&gt; <br>&gt; coulombtype     = pme                        <br>&gt; rcoulomb        = 1.0        <br>&gt; <br>&gt; vdwtype         = cut-off                <br>&gt; rvdw            = 1.0        <br>&gt; <br>&gt; tcoupl          = Berendsen                <br>&gt; tc-grps         = protein non-protein        <br>&gt; tau-t           = 0.1 0.1        <br>&gt; ref-t           = 318 318         <br>&gt; <br>&gt; Pcoupl          = Berendsen        <br>&gt; pcoupltype      = isotropic<br>&gt; tau-p           = 1.0                        <br>&gt; ref-p           = 1.0                 <br>&gt; compressibility = 4.5e-5<br>&gt; <br>&gt; fourierspacing       =  0.16<br>&gt; pme_order            =  4<br>&gt; optimize_fft         =  yes                <br>&gt; ewald_rtol           =  1e-5        <br>&gt; <br>&gt; gen_vel              =  yes        <br>&gt; gen_temp             =  318        <br>&gt; gen_seed             =  173529        <br>&gt; <br>&gt; constraints          =  all-bonds<br>&gt; constraint_algorithm =  lincs        <br>&gt; lincs_order          =  4        <br>&gt; <br>&gt; nstxout             =  5000        <br>&gt; nstvout             =  5000        <br>&gt; nstfout             =  0        <br>&gt; nstlog              =  5000<br>&gt; <br>&gt; nstenergy           =  5000<br>&gt; energygrps          =  Protein non-protein<br>&gt; <br>&gt; <br>&gt; Thanks.<br>&gt; Daniel Silva<br>&gt; _______________________________________________<br>&gt; gmx-users mailing list    gmx-users@gromacs.org<br>&gt; http://lists.gromacs.org/mailman/listinfo/gmx-users<br>&gt; Please search the archive at http://www.gromacs.org/search before posting!<br>&gt; Please don't post (un)subscribe requests to the list. Use the <br>&gt; www interface or send it to gmx-users-request@gromacs.org.<br>&gt; Can't post? Read http://www.gromacs.org/mailing_lists/users.php<br><br /><hr />Express yourself instantly with MSN Messenger! <a href='http://clk.atdmt.com/AVE/go/onm00200471ave/direct/01/' target='_new'>MSN Messenger</a></body>
</html>