Difference between revisions of "Benchmarking: Gromacs-4.6"
Jump to navigation
Jump to search
(Created page with "Requirements cmake 2.8 Download Make 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_ROO...") |
|||
| (7 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== |
| + | wget ftp://ftp.gromacs.org/pub/gromacs/gromacs-4.6.tar.gz | ||
| − | + | ==Build== | |
| − | module load cmake/2.8.10.2 | + | module load cmake/2.8.10.2 |
| − | module load cuda/5.0 | + | module load cuda/5.0 |
| − | cmake ../gromacs-4.6 -DGMX_GPU=ON -DGMX_BUILD_OWN_FFTW=ON \ | + | cmake ../gromacs-4.6 -DGMX_GPU=ON -DGMX_BUILD_OWN_FFTW=ON \ |
-DCUDA_TOOLKIT_ROOT_DIR=/shared/apps/cuda/cuda-5.0 \ | -DCUDA_TOOLKIT_ROOT_DIR=/shared/apps/cuda/cuda-5.0 \ | ||
-DLIB_INSTALL_DIR=/shared/apps/cuda/gromacs/4.6/lib \ | -DLIB_INSTALL_DIR=/shared/apps/cuda/gromacs/4.6/lib \ | ||
| − | -DCMAKE_INSTALL_PREFIX=/ | + | -DCMAKE_INSTALL_PREFIX=/shared/apps/cuda/gromacs/4.6 |
| − | 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.