Difference between revisions of "Benchmarking: Gromacs-4.6"

From Define Wiki
Jump to navigation Jump to search
m
 
(5 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
==Requirements==
 
==Requirements==
  
# cmake 2.8
+
cmake 2.8 (for build) <br>
 +
CUDA 5.0
  
 
==Download==
 
==Download==
Line 18: Line 19:
  
 
  make -j 24
 
  make -j 24
 +
 +
==Modulefiles==
 +
File location: /shared/modulefiles <br>
 +
File name: gpu/gromacs/4.6
 +
 +
#%Module 1.0
 +
#
 +
prereq  cuda/5.0
 +
system "source /shared/apps/cuda/gromacs/4.6/bin/GMXRC.bash"
 +
prepend-path  PATH      /shared/apps/cuda/gromacs/4.6/bin
 +
prepend-path  LD_LIBRARY_PATH /shared/apps/cuda/gromacs/4.6/lib
 +
 +
==Run==
 +
module load gpu/gromacs/4.6
 +
mdrun -s <input file>
 +
 +
==Build Errors==
 +
===Intel Compilers===
 +
'''Error'''
 +
<pre>
 +
/home/boston/gromacs-4.6.3/include/gmx_math_x86_avx_128_fma_double.h(674): error: a value of type "int" cannot be assigned to an entity of type "__m128d"
 +
      PolyCP0  = _mm_macc_pd(PolyCP1, w, PolyCP0);
 +
              ^
 +
 +
compilation aborted for /home/boston/gromacs-4.6.3/src/gmxlib/bondfree.c (code 4)
 +
make[2]: *** [src/gmxlib/CMakeFiles/gmx.dir/bondfree.c.o] Error 4
 +
make[1]: *** [src/gmxlib/CMakeFiles/gmx.dir/all] Error 2
 +
make: *** [all] Error 2
 +
</pre>
 +
'''Fix'''
 +
<pre>
 +
You can fix the error by updating the CMakeCache.txt after you cmake Gromacs.
 +
 +
Update GMX_CPU_ACCELERATION:STRING=AVX_128_FMA to
 +
 +
//Accelerated CPU kernels. Pick one of: None, SSE2, SSE4.1, AVX_128_FMA,
 +
// AVX_256, IBM_QPX, Sparc64_HPC_ACE
 +
GMX_CPU_ACCELERATION:STRING=None
 +
 +
After which you can proceed with
 +
$ make
 +
$ make install
 +
 +
It’s probably because Intel compilers do not understand the intrinsic types of AMD (AVX_128_FMA as identified by Gromacs)
 +
Meaning: the Intel compiler cannot produce optimized code for AMD.
 +
</pre>

Latest revision as of 08:48, 15 January 2014

Requirements

cmake 2.8 (for build)
CUDA 5.0

Download

wget ftp://ftp.gromacs.org/pub/gromacs/gromacs-4.6.tar.gz

Build

module load cmake/2.8.10.2
module load cuda/5.0
cmake ../gromacs-4.6 -DGMX_GPU=ON -DGMX_BUILD_OWN_FFTW=ON \
     -DCUDA_TOOLKIT_ROOT_DIR=/shared/apps/cuda/cuda-5.0 \
     -DLIB_INSTALL_DIR=/shared/apps/cuda/gromacs/4.6/lib \
     -DCMAKE_INSTALL_PREFIX=/shared/apps/cuda/gromacs/4.6
make -j 24

Modulefiles

File location: /shared/modulefiles
File name: gpu/gromacs/4.6

#%Module 1.0
#
prereq  cuda/5.0
system "source /shared/apps/cuda/gromacs/4.6/bin/GMXRC.bash"
prepend-path  PATH      /shared/apps/cuda/gromacs/4.6/bin
prepend-path  LD_LIBRARY_PATH /shared/apps/cuda/gromacs/4.6/lib

Run

module load gpu/gromacs/4.6
mdrun -s <input file>

Build Errors

Intel Compilers

Error

/home/boston/gromacs-4.6.3/include/gmx_math_x86_avx_128_fma_double.h(674): error: a value of type "int" cannot be assigned to an entity of type "__m128d"
      PolyCP0  = _mm_macc_pd(PolyCP1, w, PolyCP0);
               ^

compilation aborted for /home/boston/gromacs-4.6.3/src/gmxlib/bondfree.c (code 4)
make[2]: *** [src/gmxlib/CMakeFiles/gmx.dir/bondfree.c.o] Error 4
make[1]: *** [src/gmxlib/CMakeFiles/gmx.dir/all] Error 2
make: *** [all] Error 2

Fix

You can fix the error by updating the CMakeCache.txt after you cmake Gromacs.
 
Update GMX_CPU_ACCELERATION:STRING=AVX_128_FMA to
 
//Accelerated CPU kernels. Pick one of: None, SSE2, SSE4.1, AVX_128_FMA,
// AVX_256, IBM_QPX, Sparc64_HPC_ACE
GMX_CPU_ACCELERATION:STRING=None
 
After which you can proceed with 
$ make
$ make install
 
It’s probably because Intel compilers do not understand the intrinsic types of AMD (AVX_128_FMA as identified by Gromacs)
Meaning: the Intel compiler cannot produce optimized code for AMD.