Skip to content

Commit

Permalink
Set gen code by default.
Browse files Browse the repository at this point in the history
  • Loading branch information
trivialfis committed Apr 10, 2019
1 parent db75a19 commit 720d947
Show file tree
Hide file tree
Showing 5 changed files with 26 additions and 35 deletions.
23 changes: 9 additions & 14 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@ set_default_configuration_release()
msvc_use_static_runtime()

#-- Options
option(BUILD_C_DOC "Build documentation for C APIs using Doxygen.")
option(BUILD_C_DOC "Build documentation for C APIs using Doxygen." OFF)
option(USE_OPENMP "Build with OpenMP support." ON)
## Bindings
option(JVM_BINDINGS "Build JVM bindings" OFF)
option(R_LIB "Build shared library for R package" OFF)
Expand All @@ -23,7 +24,7 @@ option(GENERATE_COMPILATION_DATABASE
option(USE_CUDA "Build with GPU acceleration" OFF)
option(USE_NCCL "Build with NCCL to enable multi-GPU support." OFF)
set(GPU_COMPUTE_VER "" CACHE STRING
"Space separated list of compute versions to be built against, e.g. '35 61'")
"Semicolon separated list of compute versions to be built against, e.g. '35;61'")
## Sanitizers
option(USE_SANITIZER "Use santizer flags" OFF)
option(SANITIZER_PATH "Path to sanitizes.")
Expand All @@ -47,20 +48,14 @@ endif (USE_SANITIZER)

if (USE_CUDA)
cmake_minimum_required(VERSION 3.12)
# `export CXX=' is ignored by CMake CUDA, `CMAKE_CUDA_HOST_COMPILER'
# is not available before 3.10.
if (CMAKE_VERSION VERSION_LESS 3.10)
set(CCBIN "-ccbin=${CMAKE_CXX_COMPILER}")
message(STATUS "set -ccbin=${CMAKE_CXX_COMPILER}")
else ()
set(CMAKE_CUDA_HOST_COMPILER ${CMAKE_CXX_COMPILER})
message(STATUS "Configured CUDA host compiler: ${CMAKE_CUDA_HOST_COMPILER}")
endif (CMAKE_VERSION VERSION_LESS 3.10)
# `export CXX=' is ignored by CMake CUDA.
set(CMAKE_CUDA_HOST_COMPILER ${CMAKE_CXX_COMPILER})
message(STATUS "Configured CUDA host compiler: ${CMAKE_CUDA_HOST_COMPILER}")

enable_language(CUDA)
if (GPU_COMPUTE_VER)
format_gencode_flags(${GPU_COMPUTE_VER} GEN_CODE)
endif (GPU_COMPUTE_VER)
set(GEN_CODE "")
format_gencode_flags("${GPU_COMPUTE_VER}" GEN_CODE)
message(STATUS "CUDA GEN_CODE: ${GEN_CODE}")
endif (USE_CUDA)

# dmlc-core
Expand Down
5 changes: 3 additions & 2 deletions cmake/Utils.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -68,11 +68,12 @@ function(format_gencode_flags flags out)
endif()
# Generate SASS
foreach(ver ${flags})
set(${out} "${${out}}--gpu-architecture=compute_${ver};--gpu-code=sm_${ver};")
set(${out} "${${out}}--generate-code=arch=compute_${ver},code=sm_${ver};")
endforeach()
# Generate PTX for last architecture
list(GET flags -1 ver)
set(${out} "${${out}}--gpu-architecture=compute_${ver};--gpu-code=compute_${ver};")
set(${out} "${${out}}--generate-code=arch=compute_${ver},code=compute_${ver};")
# set(${out} "${${out}}--gpu-architecture=compute_${ver};--gpu-code=compute_${ver};")

