[Beowulf] Infiniband and multi-cpu configuration

Craig Tierney Craig.Tierney at noaa.gov
Mon Feb 11 07:10:36 PST 2008


Guillaume Michal wrote:
 > Hi all,
 > We set up our first cluster in our faculty this week. As we are new to cluster computing, there is a lot to learn. We performed 
some linpack test using the OpenMPI benchmark available in the Rocks 4.3 distribution. The system is as follow:
 >  - GigB ethernet with switch HP Procurve 2800 series
 >  - 1 Master node: 500GB sata HDD, two intel quad core E5410 at 2.33GHz, 2GB mem
 >  - 4 nodes each having: 80GB sata HDD, two intel quad core E5410 at 2.33GHz, 8GB mem
 >
 > First I'm a bit confused by the parameters P and Q in HPL.dat and how to use them properly. I noticed a 4P 2Q test is not 
equivalent to a 2P 4Q, generally speaking it does not commute. Why? What is clearly P and Q then: P for number of processors per 
nodes and Q for the number of nodes?
 >

Visualize the problem as a big 2d matrix.  P and Q represent how the problem
is divided.  In general, the best is when the matrix is divided into even squares.
If your core count isn't n^2, then P and Q have to be different.  From experience
P should always be less than Q.  There may be a computational reason for that
(ie, longer strides in memory), but I am not sure.


 > Secondly, what is the definition of processor for a quad core architecture? I suppose a quad core should be counted as 4 processors.

Yes, unless you are using a multithreaded BLAS library.  If you are,
you should have each node be 1 process.

 >
 > I launched Linpack using Ns=10000 and various configuration for P and Q. At the moment I got a maximum of 78 Gflops using P=8 Q=4 
-> 32 processors.

You want to use as much available memory as possible.  I use N=10000 on a
single processor, single core run with 1GB.   You can figure out a good
value of N by the following formula:

Ns=sqrt(<Memory in Bytes per core>*<Number of cores>/8)

The 8 represents the size of a double.  For <Memory in Bytes per core>, I try
to use the largest number possible, typically about 90% of max.  You never
want to go into swap during these calculations (or, have it crash because
you have diskless nodes).

Ex: If you have 2GB per core for 32p, should use Ns as:

Ns=sqrt(1900*1024*1024*32/8)
Ns=89270

Honestly, this may be overkill.  At some point, the working memory set will
be large enough so that FP performance will be the bottleneck.  I would
start with smaller numbers (say half) and work your way up to understand
what is going on.  In any case, using Ns=10000 is way to small.

 >
 > If I'm right the peak performance should be Rpeak= 4 cores x 4 floting point op per cycle x 2.33 Ghz x 8 quad cores = 298 Gflops.
 > Which would lead to a test running at ~25% Rpeak.
 >
 > This is very low and I see 3 causes for the problem:
 >     - I miscalculated Rpeak
 >     - P and Q are not set properly
 >     - there is a serious bottelneck
 >

I think your Rpeak calculation is correct (not sure how many FPs the latest
Intel chips can do).

If increasing Ns doesn't help, run smaller cases on a per node bases (using
all available memory for each node).  If you don't get the exact same
answer on every node (or at least with 2%), you have a problem.  Figure out
what is wrong with the slow nodes.  Also, run the test multiple times
on the same node and verify consistent performance.

Craig




 > Thanks for your advices
 >
 > Guillaume
 >
 >
 > --Using Opera's revolutionary e-mail client: http://www.opera.com/mail/
 >
 > _______________________________________________
 > Beowulf mailing list, Beowulf at beowulf.org
 > To change your subscription (digest mode or unsubscribe) visit http://www.beowulf.org/mailman/listinfo/beowulf
 >


-- 
Craig Tierney (craig.tierney at noaa.gov)



More information about the Beowulf mailing list