Nahajate se tukaj

ppgplasma

PPGPLASMA benchmark

Razvita programska koda je za namene primerjave različnih superračunalnikov služila tudi za izbor arhitekture HPCFS. Ker je koda predvsem računsko intenzivna se je izkazalo, da vključeno nitkanje z navideznimi jedri (hyperthreading) na procesorjih Intel bistveno pomaga k hitrosti izračunavanja. Pospešek zaradi hyerthreadinga je lahko tudi do 50%.  Teste smo izvajali tudi na naslednjih evropskih sestavih:

  1. EFDA-ITM Gateway - AMD 2352 (Barcelona) - http://www.efda-itm.eu/
  2. Mellanox inc. Cluster - Vesta - AMD  AMD 6136 (Magny cours) - http://www.hpcadvisorycouncil.com/cluster_center.php
  3. Juelich supercomputing centre - Cluster HPC-FF- Intel X5570 (Nehalem-EP) - http://www.fz-juelich.de/jsc/juropa/
  4. Univerza v Innsbrucku - LEO1 - AMD 6172 (Opteron)- http://www.uibk.ac.at/zid/systeme/hpc-systeme/leo1/

ppgplasma je OpenMP program z dobrim izkoristkom jeder. Sam program ne potrebuje velike količine spomina. Test s 1000 iteracijami se je izvajal na  Intel(R) Xeon(R) CPU E5530 @ 2.40GHz. Naslednji rezultati kaže, da hyperthreading pomaga, saj je kar 20 minut hitrejši.

L5520 @2.4GHz
16 core hyperthreaded
real    38m22.848s = 1.57 simulacij/uro
user    527m41.671s
sys     0m17.905s

--------------------
Brez hyperthreadinga
real    59m10.142s = 1.01 simulacij/uro
user    392m20.983s
sys     0m21.797s
--------------------
AMD opteron 6172 2.1GHz 24 jeder ICC 11.0.64
real    24m32.034s = 2.45 simulacij/uro
user    586m53.318s
sys     0m24.423s

AMD opteron 6172 2.1GHz 24 jeder GCC 4.1.2
real    30m26.910s = 1.97 simulacij/uro
user    727m19.618s
sys     0m15.256s

OMP_NUM_THREADS=12 
real    49m22.439s = 1.21 simulacij/uro 
user    591m5.875s
sys     0m9.801s

[test03@g34001 benchmark]$ time numactl --physcpubind=0-11 ../ppgplasma
real    50m42.918s
user    600m12.083s
sys     0m20.121s

OMP_NUM_THREADS=8
real    74m9.189s = 0.80 simulacij/uro
user    591m54.043s
sys     0m7.667s

[test03@g34001 benchmark]$ time numactl --physcpubind=0-11 ../ppgplasma
real    73m48.885s
user    589m7.458s
sys     0m8.365s

OMP_NUM_THREADS=8 GCC 4.1.2
real    113m37.603s = 0.52 simulacij/uro
user    741m40.096s
sys     0m1.954s


----------------------
X5570 z 8 jedri @2.93GHz JUROPA-FF ICC 11.1
resources_used.cput=04:28:57
resources_used.mem=6020kb
resources_used.vmem=561268kb
resources_used.walltime=00:34:01 = 1.76 simulacij/uro

X5570 z 8 jedri @2.93GHz JUROPA-FF GCC 4.3.2
real    38m12.247s = 1.57 simulacij/uro
user    302m13.517s
sys     0m0.300s

----------------------

Quad-Core AMD Opteron(tm) Processor 2352 @2.1GHz 8 jeder
ICC 11.0
real    81m44.290s
user    652m11.059s
sys     0m12.867s
GCC 4.1.2
real    93m22.213s
user    742m11.883s
sys     0m5.561s
AMD Opteron(tm) Processor 2354 @2.2GHz Open64 4.2.3.1 8 jeder (front node)
real    88m47.011s
user    663m35.465s
sys     0m14.707s

