未验证 提交 0e92adce 编写于 作者: C chalsliu 提交者: GitHub

[Cherry-pick] Support build with gcc12 for CUDA less than 12.0 (#50291)

* Support build with gcc12 for CUDA less than 12.0

* fix version message test=document_fix
上级 5a1b6f5d
...@@ -31,6 +31,11 @@ if(LINUX) ...@@ -31,6 +31,11 @@ if(LINUX)
message("cuda 11.7+ already support lazy module loading") message("cuda 11.7+ already support lazy module loading")
return() return()
endif() endif()
if(${CUDA_VERSION} VERSION_LESS "12.0" AND ${CMAKE_CXX_COMPILER_VERSION}
VERSION_GREATER_EQUAL 12.0)
message("cuda less than 12.0 doesn't support gcc12")
return()
endif()
message( message(
"for cuda before 11.7, libcudart.so must be used for the lazy module loading trick to work, instead of libcudart_static.a" "for cuda before 11.7, libcudart.so must be used for the lazy module loading trick to work, instead of libcudart_static.a"
......
...@@ -31,6 +31,17 @@ set(GLOO_LIBRARIES ...@@ -31,6 +31,17 @@ set(GLOO_LIBRARIES
"${GLOO_INSTALL_DIR}/lib/libgloo.a" "${GLOO_INSTALL_DIR}/lib/libgloo.a"
CACHE FILEPATH "gloo library." FORCE) CACHE FILEPATH "gloo library." FORCE)
set(GLOO_PATCH_COMMAND "")
if(WITH_GPU)
if(${CMAKE_CUDA_COMPILER_VERSION} LESS 12.0 AND ${CMAKE_CXX_COMPILER_VERSION}
VERSION_GREATER 12.0)
file(TO_NATIVE_PATH ${PADDLE_SOURCE_DIR}/patches/gloo/device.cc.patch
native_dst)
set(GLOO_PATCH_COMMAND patch -d ${GLOO_SOURCE_DIR}/gloo/transport/tcp <
${native_dst})
endif()
endif()
include_directories(${GLOO_INCLUDE_DIR}) include_directories(${GLOO_INCLUDE_DIR})
if(WITH_ASCEND OR WITH_ASCEND_CL) if(WITH_ASCEND OR WITH_ASCEND_CL)
...@@ -59,6 +70,7 @@ else() ...@@ -59,6 +70,7 @@ else()
GIT_TAG ${GLOO_TAG} GIT_TAG ${GLOO_TAG}
PREFIX "${GLOO_PREFIX_DIR}" PREFIX "${GLOO_PREFIX_DIR}"
UPDATE_COMMAND "" UPDATE_COMMAND ""
PATCH_COMMAND ${GLOO_PATCH_COMMAND}
CONFIGURE_COMMAND "" CONFIGURE_COMMAND ""
BUILD_COMMAND BUILD_COMMAND
mkdir -p ${GLOO_SOURCE_DIR}/build && cd ${GLOO_SOURCE_DIR}/build && cmake mkdir -p ${GLOO_SOURCE_DIR}/build && cd ${GLOO_SOURCE_DIR}/build && cmake
......
...@@ -250,6 +250,12 @@ function(build_protobuf TARGET_NAME BUILD_FOR_HOST) ...@@ -250,6 +250,12 @@ function(build_protobuf TARGET_NAME BUILD_FOR_HOST)
else() else()
set(PROTOBUF_REPOSITORY ${GIT_URL}/protocolbuffers/protobuf.git) set(PROTOBUF_REPOSITORY ${GIT_URL}/protocolbuffers/protobuf.git)
set(PROTOBUF_TAG 9f75c5aa851cd877fb0d93ccc31b8567a6706546) set(PROTOBUF_TAG 9f75c5aa851cd877fb0d93ccc31b8567a6706546)
if(WITH_GPU)
if(${CMAKE_CUDA_COMPILER_VERSION} LESS 12.0
AND ${CMAKE_CXX_COMPILER_VERSION} VERSION_GREATER 12.0)
set(PROTOBUF_TAG 2dc747c574b68a808ea4699d26942c8132fe2b09)
endif()
endif()
endif() endif()
if(WITH_ARM_BRPC) if(WITH_ARM_BRPC)
set(ARM_PROTOBUF_URL set(ARM_PROTOBUF_URL
...@@ -322,6 +328,12 @@ elseif(WITH_ARM_BRPC) ...@@ -322,6 +328,12 @@ elseif(WITH_ARM_BRPC)
set(PROTOBUF_VERSION 3.7.1-baidu-ee-common) set(PROTOBUF_VERSION 3.7.1-baidu-ee-common)
else() else()
set(PROTOBUF_VERSION 3.1.0) set(PROTOBUF_VERSION 3.1.0)
if(WITH_GPU)
if(${CMAKE_CUDA_COMPILER_VERSION} LESS 12.0
AND ${CMAKE_CXX_COMPILER_VERSION} VERSION_GREATER 12.0)
set(PROTOBUF_VERSION 3.16.0)
endif()
endif()
endif() endif()
if(NOT PROTOBUF_FOUND) if(NOT PROTOBUF_FOUND)
......
...@@ -25,6 +25,19 @@ set(WARPCTC_INSTALL_DIR ${THIRD_PARTY_PATH}/install/warpctc) ...@@ -25,6 +25,19 @@ set(WARPCTC_INSTALL_DIR ${THIRD_PARTY_PATH}/install/warpctc)
set(WARPCTC_REPOSITORY ${GIT_URL}/baidu-research/warp-ctc.git) set(WARPCTC_REPOSITORY ${GIT_URL}/baidu-research/warp-ctc.git)
set(WARPCTC_TAG 37ece0e1bbe8a0019a63ac7e6462c36591c66a5b) set(WARPCTC_TAG 37ece0e1bbe8a0019a63ac7e6462c36591c66a5b)
set(WARPCTC_SOURCE_DIR ${THIRD_PARTY_PATH}/warpctc/src/extern_warpctc)
set(WARPCTC_PATCH_COMMAND "")
set(WARPCTC_CCBIN_OPTION "")
if(NOT WIN32 AND WITH_GPU)
if(${CMAKE_CUDA_COMPILER_VERSION} LESS 12.0 AND ${CMAKE_CXX_COMPILER_VERSION}
VERSION_GREATER 12.0)
file(TO_NATIVE_PATH
${PADDLE_SOURCE_DIR}/patches/warpctc/CMakeLists.txt.patch native_src)
set(WARPCTC_PATCH_COMMAND patch -d ${WARPCTC_SOURCE_DIR} < ${native_src})
set(WARPCTC_CCBIN_OPTION -DCCBIN_COMPILER=${CCBIN_COMPILER})
endif()
endif()
set(WARPCTC_INCLUDE_DIR set(WARPCTC_INCLUDE_DIR
"${WARPCTC_INSTALL_DIR}/include" "${WARPCTC_INSTALL_DIR}/include"
CACHE PATH "Warp-ctc Directory" FORCE) CACHE PATH "Warp-ctc Directory" FORCE)
...@@ -112,7 +125,7 @@ else() ...@@ -112,7 +125,7 @@ else()
GIT_TAG ${WARPCTC_TAG} GIT_TAG ${WARPCTC_TAG}
PREFIX ${WARPCTC_PREFIX_DIR} PREFIX ${WARPCTC_PREFIX_DIR}
UPDATE_COMMAND "" UPDATE_COMMAND ""
PATCH_COMMAND "" PATCH_COMMAND ${WARPCTC_PATCH_COMMAND}
#BUILD_ALWAYS 1 #BUILD_ALWAYS 1
CMAKE_ARGS -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} CMAKE_ARGS -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
...@@ -132,7 +145,9 @@ else() ...@@ -132,7 +145,9 @@ else()
-DBUILD_TESTS=OFF -DBUILD_TESTS=OFF
-DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_POSITION_INDEPENDENT_CODE=ON
-DCMAKE_BUILD_TYPE=${THIRD_PARTY_BUILD_TYPE} -DCMAKE_BUILD_TYPE=${THIRD_PARTY_BUILD_TYPE}
-DCUDA_TOOLKIT_ROOT_DIR=${CUDA_TOOLKIT_ROOT_DIR}
${EXTERNAL_OPTIONAL_ARGS} ${EXTERNAL_OPTIONAL_ARGS}
${WARPCTC_CCBIN_OPTION}
CMAKE_CACHE_ARGS CMAKE_CACHE_ARGS
-DCMAKE_BUILD_TYPE:STRING=${THIRD_PARTY_BUILD_TYPE} -DCMAKE_BUILD_TYPE:STRING=${THIRD_PARTY_BUILD_TYPE}
-DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=ON -DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=ON
......
...@@ -39,14 +39,23 @@ cc_test( ...@@ -39,14 +39,23 @@ cc_test(
SRCS test.cc SRCS test.cc
DEPS jit_kernel_helper) DEPS jit_kernel_helper)
if(NOT WIN32) if(NOT WIN32)
cc_binary( set(cuda_less12_and_gcc_greater12 false)
jit_kernel_benchmark if(DEFINED CMAKE_CUDA_COMPILER_VERSION)
SRCS if(${CMAKE_CUDA_COMPILER_VERSION} LESS 12.0
benchmark.cc AND ${CMAKE_CXX_COMPILER_VERSION} VERSION_GREATER 12.0)
DEPS set(cuda_less12_and_gcc_greater12 true)
jit_kernel_helper endif()
device_tracer endif()
tensor) if(NOT cuda_less12_and_gcc_greater12)
cc_binary(
jit_kernel_benchmark
SRCS
benchmark.cc
DEPS
jit_kernel_helper
device_tracer
tensor)
endif()
endif() endif()
if(WITH_TESTING AND TEST jit_kernel_test) if(WITH_TESTING AND TEST jit_kernel_test)
set_tests_properties(jit_kernel_test PROPERTIES TIMEOUT 120) set_tests_properties(jit_kernel_test PROPERTIES TIMEOUT 120)
......
if(WITH_GPU)
if(${CMAKE_CUDA_COMPILER_VERSION} LESS 12.0 AND ${CMAKE_CXX_COMPILER_VERSION}
VERSION_GREATER 12.0)
return()
endif()
endif()
add_executable(print_pten_kernels print_pten_kernels.cc) add_executable(print_pten_kernels print_pten_kernels.cc)
target_link_libraries(print_pten_kernels phi phi_api_utils) target_link_libraries(print_pten_kernels phi phi_api_utils)
if(WIN32) if(WIN32)
......
--- a/device.cc
+++ b/device.cc
@@ -12,6 +12,7 @@
#include <netdb.h>
#include <netinet/in.h>
#include <string.h>
+#include <array>
#include "gloo/common/linux.h"
#include "gloo/common/logging.h"
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -23,6 +23,10 @@
option(BUILD_SHARED "build warp-ctc shared library." ON)
option(WITH_ROCM "Compile PaddlePaddle with ROCM platform" OFF)
+set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} -ccbin ${CCBIN_COMPILER} -allow-unsupported-compiler")
+set(NVCC_PREPEND_FLAGS "${NVCC_PREPEND_FLAGS} -ccbin ${CCBIN_COMPILER} -allow-unsupported-compiler")
+set(CCBIN "-ccbin ${CCBIN_COMPILER} -allow-unsupported-compiler")
+
if(WITH_ROCM)
add_definitions(-DWARPCTC_WITH_HIP)
include(hip)
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册