[gmx-users] AVX related compiler error during build with P100 RHEL7

Mark Abraham mark.j.abraham at gmail.com
Mon Jul 3 23:44:50 CEST 2017


Hi,

On Mon, Jul 3, 2017 at 10:50 PM Guyen Gn <guyen000 at gmail.com> wrote:

> Sorry for long wait on response, basically i followed the instruction at
> nvidia website:
>
> http://www.nvidia.com/object/gromacs-installation.html
>
> I instaled GPU driver versoin 369, as well as CUDA, gcc, cmake. After that
> it tells to run following:
>
> CC=gcc CXX=g++ cmake <GROMACS_SRC_DIR> -DGMX_OPENMP=ON -DGMX_GPU=ON -
> DGPU_DEPLOYMENT_KIT_ROOT_DIR=<GDK_PATH> -DGMX_BUILD_OWN_FFTW=ON -
> DGMX_PREFER_STATIC_LIBS=ON -DCMAKE_BUILD_TYPE=Release -
> DCMAKE_INSTALL_PREFIX=<GROMACS_INSTALL_DIR>
>
> I tweaked as follows to fit my environment I setup (basically just
> installation source and run directory:
> CC=gcc CXX=g++ cmake /root/gromacs/gromacs-2016 -DGMX_OPENMP=ON
> -DGMX_GPU=ON -DGPU_DEPLOYMENT_KIT_ROOT_DIR=/usr/local/cuda
> -DGMX_BUILD_OWN_FFTW=ON -DGMX_PREFER_STATIC_LIBS=ON
> -DCMAKE_BUILD_TYPE=Release
> -DCMAKE_INSTALL_PREFIX=/root/gromacs/gromacs-2016-run inside build.sh shell
> script.
>
> This is the full log, I highlighted toward the end section of code where it
> started to fail. It appears something related to AVX. Thanks.,
>
> [root at localhost gromacs-2016]# ./build.sh
> CMake Error: The source directory "/root/gromacs/gromacs-2016/-" does not
> exist.
> Specify --help for usage, or press the help button on the CMake GUI.
> ./build.sh: line 2: -DGMX_BUILD_OWN_FFTW=ON: command not found
> ./build.sh: line 3: -DCMAKE_BUILD_TYPE=Release: command not found
>

All the above is because your script needed editing to handle newlines from
your copy-paste.


> [root at localhost gromacs-2016]# nano -w build.sh
> [root at localhost gromacs-2016]# pwd
> /root/gromacs/gromacs-2016
> [root at localhost gromacs-2016]# mkdir ~/gromacs/gromacs-run
> [root at localhost gromacs-2016]# ./build.sh
> -- The C compiler identification is GNU 4.8.5
> -- The CXX compiler identification is GNU 4.8.5
> -- Check for working C compiler: /usr/bin/gcc
> -- Check for working C compiler: /usr/bin/gcc -- works
> -- Detecting C compiler ABI info
> -- Detecting C compiler ABI info - done
> -- Check for working CXX compiler: /usr/bin/g++
> -- Check for working CXX compiler: /usr/bin/g++ -- works
> -- Detecting CXX compiler ABI info
> -- Detecting CXX compiler ABI info - done
> -- Performing Test CXXFLAG_STD_CXX0X
> -- Performing Test CXXFLAG_STD_CXX0X - Success
> -- Performing Test CXX11_SUPPORTED
> -- Performing Test CXX11_SUPPORTED - Success
> -- Performing Test CXX11_STDLIB_PRESENT
> -- Performing Test CXX11_STDLIB_PRESENT - Success
> -- Looking for NVIDIA GPUs present in the system
> -- Number of NVIDIA GPUs detected: 2
> -- Found CUDA: /usr/local/cuda (found suitable version "8.0", minimum
> required is "5.0")
> -- Could NOT find NVML (missing:  NVML_INCLUDE_DIR)
> -- Checking for GCC x86 inline asm
> -- Checking for GCC x86 inline asm - supported
> -- Detecting best SIMD instructions for this CPU
> -- Detected best SIMD instructions for this CPU - AVX_512
> -- Try OpenMP C flag = [-fopenmp]
> -- Performing Test OpenMP_FLAG_DETECTED
> -- Performing Test OpenMP_FLAG_DETECTED - Success
> -- Try OpenMP CXX flag = [-fopenmp]
> -- Performing Test OpenMP_FLAG_DETECTED
> -- Performing Test OpenMP_FLAG_DETECTED - Success
> -- Found OpenMP: -fopenmp
> -- Performing Test CFLAGS_EXCESS_PREC
> -- Performing Test CFLAGS_EXCESS_PREC - Success
> -- Performing Test CFLAGS_COPT
> -- Performing Test CFLAGS_COPT - Success
> -- Performing Test CFLAGS_NOINLINE
> -- Performing Test CFLAGS_NOINLINE - Success
> -- Performing Test CXXFLAGS_EXCESS_PREC
> -- Performing Test CXXFLAGS_EXCESS_PREC - Success
> -- Performing Test CXXFLAGS_COPT
> -- Performing Test CXXFLAGS_COPT - Success
> -- Performing Test CXXFLAGS_NOINLINE
> -- Performing Test CXXFLAGS_NOINLINE - Success
> -- Looking for include file unistd.h
> -- Looking for include file unistd.h - found
> -- Looking for include file pwd.h
> -- Looking for include file pwd.h - found
> -- Looking for include file dirent.h
> -- Looking for include file dirent.h - found
> -- Looking for include file time.h
> -- Looking for include file time.h - found
> -- Looking for include file sys/time.h
> -- Looking for include file sys/time.h - found
> -- Looking for include file io.h
> -- Looking for include file io.h - not found
> -- Looking for include file sched.h
> -- Looking for include file sched.h - found
> -- Looking for include file regex.h
> -- Looking for include file regex.h - found
> -- Looking for gettimeofday
> -- Looking for gettimeofday - found
> -- Looking for sysconf
> -- Looking for sysconf - found
> -- Looking for nice
> -- Looking for nice - found
> -- Looking for fsync
> -- Looking for fsync - found
> -- Looking for _fileno
> -- Looking for _fileno - not found
> -- Looking for fileno
> -- Looking for fileno - found
> -- Looking for _commit
> -- Looking for _commit - not found
> -- Looking for sigaction
> -- Looking for sigaction - found
> -- Performing Test HAVE_BUILTIN_CLZ
> -- Performing Test HAVE_BUILTIN_CLZ - Success
> -- Performing Test HAVE_BUILTIN_CLZLL
> -- Performing Test HAVE_BUILTIN_CLZLL - Success
> -- Looking for clock_gettime in rt
> -- Looking for clock_gettime in rt - found
> -- Looking for feenableexcept in m
> -- Looking for feenableexcept in m - found
> -- Checking for sched.h GNU affinity API
> -- Performing Test sched_affinity_compile
> -- Performing Test sched_affinity_compile - Success
> -- Looking for include file mm_malloc.h
> -- Looking for include file mm_malloc.h - found
> -- Looking for include file malloc.h
> -- Looking for include file malloc.h - found
> -- Looking for include file xmmintrin.h
> -- Looking for include file xmmintrin.h - found
> -- Checking for _mm_malloc()
> -- Checking for _mm_malloc() - supported
> -- Looking for posix_memalign
> -- Looking for posix_memalign - found
> -- Looking for memalign
> -- Looking for memalign - not found
> -- Check if the system is big endian
> -- Searching 16 bit integer
> -- Looking for sys/types.h
> -- Looking for sys/types.h - found
> -- Looking for stdint.h
> -- Looking for stdint.h - found
> -- Looking for stddef.h
> -- Looking for stddef.h - found
> -- Check size of unsigned short
> -- Check size of unsigned short - done
> -- Using unsigned short
> -- Check if the system is big endian - little endian
> Searching for static libraries requested, so the GROMACS libraries will
> also be static (BUILD_SHARED_LIBS=OFF)
> -- Could NOT find Hwloc (missing:  HWLOC_LIBRARIES HWLOC_INCLUDE_DIRS)
> (Required is at least version "1.5")
> -- Looking for include file pthread.h
> -- Looking for include file pthread.h - found
> -- Looking for pthread_create
> -- Looking for pthread_create - not found
> -- Looking for pthread_create in pthreads
> -- Looking for pthread_create in pthreads - not found
> -- Looking for pthread_create in pthread
> -- Looking for pthread_create in pthread - found
> -- Found Threads: TRUE
> -- Looking for include file pthread.h
> -- Looking for include file pthread.h - found
> -- Atomic operations found
> -- Performing Test PTHREAD_SETAFFINITY
> -- Performing Test PTHREAD_SETAFFINITY - Success
> -- Check if the system is big endian
> -- Searching 16 bit integer
> -- Using unsigned short
> -- Check if the system is big endian - little endian
> -- Looking for inttypes.h
> -- Looking for inttypes.h - found
> -- Enabling single compilation unit for the CUDA non-bonded module.
> Multiple compilation units are not compatible with CC 2.x devices, to
> enable the feature specify only CC >=3.0 target architectures in
> GMX_CUDA_TARGET_SM/GMX_CUDA_TARGET_COMPUTE.
> -- Setting build user/date/host/cpu information
> -- Setting build user & time - OK
> -- Checking for 64-bit off_t
> -- Checking for 64-bit off_t - present
> -- Checking for fseeko/ftello
> -- Checking for fseeko/ftello - present
> -- Checking for SIGUSR1
> -- Checking for SIGUSR1 - found
> -- Checking for pipe support
> -- Looking for C++ include regex
> -- Looking for C++ include regex - found
> -- Checking for system XDR support
> -- Checking for system XDR support - present
> -- Performing Test C_xMIC_AVX512_FLAG_WORKS


Aha. This is a known issue that we have fixed, but not yet made available
in a released version. When we wrote this code, we had no Skylake machines
to test on. See
https://gerrit.gromacs.org/c/6570/2/cmake/gmxManageSimd.cmake for the form
of the fix. You can simply edit that single line in
cmake/gmxManageSimd.cmake in your source directory and all will be fine -
maybe a fresh build directory will help.

Mark


More information about the gromacs.org_gmx-users mailing list