diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index f6e342fae..7a97c9c8b 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -105,6 +105,7 @@ set(HYPRE_WITH_EXTRA_CXXFLAGS "" CACHE STRING "Define extra CXX compile flag option(HYPRE_WITH_CUDA "Use CUDA. Require cuda-8.0 or higher" OFF) option(HYPRE_WITH_SYCL "Use SYCL" OFF) option(HYPRE_ENABLE_UNIFIED_MEMORY "Use unified memory for allocating the memory" OFF) +option(HYPRE_ENABLE_DEVICE_MALLOC_ASYNC "Use device async malloc" OFF) # CUDA options option(HYPRE_ENABLE_CUDA_STREAMS "Use CUDA streams" ON) option(HYPRE_ENABLE_CUSPARSE "Use cuSPARSE" ON) @@ -217,11 +218,6 @@ if (HYPRE_WITH_CUDA) message(STATUS "Using CXX standard: c++${CMAKE_CXX_STANDARD}") - # Use ${CMAKE_CXX_COMPILER} as the cuda host compiler. - if (NOT CMAKE_CUDA_HOST_COMPILER) - set(CMAKE_CUDA_HOST_COMPILER ${CMAKE_CXX_COMPILER}) - endif () - # Add any extra CXX compiler flags HYPRE_WITH_EXTRA_CXXFLAGS if (NOT HYPRE_WITH_EXTRA_CXXFLAGS STREQUAL "") string(REPLACE " " ";" HYPRE_WITH_EXTRA_CXXFLAGS "${HYPRE_WITH_EXTRA_CXXFLAGS}") @@ -231,6 +227,12 @@ if (HYPRE_WITH_CUDA) # Check if CUDA is available, then enable it include(CheckLanguage) check_language(CUDA) + + # Use ${CMAKE_CXX_COMPILER} as the cuda host compiler. + if (NOT CMAKE_CUDA_HOST_COMPILER) + set(CMAKE_CUDA_HOST_COMPILER ${CMAKE_CXX_COMPILER}) + endif () + if (CMAKE_CUDA_COMPILER) enable_language(CUDA) @@ -242,6 +244,10 @@ if (HYPRE_WITH_CUDA) set(CMAKE_CUDA_STANDARD_REQUIRED ON CACHE BOOL "" FORCE) + if (HYPRE_ENABLE_DEVICE_MALLOC_ASYNC) + set(HYPRE_USING_DEVICE_MALLOC_ASYNC ON CACHE BOOL "" FORCE) + endif () + set(HYPRE_USING_CUDA ON CACHE BOOL "" FORCE) set(HYPRE_USING_GPU ON CACHE BOOL "" FORCE) diff --git a/src/config/HYPRE_config.h.cmake.in b/src/config/HYPRE_config.h.cmake.in index 0b795281b..678c0ffc7 100644 --- a/src/config/HYPRE_config.h.cmake.in +++ b/src/config/HYPRE_config.h.cmake.in @@ -31,6 +31,9 @@ /* Use complex values */ #cmakedefine HYPRE_COMPLEX 1 +/* Use cudaMallocAsync */ +#cmakedefine HYPRE_USING_DEVICE_MALLOC_ASYNC 1 + /* Debug mode */ #cmakedefine HYPRE_DEBUG 1