OpenMP/Benchmarks

From GRASS-Wiki
Jump to navigation Jump to search

The idea of this wiki page is to explore which compiler and compiler flag combinations are most useful for speeding up computations without degrading data quality.

Neighborhood analysis

Performance using OpenMP and different compilers:

source|svn/sandbox/soeren/benchmarks/neighborhood_openmp/

Best to run it 4 times for each case, discard the first and average the next 3.

Example usage:

 unset OMP_NUM_THREADS
 time ./neighbor 5000 5000 23
 
 export OMP_NUM_THREADS=1
 time ./neighbor 5000 5000 23
 
 ...
 
 export OMP_NUM_THREADS=6
 time ./neighbor 5000 5000 23

Test setup: 5000x5000 array with a window size of 23x23 cells

Results table

CPU Available cores OMP NUM THREADS Time "real" Time "user" Time "sys" Compiler Compiler version Compiler flags OS System RAM Data sum Data mean
AMD Phenom II X6 1090T 6 1 129.17s 124.94s 0.75s gcc 4.4.5 -O0 Debian GNU/Linux 6.0.7 (squeeze) 8.0 gb
AMD Phenom II X6 1090T 6 2 64.64s 127.89s 0.31s gcc 4.4.5 -O0 Debian GNU/Linux 6.0.7 (squeeze) 8.0 gb
AMD Phenom II X6 1090T 6 4 37.26s 145.96s 0.52s gcc 4.4.5 -O0 Debian GNU/Linux 6.0.7 (squeeze) 8.0 gb
AMD Phenom II X6 1090T 6 6 25.17s 147.70s 0.49s gcc 4.4.5 -O0 Debian GNU/Linux 6.0.7 (squeeze) 8.0 gb
AMD Phenom II X6 1090T 6 1 34.86s 34.67s 0.19s gcc 4.4.5 -O3 Debian GNU/Linux 6.0.7 (squeeze) 8.0 gb
AMD Phenom II X6 1090T 6 2 18.38s 35.71s 0.13s gcc 4.4.5 -O3 Debian GNU/Linux 6.0.7 (squeeze) 8.0 gb
AMD Phenom II X6 1090T 6 4 10.04s 38.40s 0.32s gcc 4.4.5 -O3 Debian GNU/Linux 6.0.7 (squeeze) 8.0 gb
AMD Phenom II X6 1090T 6 6 7.03s 37.69s 0.29s gcc 4.4.5 -O3 Debian GNU/Linux 6.0.7 (squeeze) 8.0 gb