gmx_test__finite(HAVE__FINITE)
include(gmxTestCXX11)
-gmx_test_cxx11(GMX_CXX11 GMX_CXX11_FLAGS)
-if(CXX11_FLAG AND GMX_GPU)
- #FIXME: add proper solution for progate all but cxx11 flag
- set(CUDA_PROPAGATE_HOST_FLAGS no)
- message(WARNING "Please manually add compiler flags to CUDA_NVCC_FLAGS. Automatic propogation temporary not working.")
+gmx_test_cxx11(GMX_CXX11_SUPPORTED GMX_CXX11_FLAGS)
+include(CMakeDependentOption)
+# nvcc does not support C++11 flags, so with GPUs we prefer to skip C++11 flags
+# entirely to keep the compilation environment uniform.
+cmake_dependent_option(GMX_CXX11
+ "Use C++11 features"
+ ON "GMX_CXX11_SUPPORTED AND NOT GMX_GPU" OFF)
+mark_as_advanced(GMX_CXX11)
+if(GMX_CXX11)
+ set(EXTRA_CXX_FLAGS "${EXTRA_CXX_FLAGS} ${GMX_CXX11_FLAGS}")
endif()
+
include(gmxTestXDR)
gmx_test_xdr(GMX_SYSTEM_XDR)
if(NOT GMX_SYSTEM_XDR)
# these are set after everything else
if (NOT GMX_SKIP_DEFAULT_CFLAGS)
set(CMAKE_C_FLAGS "${ACCELERATION_C_FLAGS} ${MPI_COMPILE_FLAGS} ${EXTRA_C_FLAGS} ${CMAKE_C_FLAGS}")
- set(CMAKE_CXX_FLAGS "${ACCELERATION_CXX_FLAGS} ${MPI_COMPILE_FLAGS} ${GMX_CXX11_FLAGS} ${EXTRA_CXX_FLAGS} ${CMAKE_CXX_FLAGS}")
+ set(CMAKE_CXX_FLAGS "${ACCELERATION_CXX_FLAGS} ${MPI_COMPILE_FLAGS} ${EXTRA_CXX_FLAGS} ${CMAKE_CXX_FLAGS}")
set(CMAKE_EXE_LINKER_FLAGS "${FFT_LINKER_FLAGS} ${MPI_LINKER_FLAGS} ${CMAKE_EXE_LINKER_FLAGS}")
set(CMAKE_SHARED_LINKER_FLAGS "${MPI_LINKER_FLAGS} ${CMAKE_SHARED_LINKER_FLAGS}")
else()
message("CMAKE_C_FLAGS: ${ACCELERATION_C_FLAGS} ${MPI_COMPILE_FLAGS} ${EXTRA_C_FLAGS} ${GMXC_CFLAGS}")
message("CMAKE_C_FLAGS_RELEASE: ${GMXC_CFLAGS_RELEASE}")
message("CMAKE_C_FLAGS_DEBUG: ${GMXC_CFLAGS_DEBUG}")
- message("CMAKE_CXX_FLAGS: ${ACCELERATION_CXX_FLAGS} ${MPI_COMPILE_FLAGS} ${GMX_CXX11_FLAGS} ${EXTRA_CXX_FLAGS} ${GMXC_CXXFLAGS}")
+ message("CMAKE_CXX_FLAGS: ${ACCELERATION_CXX_FLAGS} ${MPI_COMPILE_FLAGS} ${EXTRA_CXX_FLAGS} ${GMXC_CXXFLAGS}")
message("CMAKE_CXX_FLAGS_RELEASE: ${GMXC_CXXFLAGS_RELEASE}")
message("CMAKE_CXX_FLAGS_DEBUG: ${GMXC_CXXFLAGS_DEBUG}")
message("CMAKE_EXE_LINKER_FLAGS: ${FFT_LINKER_FLAGS} ${MPI_LINKER_FLAGS}")
GMX_TEST_CXXFLAG(CXXFLAGS_PRAGMA "-Wno-unknown-pragmas" GMXC_CXXFLAGS)
endif()
GMX_TEST_CXXFLAG(CXXFLAGS_WARN "-Wall -Wno-unused-function" GMXC_CXXFLAGS)
- GMX_TEST_CXXFLAG(CXXFLAGS_WARN_EFFCXX "-Wnon-virtual-dtor" GMXC_CXXFLAGS)
+ # Problematic with CUDA
+ # GMX_TEST_CXXFLAG(CXXFLAGS_WARN_EFFCXX "-Wnon-virtual-dtor" GMXC_CXXFLAGS)
GMX_TEST_CXXFLAG(CXXFLAGS_WARN_EXTRA "-Wextra -Wno-missing-field-initializers" GMXC_CXXFLAGS)
- # new in gcc 4.5
+ # new in gcc 4.5
GMX_TEST_CXXFLAG(CXXFLAGS_EXCESS_PREC "-fexcess-precision=fast" GMXC_CXXFLAGS_RELEASE)
GMX_TEST_CXXFLAG(CXXFLAGS_COPT "-fomit-frame-pointer -funroll-all-loops"
GMXC_CXXFLAGS_RELEASE)
/*! Frees all GPU resources used for the nonbonded calculations. */
FUNC_QUALIFIER
-void nbnxn_cuda_free(FILE gmx_unused *fplog,
- nbnxn_cuda_ptr_t gmx_unused cu_nb) FUNC_TERM
+void nbnxn_cuda_free(nbnxn_cuda_ptr_t gmx_unused cu_nb) FUNC_TERM
/*! Returns the GPU timings structure or NULL if GPU is not used or timing is off. */
FUNC_QUALIFIER
#include "pmalloc_cuda.h"
#include "gpu_utils.h"
+#include "gromacs/utility/common.h"
+
static bool bUseCudaEventBlockingSync = false; /* makes the CPU thread block */
/* This is a heuristically determined parameter for the Fermi architecture for
else
#endif
{
+ GMX_UNUSED_VALUE(dev_info);
cudaChannelFormatDesc cd = cudaCreateChannelDesc<float>();
stat = cudaBindTexture(NULL, &nbnxn_cuda_get_coulomb_tab_texref(),
coul_tab, &cd, tabsize*sizeof(*coul_tab));
}
}
-void nbnxn_cuda_free(FILE *fplog, nbnxn_cuda_ptr_t cu_nb)
+void nbnxn_cuda_free(nbnxn_cuda_ptr_t cu_nb)
{
cudaError_t stat;
cu_atomdata_t *atdat;
* in this run because the PME ranks have no knowledge of whether GPUs
* are used or not, but all ranks need to enter the barrier below.
*/
-static void free_gpu_resources(FILE *fplog,
- const t_forcerec *fr,
+static void free_gpu_resources(const t_forcerec *fr,
const t_commrec *cr)
{
gmx_bool bIsPPrankUsingGPU;
if (bIsPPrankUsingGPU)
{
/* free nbnxn data in GPU memory */
- nbnxn_cuda_free(fplog, fr->nbv->cu_nbv);
+ nbnxn_cuda_free(fr->nbv->cu_nbv);
/* With tMPI we need to wait for all ranks to finish deallocation before
* destroying the context in free_gpu() as some ranks may be sharing
/* Free GPU memory and context */
- free_gpu_resources(fplog, fr, cr);
+ free_gpu_resources(fr, cr);
if (opt2bSet("-membed", nfile, fnm))
{