Skip to content

Commit 0e92adc

Browse files
authored
[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
1 parent 5a1b6f5 commit 0e92adc

File tree

8 files changed

+91
-9
lines changed

8 files changed

+91
-9
lines changed

cmake/experiments/cuda_module_loading_lazy.cmake

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,11 @@ if(LINUX)
3131
message("cuda 11.7+ already support lazy module loading")
3232
return()
3333
endif()
34+
if(${CUDA_VERSION} VERSION_LESS "12.0" AND ${CMAKE_CXX_COMPILER_VERSION}
35+
VERSION_GREATER_EQUAL 12.0)
36+
message("cuda less than 12.0 doesn't support gcc12")
37+
return()
38+
endif()
3439

3540
message(
3641
"for cuda before 11.7, libcudart.so must be used for the lazy module loading trick to work, instead of libcudart_static.a"

cmake/external/gloo.cmake

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,17 @@ set(GLOO_LIBRARIES
3131
"${GLOO_INSTALL_DIR}/lib/libgloo.a"
3232
CACHE FILEPATH "gloo library." FORCE)
3333

34+
set(GLOO_PATCH_COMMAND "")
35+
if(WITH_GPU)
36+
if(${CMAKE_CUDA_COMPILER_VERSION} LESS 12.0 AND ${CMAKE_CXX_COMPILER_VERSION}
37+
VERSION_GREATER 12.0)
38+
file(TO_NATIVE_PATH ${PADDLE_SOURCE_DIR}/patches/gloo/device.cc.patch
39+
native_dst)
40+
set(GLOO_PATCH_COMMAND patch -d ${GLOO_SOURCE_DIR}/gloo/transport/tcp <
41+
${native_dst})
42+
endif()
43+
endif()
44+
3445
include_directories(${GLOO_INCLUDE_DIR})
3546

3647
if(WITH_ASCEND OR WITH_ASCEND_CL)
@@ -59,6 +70,7 @@ else()
5970
GIT_TAG ${GLOO_TAG}
6071
PREFIX "${GLOO_PREFIX_DIR}"
6172
UPDATE_COMMAND ""
73+
PATCH_COMMAND ${GLOO_PATCH_COMMAND}
6274
CONFIGURE_COMMAND ""
6375
BUILD_COMMAND
6476
mkdir -p ${GLOO_SOURCE_DIR}/build && cd ${GLOO_SOURCE_DIR}/build && cmake

cmake/external/protobuf.cmake

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -250,6 +250,12 @@ function(build_protobuf TARGET_NAME BUILD_FOR_HOST)
250250
else()
251251
set(PROTOBUF_REPOSITORY ${GIT_URL}/protocolbuffers/protobuf.git)
252252
set(PROTOBUF_TAG 9f75c5aa851cd877fb0d93ccc31b8567a6706546)
253+
if(WITH_GPU)
254+
if(${CMAKE_CUDA_COMPILER_VERSION} LESS 12.0
255+
AND ${CMAKE_CXX_COMPILER_VERSION} VERSION_GREATER 12.0)
256+
set(PROTOBUF_TAG 2dc747c574b68a808ea4699d26942c8132fe2b09)
257+
endif()
258+
endif()
253259
endif()
254260
if(WITH_ARM_BRPC)
255261
set(ARM_PROTOBUF_URL
@@ -322,6 +328,12 @@ elseif(WITH_ARM_BRPC)
322328
set(PROTOBUF_VERSION 3.7.1-baidu-ee-common)
323329
else()
324330
set(PROTOBUF_VERSION 3.1.0)
331+
if(WITH_GPU)
332+
if(${CMAKE_CUDA_COMPILER_VERSION} LESS 12.0
333+
AND ${CMAKE_CXX_COMPILER_VERSION} VERSION_GREATER 12.0)
334+
set(PROTOBUF_VERSION 3.16.0)
335+
endif()
336+
endif()
325337
endif()
326338

327339
if(NOT PROTOBUF_FOUND)

cmake/external/warpctc.cmake

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,19 @@ set(WARPCTC_INSTALL_DIR ${THIRD_PARTY_PATH}/install/warpctc)
2525
set(WARPCTC_REPOSITORY ${GIT_URL}/baidu-research/warp-ctc.git)
2626
set(WARPCTC_TAG 37ece0e1bbe8a0019a63ac7e6462c36591c66a5b)
2727

28+
set(WARPCTC_SOURCE_DIR ${THIRD_PARTY_PATH}/warpctc/src/extern_warpctc)
29+
set(WARPCTC_PATCH_COMMAND "")
30+
set(WARPCTC_CCBIN_OPTION "")
31+
if(NOT WIN32 AND WITH_GPU)
32+
if(${CMAKE_CUDA_COMPILER_VERSION} LESS 12.0 AND ${CMAKE_CXX_COMPILER_VERSION}
33+
VERSION_GREATER 12.0)
34+
file(TO_NATIVE_PATH
35+
${PADDLE_SOURCE_DIR}/patches/warpctc/CMakeLists.txt.patch native_src)
36+
set(WARPCTC_PATCH_COMMAND patch -d ${WARPCTC_SOURCE_DIR} < ${native_src})
37+
set(WARPCTC_CCBIN_OPTION -DCCBIN_COMPILER=${CCBIN_COMPILER})
38+
endif()
39+
endif()
40+
2841
set(WARPCTC_INCLUDE_DIR
2942
"${WARPCTC_INSTALL_DIR}/include"
3043
CACHE PATH "Warp-ctc Directory" FORCE)
@@ -112,7 +125,7 @@ else()
112125
GIT_TAG ${WARPCTC_TAG}
113126
PREFIX ${WARPCTC_PREFIX_DIR}
114127
UPDATE_COMMAND ""
115-
PATCH_COMMAND ""
128+
PATCH_COMMAND ${WARPCTC_PATCH_COMMAND}
116129
#BUILD_ALWAYS 1
117130
CMAKE_ARGS -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
118131
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
@@ -132,7 +145,9 @@ else()
132145
-DBUILD_TESTS=OFF
133146
-DCMAKE_POSITION_INDEPENDENT_CODE=ON
134147
-DCMAKE_BUILD_TYPE=${THIRD_PARTY_BUILD_TYPE}
148+
-DCUDA_TOOLKIT_ROOT_DIR=${CUDA_TOOLKIT_ROOT_DIR}
135149
${EXTERNAL_OPTIONAL_ARGS}
150+
${WARPCTC_CCBIN_OPTION}
136151
CMAKE_CACHE_ARGS
137152
-DCMAKE_BUILD_TYPE:STRING=${THIRD_PARTY_BUILD_TYPE}
138153
-DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=ON

paddle/fluid/operators/jit/CMakeLists.txt

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -39,14 +39,23 @@ cc_test(
3939
SRCS test.cc
4040
DEPS jit_kernel_helper)
4141
if(NOT WIN32)
42-
cc_binary(
43-
jit_kernel_benchmark
44-
SRCS
45-
benchmark.cc
46-
DEPS
47-
jit_kernel_helper
48-
device_tracer
49-
tensor)
42+
set(cuda_less12_and_gcc_greater12 false)
43+
if(DEFINED CMAKE_CUDA_COMPILER_VERSION)
44+
if(${CMAKE_CUDA_COMPILER_VERSION} LESS 12.0
45+
AND ${CMAKE_CXX_COMPILER_VERSION} VERSION_GREATER 12.0)
46+
set(cuda_less12_and_gcc_greater12 true)
47+
endif()
48+
endif()
49+
if(NOT cuda_less12_and_gcc_greater12)
50+
cc_binary(
51+
jit_kernel_benchmark
52+
SRCS
53+
benchmark.cc
54+
DEPS
55+
jit_kernel_helper
56+
device_tracer
57+
tensor)
58+
endif()
5059
endif()
5160
if(WITH_TESTING AND TEST jit_kernel_test)
5261
set_tests_properties(jit_kernel_test PROPERTIES TIMEOUT 120)

paddle/phi/tools/CMakeLists.txt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
if(WITH_GPU)
2+
if(${CMAKE_CUDA_COMPILER_VERSION} LESS 12.0 AND ${CMAKE_CXX_COMPILER_VERSION}
3+
VERSION_GREATER 12.0)
4+
return()
5+
endif()
6+
endif()
17
add_executable(print_pten_kernels print_pten_kernels.cc)
28
target_link_libraries(print_pten_kernels phi phi_api_utils)
39
if(WIN32)

patches/gloo/device.cc.patch

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
--- a/device.cc
2+
+++ b/device.cc
3+
@@ -12,6 +12,7 @@
4+
#include <netdb.h>
5+
#include <netinet/in.h>
6+
#include <string.h>
7+
+#include <array>
8+
9+
#include "gloo/common/linux.h"
10+
#include "gloo/common/logging.h"

patches/warpctc/CMakeLists.txt.patch

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
--- a/CMakeLists.txt
2+
+++ b/CMakeLists.txt
3+
@@ -23,6 +23,10 @@
4+
option(BUILD_SHARED "build warp-ctc shared library." ON)
5+
option(WITH_ROCM "Compile PaddlePaddle with ROCM platform" OFF)
6+
7+
+set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} -ccbin ${CCBIN_COMPILER} -allow-unsupported-compiler")
8+
+set(NVCC_PREPEND_FLAGS "${NVCC_PREPEND_FLAGS} -ccbin ${CCBIN_COMPILER} -allow-unsupported-compiler")
9+
+set(CCBIN "-ccbin ${CCBIN_COMPILER} -allow-unsupported-compiler")
10+
+
11+
if(WITH_ROCM)
12+
add_definitions(-DWARPCTC_WITH_HIP)
13+
include(hip)

0 commit comments

Comments
 (0)