set(${out} "${${out}}" PARENT_SCOPE)
endfunction(format_gencode_flags flags)
Expand Down
25 changes: 11 additions & 14 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -43,20 +43,16 @@ if (USE_CUDA)
$<$<COMPILE_LANGUAGE:CUDA>:--expt-relaxed-constexpr>
$<$<COMPILE_LANGUAGE:CUDA>:-lineinfo>
$<$<COMPILE_LANGUAGE:CUDA>:--std=c++11>)
target_compile_options(objxgboost
PRIVATE
$<$<COMPILE_LANGUAGE:CUDA>:${GEN_CODE}>)
if (CMAKE_VERSION VERSION_LESS 3.10)
target_compile_options(objxgboost PRIVATE
$<$<COMPILE_LANGUAGE:CUDA>:${CCBIN}>
# PIC flag doesn't work for OBJECT target.
$<$<COMPILE_LANGUAGE:CUDA>:-Xcompiler=-fPIC>)
endif (CMAKE_VERSION VERSION_LESS 3.10)

if (GEN_CODE)
message(STATUS "GEN_CODE: ${GEN_CODE}")
target_compile_options(objxgboost
PRIVATE
$<$<COMPILE_LANGUAGE:CUDA>:${GEN_CODE}>)
endif (GEN_CODE)

if (USE_NCCL)
find_package(Nccl REQUIRED)
target_include_directories(objxgboost PRIVATE ${NCCL_INCLUDE_DIR})
Expand Down Expand Up @@ -107,11 +103,12 @@ if (XGBOOST_BUILTIN_PREFETCH_PRESENT)
-DXGBOOST_BUILTIN_PREFETCH_PRESENT=1)
endif (XGBOOST_BUILTIN_PREFETCH_PRESENT)

find_package(OpenMP)
if (OpenMP_CXX_FOUND OR OPENMP_FOUND)
target_compile_options(objxgboost PRIVATE $<$<COMPILE_LANGUAGE:CXX>:${OpenMP_CXX_FLAGS}>)
list(APPEND SRC_LIBS ${OpenMP_CXX_LIBRARIES})
set(LINKED_LIBRARIES_PRIVATE "${LINKED_LIBRARIES_PRIVATE};${SRC_LIBS}" PARENT_SCOPE)
endif (OpenMP_CXX_FOUND OR OPENMP_FOUND)

if (USE_OPENMP)
find_package(OpenMP REQUIRED)
if (OpenMP_CXX_FOUND OR OPENMP_FOUND)
target_compile_options(objxgboost PRIVATE $<$<COMPILE_LANGUAGE:CXX>:${OpenMP_CXX_FLAGS}>)
list(APPEND SRC_LIBS ${OpenMP_CXX_LIBRARIES})
set(LINKED_LIBRARIES_PRIVATE "${LINKED_LIBRARIES_PRIVATE};${SRC_LIBS}" PARENT_SCOPE)
endif (OpenMP_CXX_FOUND OR OPENMP_FOUND)
endif (USE_OPENMP)
#-- End object library
2 changes: 1 addition & 1 deletion src/tree/updater_gpu_hist.cu
Original file line number Diff line number Diff line change
Expand Up @@ -470,7 +470,7 @@ struct CalcWeightTrainParam {
};

// Bin each input data entry, store the bin indices in compressed form.
inline
template<typename std::enable_if<true, int>::type = 0>
__global__ void CompressBinEllpackKernel(
common::CompressedBufferWriter wr,
common::CompressedByteT* __restrict__ buffer, // gidx_buffer
Expand Down
6 changes: 2 additions & 4 deletions tests/cpp/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,13 @@ if (USE_CUDA)
$<$<COMPILE_LANGUAGE:CUDA>:--expt-relaxed-constexpr>
$<$<COMPILE_LANGUAGE:CUDA>:-lineinfo>
$<$<COMPILE_LANGUAGE:CUDA>:--std=c++11>)
target_compile_options(testxgboost PRIVATE
$<$<COMPILE_LANGUAGE:CUDA>:${GEN_CODE}>)
if (CMAKE_VERSION VERSION_LESS 3.10)
target_compile_options(testxgboost PRIVATE
$<$<COMPILE_LANGUAGE:CUDA>:${CCBIN}>
$<$<COMPILE_LANGUAGE:CUDA>:-Xcompiler=-fPIC>)
endif (CMAKE_VERSION VERSION_LESS 3.10)
if (GEN_CODE)
target_compile_options(testxgboost PRIVATE
$<$<COMPILE_LANGUAGE:CUDA>:${GEN_CODE}>)
endif()

target_compile_definitions(testxgboost
PRIVATE -DXGBOOST_USE_CUDA=1)
Expand Down

0 comments on commit 720d947

Please sign in to comment.