Primerjava Open64 4.2.3.1 in Icc 11.1 prevajalnika

Za te teste je potrebno izklopiti long double integracijo

//#define GSL_INTEG_LONG_DOUBLE
Intel(R) Xeon(R) CPU           X5570  @ 2.93GHz -  8 core ICC 11.1 -O2
real    32m39.925s
AMD Opteron(tm) Processor 6172 - 24 core Open64 4.2.3.1 -O3
real    28m31.815s
user    676m47.334s
sys     0m5.577s
AMD Opteron(tm) Processor 6172 - 24 core Open64 4.2.3.1 -O3 OMP_NUM_THREADS=8
real    86m11.561s
user    684m9.541s
sys     0m2.107s

čas v minutah za 100 iteracij/ simulacij na uro

CPU AMD 6172 @2.1GHz Open64 -O3 AMD 6172 @2.1GHz ICC 11.1 -O2

AMD 2352 @2.1GHz ICC 11.0 -O3

AMD 2352 @2.1GHz GCC 4.1.2 -O3 AMD 2352 @2.1GHz Open64 4.2.3 -O3 Intel X5570 @2.93GHz ICC 11.1 -O2 Intel X5570 @2.93GHz GCC 4.3.2 -O3

AMD 6176SE @2.3GHz /skalirano *1.095

AMD 6136 @2.4HGHz /skalirano *1.142
1 67.1 / 0.89 53.7 / 1.11 64.5 / 0.93 69.5 / 0.86 68.1 / 0.88 25.7 / 2.33 28.9 / 2.07  / 1.21  47.6 / 1.26
2 33.92 / 1.76 27.4 / 2.19 38.4 / 1.56 41.7 / 1.44 40.1 / 1.50 13.13 / 4.57 14.7 / 4.08    
3 22.83 / 2.62 18.5 / 3.24 26.4 / 2.27 28.0 / 2.14 27.3 / 2.20 8.71 / 6.89  9.76 / 6.15    
4 17.23 / 3.48 13.9 / 4.31 18.4 / 3.26 19.9 / 3.01 19.0 / 3.16 6.51 / 9.22  7.33 / 8.19    
6 11.46 / 5.23 9.25 / 6.49 11.9 / 5.04 12.5 / 4.80 12.4 / 4.83 4.36 / 13.8  4.88 / 12.3    
8 8.70 / 6.90 6.98 / 8.60 8.21 / 7.30 8.86 / 6.77 8.69 / 6.90 3.25 / 18.5  3.72 / 16.1  6.37/ 9.41  6.12 / 9.8
12 5.75 / 10.43 4.62 / 12.98
    ~2.16 / ~27.8 (1)
     
16 4.37 / 13.72 3.48 / 17.24              3.04 / 19.7
24 2.85 / 21.05 2.31 / 25.97       ~1.37 / ~43.6 (2)    2.1 / 28.44  
32                  ~1.5 / ~39.4
48   ~1.15/~51.94            1.05 / 56.9  

(1) Projekcija za X5670 - skalirano z 12/8
(2) Projekcija s hyperthreadingom *1.57

Zaključek

Iz zgornjih testov lahko izpeljemo naslednje ugotovitve:

  1. Med -O2 in -O3 za Intel 11.1 prevajalnik ni nikakršne razlike. 
  2. Na Xeon procesorjih je ICC okoli 15% hitrejši od GCC
  3. Na AMD procesorjih je  ICC okoli 8% hitrejši od GCC
  4. Na AMD procesorjih je Open64 okoli 2% hitrejši od GCC
  5. AMD Magny-Cour je pri isti frekvenci 20% hitrejši od Barcelone
  6. 12 Xeon  jeder s HT je približno isto zmogljivo kot 32 Opteron jeder
  7. Uporaba HyperThreadinga je primerna nastavitev če je možno pripenjanje procesov