<div class="gmail_quote">On Fri, Jan 20, 2012 at 15:27, Dominik Szczerba <span dir="ltr">&lt;<a href="mailto:dominik@itis.ethz.ch">dominik@itis.ethz.ch</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div id=":x5">I am running some performance tests on a distributed cluster each node<br>
16 cores (Cray).<br>
I am very surprised to find that my benchmark jobs are about 3x slower when<br>
running on N nodes using all 16 cores than when running on N*16 nodes<br>
using only one core.</div></blockquote><div><br></div><div>Yes, this is normal. Memory bandwidth is the overwhelming bottleneck for most sparse linear algebra. One core can almost saturate the bandwidth of a socket, so you see little benefit from the extra cores.</div>
<div><br></div><div>Pay attention to memory bandwidth when you buy computers and try to make your algorithms use a lot of flops per memory access if you want to utilize the floating point hardware you have lying around.</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div id=":x5"> I find this using 2 independent petsc builds and<br>
they both exibit the same behavior: my own gnu<br>
build and the system module petsc, both 3.2. I was so far unable to<br>
build my own petsc version with cray compilers to compare.<br>
<br>
The scheme is relatively complex with a shell matrix and block<br>
preconditioners, transient non-linear problem. I am using boomeramg<br>
from hypre.<br>
<br>
What do you think this unexpected performance may come from? Is it<br>
possible that the node interconnect is faster than the shared memory<br>
bus on the node? I was expecting the exact opposite.</div></blockquote></div><br>