Skip to content

Commit 867a6d9

Browse files
Add cuda_arch_name warprnnt warpctc build (#61183)
* Add cuda_arch_name warprnnt warpctc build * Fix * Fix * Fix waprnnt * Fix code-style * Fix third_party.tar * fix windows build * Update patch * Fix * Fix warprnnt windows-build * Fix warprnnt windows-build
1 parent 3d1583c commit 867a6d9

File tree

4 files changed

+140
-3
lines changed

4 files changed

+140
-3
lines changed

cmake/external/warpctc.cmake

+14-2
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,23 @@ set(WARPCTC_TAG bdc2b4550453e0ef2d3b5190f9c6103a84eff184)
2626
set(SOURCE_DIR ${PADDLE_SOURCE_DIR}/third_party/warpctc)
2727
set(WARPCTC_PATCH_COMMAND "")
2828
set(WARPCTC_CCBIN_OPTION "")
29+
if(WIN32)
30+
set(WARPCTC_PATCH_CUDA_COMMAND
31+
${CMAKE_COMMAND} -E copy_if_different
32+
${PADDLE_SOURCE_DIR}/patches/warpctc/CMakeLists.txt.cuda.patch
33+
"<SOURCE_DIR>/")
34+
else()
35+
set(WARPCTC_PATCH_CUDA_COMMAND
36+
patch -d ${SOURCE_DIR} <
37+
${PADDLE_SOURCE_DIR}/patches/warpctc/CMakeLists.txt.cuda.patch)
38+
endif()
39+
2940
if(NOT WIN32 AND WITH_GPU)
3041
if(${CMAKE_CUDA_COMPILER_VERSION} LESS 12.0 AND ${CMAKE_CXX_COMPILER_VERSION}
3142
VERSION_GREATER 12.0)
3243
file(TO_NATIVE_PATH
3344
${PADDLE_SOURCE_DIR}/patches/warpctc/CMakeLists.txt.patch native_src)
34-
set(WARPCTC_PATCH_COMMAND patch -d ${SOURCE_DIR} < ${native_src})
45+
set(WARPCTC_PATCH_COMMAND patch -d ${SOURCE_DIR} < ${native_src} &&)
3546
set(WARPCTC_CCBIN_OPTION -DCCBIN_COMPILER=${CCBIN_COMPILER})
3647
endif()
3748
endif()
@@ -87,7 +98,7 @@ ExternalProject_Add(
8798
SOURCE_DIR ${SOURCE_DIR}
8899
PREFIX ${WARPCTC_PREFIX_DIR}
89100
UPDATE_COMMAND ""
90-
PATCH_COMMAND ${WARPCTC_PATCH_COMMAND}
101+
PATCH_COMMAND ${WARPCTC_PATCH_COMMAND} ${WARPCTC_PATCH_CUDA_COMMAND}
91102
#BUILD_ALWAYS 1
92103
CMAKE_ARGS -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
93104
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
@@ -101,6 +112,7 @@ ExternalProject_Add(
101112
-DWITH_GPU=${WITH_GPU}
102113
-DWITH_ROCM=${WITH_ROCM}
103114
-DWITH_OMP=${USE_OMP}
115+
-DNVCC_FLAGS_EXTRA=${NVCC_FLAGS_EXTRA}
104116
-DWITH_TORCH=OFF
105117
-DCMAKE_DISABLE_FIND_PACKAGE_Torch=ON
106118
-DBUILD_SHARED=ON

cmake/external/warprnnt.cmake

+13-1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,17 @@ set(WARPRNNT_TAG 7ea6bfe748779c245a0fcaa5dd9383826273eff2)
2424
set(SOURCE_DIR ${PADDLE_SOURCE_DIR}/third_party/warprnnt)
2525
set(WARPRNNT_PATCH_COMMAND "")
2626
set(WARPRNNT_CCBIN_OPTION "")
27+
if(WIN32)
28+
set(WARPCTC_PATCH_CUDA_COMMAND
29+
${CMAKE_COMMAND} -E copy_if_different
30+
${PADDLE_SOURCE_DIR}/patches/warprnnt/CMakeLists.txt.cuda.patch
31+
"<SOURCE_DIR>/")
32+
else()
33+
set(WARPCTC_PATCH_CUDA_COMMAND
34+
patch -d ${SOURCE_DIR} <
35+
${PADDLE_SOURCE_DIR}/patches/warprnnt/CMakeLists.txt.cuda.patch)
36+
endif()
37+
2738
if(NOT WIN32 AND WITH_GPU)
2839
if(${CMAKE_CUDA_COMPILER_VERSION} LESS 12.0 AND ${CMAKE_CXX_COMPILER_VERSION}
2940
VERSION_GREATER 12.0)
@@ -85,7 +96,7 @@ ExternalProject_Add(
8596
SOURCE_DIR ${SOURCE_DIR}
8697
PREFIX ${WARPRNNT_PREFIX_DIR}
8798
UPDATE_COMMAND ""
88-
PATCH_COMMAND ""
99+
PATCH_COMMAND ${WARPCTC_PATCH_CUDA_COMMAND}
89100
#BUILD_ALWAYS 1
90101
CMAKE_ARGS -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
91102
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
@@ -99,6 +110,7 @@ ExternalProject_Add(
99110
-DWITH_GPU=${WITH_GPU}
100111
-DWITH_ROCM=${WITH_ROCM}
101112
-DWITH_OMP=${USE_OMP}
113+
-DNVCC_FLAGS_EXTRA=${NVCC_FLAGS_EXTRA}
102114
-DBUILD_SHARED=ON
103115
-DBUILD_TESTS=OFF
104116
-DCMAKE_POSITION_INDEPENDENT_CODE=ON
+57
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
--- old/CMakeLists.txt 2024-02-01 11:53:42.097376899 +0000
2+
+++ new/CMakeLists.txt 2024-02-01 11:56:50.069653973 +0000
3+
@@ -63,50 +63,13 @@
4+
add_definitions(-DCTC_DISABLE_OMP)
5+
endif()
6+
7+
-# need to be at least 30 or __shfl_down in reduce wont compile
8+
-IF (CUDA_VERSION VERSION_LESS "11.0")
9+
- set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} -gencode arch=compute_30,code=sm_30")
10+
-ENDIF()
11+
-
12+
-# sm35 is deprecated after cuda 12.0
13+
-IF (CUDA_VERSION VERSION_LESS "12.0")
14+
- set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} -gencode arch=compute_35,code=sm_35")
15+
-ENDIF()
16+
-
17+
-set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} -gencode arch=compute_50,code=sm_50")
18+
-set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} -gencode arch=compute_52,code=sm_52")
19+
-
20+
-IF (CUDA_VERSION VERSION_GREATER "7.6")
21+
- set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} -gencode arch=compute_60,code=sm_60")
22+
- set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} -gencode arch=compute_61,code=sm_61")
23+
- set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} -gencode arch=compute_62,code=sm_62")
24+
-ENDIF()
25+
-
26+
-IF ((CUDA_VERSION VERSION_GREATER "9.0") OR (CUDA_VERSION VERSION_EQUAL "9.0"))
27+
- set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} -gencode arch=compute_70,code=sm_70")
28+
-ENDIF()
29+
-
30+
-IF ((CUDA_VERSION VERSION_GREATER "10.0") OR (CUDA_VERSION VERSION_EQUAL "10.0"))
31+
- set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} -gencode arch=compute_75,code=sm_75")
32+
-ENDIF()
33+
-
34+
-IF ((CUDA_VERSION VERSION_GREATER "11.0") OR (CUDA_VERSION VERSION_EQUAL "11.0"))
35+
- set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} -gencode arch=compute_80,code=sm_80")
36+
-ENDIF()
37+
-
38+
-IF ((CUDA_VERSION VERSION_GREATER "11.2") OR (CUDA_VERSION VERSION_EQUAL "11.2"))
39+
- set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} -gencode arch=compute_86,code=sm_86")
40+
-ENDIF()
41+
-
42+
-IF ((CUDA_VERSION VERSION_GREATER "11.8") OR (CUDA_VERSION VERSION_EQUAL "11.8"))
43+
- set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} -gencode arch=compute_90,code=sm_90")
44+
-ENDIF()
45+
-
46+
IF(NOT APPLE AND NOT WIN32)
47+
- set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} --std=c++11")
48+
+ set(CUDA_NVCC_FLAGS "${NVCC_FLAGS_EXTRA} --std=c++11")
49+
if(WITH_OMP)
50+
- set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} -Xcompiler -fopenmp")
51+
+ set(CUDA_NVCC_FLAGS "${NVCC_FLAGS_EXTRA} -Xcompiler -fopenmp")
52+
endif()
53+
+ELSE(NOT APPLE AND NOT WIN32)
54+
+ set(CUDA_NVCC_FLAGS "${NVCC_FLAGS_EXTRA}")
55+
ENDIF()
56+
57+
IF (APPLE)
+56
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
--- old/CMakeLists.txt 2024-02-01 12:01:53.589574744 +0000
2+
+++ new/CMakeLists.txt 2024-02-01 12:05:03.708426912 +0000
3+
@@ -71,49 +71,10 @@
4+
set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} -Xcompiler -fopenmp")
5+
endif()
6+
7+
-
8+
-# need to be at least 30 or __shfl_down in reduce wont compile
9+
-IF (CUDA_VERSION VERSION_LESS "11.0")
10+
- set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} -gencode arch=compute_30,code=sm_30")
11+
-ENDIF()
12+
-
13+
-# sm35 is deprecated after cuda 12.0
14+
-IF (CUDA_VERSION VERSION_LESS "12.0")
15+
- set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} -gencode arch=compute_35,code=sm_35")
16+
-ENDIF()
17+
-
18+
-set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} -gencode arch=compute_50,code=sm_50")
19+
-set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} -gencode arch=compute_52,code=sm_52")
20+
-
21+
-IF (CUDA_VERSION VERSION_GREATER "7.6")
22+
- set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} -gencode arch=compute_60,code=sm_60")
23+
- set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} -gencode arch=compute_61,code=sm_61")
24+
- set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} -gencode arch=compute_62,code=sm_62")
25+
-ENDIF()
26+
-
27+
-IF ((CUDA_VERSION VERSION_GREATER "9.0") OR (CUDA_VERSION VERSION_EQUAL "9.0"))
28+
- set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} -gencode arch=compute_70,code=sm_70")
29+
-ENDIF()
30+
-
31+
-IF ((CUDA_VERSION VERSION_GREATER "10.0") OR (CUDA_VERSION VERSION_EQUAL "10.0"))
32+
- set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} -gencode arch=compute_75,code=sm_75")
33+
-ENDIF()
34+
-
35+
-IF ((CUDA_VERSION VERSION_GREATER "11.0") OR (CUDA_VERSION VERSION_EQUAL "11.0"))
36+
- set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} -gencode arch=compute_80,code=sm_80")
37+
-ENDIF()
38+
-
39+
-IF ((CUDA_VERSION VERSION_GREATER "11.2") OR (CUDA_VERSION VERSION_EQUAL "11.2"))
40+
- set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} -gencode arch=compute_86,code=sm_86")
41+
-ENDIF()
42+
-
43+
-IF ((CUDA_VERSION VERSION_GREATER "11.8") OR (CUDA_VERSION VERSION_EQUAL "11.8"))
44+
- set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} -gencode arch=compute_90,code=sm_90")
45+
-ENDIF()
46+
-
47+
-if (NOT APPLE)
48+
- set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} --std=c++11")
49+
- set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS}")
50+
+if (NOT APPLE AND NOT WIN32)
51+
+ set(CUDA_NVCC_FLAGS "${NVCC_FLAGS_EXTRA} --std=c++11")
52+
+ELSE(NOT APPLE AND NOT WIN32)
53+
+ set(CUDA_NVCC_FLAGS "${NVCC_FLAGS_EXTRA}")
54+
ENDIF()
55+
56+
IF (APPLE)

0 commit comments

Comments
 (0)