Skip to content

Commit 27dfdbf

Browse files
committed
add cmake
1 parent a6d92e9 commit 27dfdbf

File tree

6 files changed

+83
-6
lines changed

6 files changed

+83
-6
lines changed

CMakeLists.txt

+12
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ option(WITH_XPU_KP "Compile PaddlePaddle with BAIDU XPU compiler " OFF)
5656
option(WITH_XPU_XFT "Compile PaddlePaddle with BAIDU XPU-XFT" OFF)
5757
option(WITH_XPU_PLUGIN "Compile PaddlePaddle with BAIDU XPU plugin" OFF)
5858
option(WITH_XPU_XRE5 "Compile PaddlePaddle with BAIDU XPU XRE 5" OFF)
59+
option(WITH_XPU_FFT "Compile PaddlePaddle with BAIDU XPU FFT" OFF)
5960
option(WITH_WIN_DUMP_DBG "Compile with windows core dump debug mode" OFF)
6061
option(WITH_ROCM "Compile PaddlePaddle with ROCM platform" OFF)
6162
option(WITH_IPU "Compile PaddlePaddle with Graphcore IPU" OFF)
@@ -95,6 +96,9 @@ endif()
9596
if(WITH_GPU AND WITH_XPU_XRE5)
9697
message(FATAL_ERROR "Error when compile GPU and XPU-XRE5 at the same time")
9798
endif()
99+
if(WITH_GPU AND WITH_XPU_FFT)
100+
message(FATAL_ERROR "Error when compile GPU and XPU-FFT at the same time")
101+
endif()
98102
if(WITH_GPU AND WITH_ROCM)
99103
message(FATAL_ERROR "Error when compile CUDA and ROCM at the same time")
100104
endif()
@@ -478,6 +482,14 @@ if(NOT WITH_XPU AND WITH_XPU_XRE5)
478482
CACHE STRING "Disable XRE5 when compiling without XPU" FORCE)
479483
endif()
480484

485+
if(NOT WITH_XPU AND WITH_XPU_FFT)
486+
message((WARNING
487+
"Disable FFT when compiling without XPU. Force WITH_XPU_FFT=OFF"))
488+
set(WITH_XPU_FFT
489+
OFF
490+
CACHE STRING "Disable FFT when compiling without XPU" FORCE)
491+
endif()
492+
481493
if(WITH_NCCL)
482494
add_definitions("-DPADDLE_WITH_NCCL")
483495
include(nccl)

cmake/external/xpu.cmake

+35-5
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ set(XPU_XPTI_LIB_NAME "libxpti.so")
2828
set(XPU_XBLAS_LIB_NAME "libxpu_blas.so")
2929
set(XPU_XFA_LIB_NAME "libxpu_flash_attention.so")
3030
set(XPU_XPUDNN_LIB_NAME "libxpu_dnn.so")
31+
set(XPU_FFT_LIB_NAME "libcufft.so")
3132

3233
if(NOT DEFINED XPU_XHPC_BASE_DATE)
3334
set(XPU_XHPC_BASE_DATE "dev/20250417")
@@ -81,6 +82,11 @@ if(WITH_XPU_XRE5)
8182
)
8283
endif()
8384

85+
if(WITH_XPU_FFT)
86+
set(XPU_FFT_BASE_URL "https://paddle-org.bj.bcebos.com/paddlescience")
87+
set(XPU_FFT_DIR_NAME "xpufft")
88+
endif()
89+
8490
if(WITH_AARCH64)
8591
set(XPU_XRE_DIR_NAME "xre-kylin_aarch64")
8692
set(XPU_XCCL_DIR_NAME "") # TODO: xccl has no kylin output now.
@@ -130,6 +136,10 @@ if(WITH_XPTI)
130136
set(XPU_XPTI_URL "${XPU_XPTI_BASE_URL}/${XPU_XPTI_DIR_NAME}.tar.gz")
131137
endif()
132138

139+
if(WITH_XPU_FFT)
140+
set(XPU_FFT_URL "${XPU_FFT_BASE_URL}/${XPU_FFT_DIR_NAME}.tar.gz")
141+
endif()
142+
133143
set(XPU_XHPC_URL
134144
"https://klx-sdk-release-public.su.bcebos.com/xhpc/${XPU_XHPC_BASE_DATE}/${XPU_XHPC_DIR_NAME}.tar.gz"
135145
CACHE STRING "" FORCE)
@@ -154,6 +164,7 @@ set(XPU_CUDA_RT_LIB "${XPU_LIB_DIR}/${XPU_CUDA_RT_LIB_NAME}")
154164
set(XPU_ML_LIB "${XPU_LIB_DIR}/${XPU_ML_LIB_NAME}")
155165
set(XPU_XFA_LIB "${XPU_LIB_DIR}/${XPU_XFA_LIB_NAME}")
156166
set(XPU_XPUDNN_LIB "${XPU_LIB_DIR}/${XPU_XPUDNN_LIB_NAME}")
167+
set(XPU_FFT_LIB "${XPU_LIB_DIR}/${XPU_FFT_LIB_NAME}")
157168

158169
set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_RPATH}" "${XPU_INSTALL_DIR}/lib")
159170

@@ -205,6 +216,12 @@ if(DEFINED ENV{XPU_LIB_ROOT})
205216
set(XFT_COMMAND
206217
"${CMAKE_SOURCE_DIR}/tools/xpu/get_xft_dependence_from_custom_path.sh")
207218
endif()
219+
220+
# FFT
221+
if(DEFINED ENV{XPU_FFT_DIR_NAME})
222+
set(XPU_FFT_URL "${XPU_LIB_ROOT}/$ENV{XPU_FFT_DIR_NAME}")
223+
set(XPU_FFT_DIR_NAME "$ENV{XPU_FFT_DIR_NAME}")
224+
endif()
208225
endif()
209226

210227
if(WITH_XPU_XRE5)
@@ -216,8 +233,9 @@ if(WITH_XPU_XRE5)
216233
DOWNLOAD_COMMAND
217234
bash ${CMAKE_SOURCE_DIR}/tools/xpu/pack_paddle_dependence.sh
218235
${XPU_XRE_URL} ${XPU_XRE_DIR_NAME} ${XPU_XHPC_URL} ${XPU_XHPC_DIR_NAME}
219-
${XPU_XCCL_URL} ${XPU_XCCL_DIR_NAME} 1 && wget ${XPU_XFT_GET_DEPENCE_URL}
220-
&& bash ${XFT_COMMAND} ${XPU_XFT_URL} ${XPU_XFT_DIR_NAME} && bash
236+
${XPU_XCCL_URL} ${XPU_XCCL_DIR_NAME} ${XPU_FFT_URL} ${XPU_FFT_DIR_NAME} 1
237+
&& wget ${XPU_XFT_GET_DEPENCE_URL} && bash ${XFT_COMMAND} ${XPU_XFT_URL}
238+
${XPU_XFT_DIR_NAME} && bash
221239
${CMAKE_SOURCE_DIR}/tools/xpu/get_xpti_dependence.sh ${XPU_XPTI_URL}
222240
${XPU_XPTI_DIR_NAME}
223241
DOWNLOAD_NO_PROGRESS 1
@@ -231,7 +249,8 @@ if(WITH_XPU_XRE5)
231249
BUILD_BYPRODUCTS ${XPU_RT_LIB}
232250
BUILD_BYPRODUCTS ${XPU_CUDA_RT_LIB}
233251
BUILD_BYPRODUCTS ${XPU_ML_LIB}
234-
BUILD_BYPRODUCTS ${XPU_BKCL_LIB})
252+
BUILD_BYPRODUCTS ${XPU_BKCL_LIB}
253+
BUILD_BYPRODUCTS ${XPU_FFT_LIB})
235254
else()
236255
ExternalProject_Add(
237256
${XPU_PROJECT}
@@ -241,8 +260,9 @@ else()
241260
DOWNLOAD_COMMAND
242261
bash ${CMAKE_SOURCE_DIR}/tools/xpu/pack_paddle_dependence.sh
243262
${XPU_XRE_URL} ${XPU_XRE_DIR_NAME} ${XPU_XHPC_URL} ${XPU_XHPC_DIR_NAME}
244-
${XPU_XCCL_URL} ${XPU_XCCL_DIR_NAME} 0 && wget ${XPU_XFT_GET_DEPENCE_URL}
245-
&& bash get_xft_dependence.sh ${XPU_XFT_URL} ${XPU_XFT_DIR_NAME} && bash
263+
${XPU_XCCL_URL} ${XPU_XCCL_DIR_NAME} ${XPU_FFT_URL} ${XPU_FFT_DIR_NAME} 0
264+
&& wget ${XPU_XFT_GET_DEPENCE_URL} && bash get_xft_dependence.sh
265+
${XPU_XFT_URL} ${XPU_XFT_DIR_NAME} && bash
246266
${CMAKE_SOURCE_DIR}/tools/xpu/get_xpti_dependence.sh ${XPU_XPTI_URL}
247267
${XPU_XPTI_DIR_NAME}
248268
DOWNLOAD_NO_PROGRESS 1
@@ -272,6 +292,16 @@ if(WITH_XPU_XFT)
272292
target_link_libraries(xpulib ${XPU_XFT_LIB})
273293
endif()
274294

295+
if(WITH_XPU_FFT)
296+
message(STATUS "Compile with XPU FFT!")
297+
add_definitions(-DPADDLE_WITH_XPU_FFT)
298+
299+
set(XPU_FFT_INC_DIR "${XPU_INC_DIR}/fft")
300+
include_directories(${XPU_FFT_INC_DIR})
301+
set(XPU_FFT_LIB "${XPU_LIB_DIR}/${XPU_FFT_LIB_NAME}")
302+
target_link_libraries(xpulib ${XPU_FFT_LIB})
303+
endif()
304+
275305
set(XPU_XHPC_INC_DIR "${XPU_INC_DIR}/xhpc")
276306
include_directories(${XPU_XHPC_INC_DIR})
277307
set(XPU_XRE_INC_DIR "${XPU_INC_DIR}/xre")

python/env_dict.py.in

+3
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,9 @@ env_dict={
7070
'XPU_CUDA_LIB':'@XPU_CUDA_LIB@',
7171
'XPU_CUDA_LIB_NAME':'@XPU_CUDA_LIB_NAME@',
7272
'WITH_XPU_XRE5':'@WITH_XPU_XRE5@',
73+
'WITH_XPU_FFT':'@WITH_XPU_FFT@',
74+
'XPU_FFT_LIB':'@XPU_FFT_LIB@',
75+
'XPU_FFT_LIB_NAME':'@XPU_FFT_LIB_NAME@',
7376
'XPU_CUDA_RT_LIB':'@XPU_CUDA_RT_LIB@',
7477
'XPU_CUDA_RT_LIB_NAME':'@XPU_CUDA_RT_LIB_NAME@',
7578
'XPU_ML_LIB':'@XPU_ML_LIB@',

python/setup.py.in

+4
Original file line numberDiff line numberDiff line change
@@ -1146,6 +1146,10 @@ if '${WITH_XPU_XFT}' == 'ON':
11461146
shutil.copy('${XPU_XFT_LIB}', libs_path)
11471147
package_data['paddle.libs']+=['${XPU_XFT_LIB_NAME}']
11481148

1149+
if '${WITH_XPU_FFT}' == 'ON':
1150+
shutil.copy('${XPU_FFT_LIB}', libs_path)
1151+
package_data['paddle.libs']+=['${XPU_FFT_LIB_NAME}']
1152+
11491153
if '${WITH_XPTI}' == 'ON':
11501154
shutil.copy('${XPU_XPTI_LIB}', libs_path)
11511155
package_data['paddle.libs']+=['${XPU_XPTI_LIB_NAME}']

setup.py

+4
Original file line numberDiff line numberDiff line change
@@ -1607,6 +1607,10 @@ def get_package_data_and_package_dir():
16071607
shutil.copy(env_dict.get("XPU_BKCL_LIB"), libs_path)
16081608
package_data['paddle.libs'] += [env_dict.get("XPU_BKCL_LIB_NAME")]
16091609

1610+
if env_dict.get("WITH_XPU_FFT") == 'ON':
1611+
shutil.copy(env_dict.get("XPU_FFT_LIB"), libs_path)
1612+
package_data['paddle.libs'] += [env_dict.get("XPU_FFT_LIB_NAME")]
1613+
16101614
if env_dict.get("WITH_XPU_XFT") == 'ON':
16111615
shutil.copy(env_dict.get("XPU_XFT_LIB"), libs_path)
16121616
package_data['paddle.libs'] += [env_dict.get("XPU_XFT_LIB_NAME")]

tools/xpu/pack_paddle_dependence.sh

+25-1
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,15 @@ XHPC_DIR_NAME=$4
2626
XCCL_URL=$5
2727
XCCL_DIR_NAME=$6
2828

29-
WITH_XPU_XRE5=$7
29+
XFFT_URL=$7
30+
XFFT_DIR_NAME=$8
31+
32+
WITH_XPU_XRE5=$9
3033

3134
mkdir -p xpu/include/xhpc/xblas
3235
mkdir -p xpu/include/xhpc/xfa
3336
mkdir -p xpu/include/xhpc/xpudnn
37+
mkdir -p xpu/include/xfft
3438
mkdir -p xpu/include/xpu
3539
mkdir -p xpu/include/xre
3640
mkdir -p xpu/lib
@@ -99,6 +103,13 @@ function xccl_prepare() {
99103
patchelf --set-rpath '$ORIGIN/' xpu/lib/libbkcl.so
100104
}
101105

106+
function xfft_prepare() {
107+
check_files ${XFFT_DIR_NAME}/include/cufft.h ${XFFT_DIR_NAME}/lib64/libcufft.so
108+
cp -r ${XFFT_DIR_NAME}/include/* xpu/include/xpu/
109+
cp -r ${XFFT_DIR_NAME}/lib64/* xpu/lib/
110+
cp -r ${XFFT_DIR_NAME}/include/* xpu/include/xfft
111+
}
112+
102113
function local_prepare() {
103114
# xre prepare
104115
if [[ ! -d ${LOCAL_PATH}/${XRE_DIR_NAME} ]]; then
@@ -117,6 +128,12 @@ function local_prepare() {
117128
XHPC_TAR_NAME=${XHPC_DIR_NAME}.tar.gz
118129
tar -zxf ${LOCAL_PATH}/${XHPC_TAR_NAME} -C ${LOCAL_PATH}
119130
fi
131+
132+
# xfft prepare
133+
if [[ ! -d ${LOCAL_PATH}/${XFFT_DIR_NAME} ]]; then
134+
XFFT_TAR_NAME=${XFFT_DIR_NAME}.tar.gz
135+
tar -zxf ${LOCAL_PATH}/${XFFT_TAR_NAME} -C ${LOCAL_PATH}
136+
fi
120137
}
121138

122139
function local_assemble() {
@@ -129,6 +146,11 @@ function local_assemble() {
129146
cp -r ${LOCAL_PATH}/$XCCL_DIR_NAME/include/* xpu/include/xpu/
130147
cp -r ${LOCAL_PATH}/$XCCL_DIR_NAME/so/* xpu/lib/
131148

149+
# xfft assemble
150+
cp -r ${LOCAL_PATH}/$XFFT_DIR_NAME/include/* xpu/include/xpu/
151+
cp -r ${LOCAL_PATH}/$XFFT_DIR_NAME/so/* xpu/lib/
152+
cp -r ${LOCAL_PATH}/$XFFT_DIR_NAME/include/* xpu/include/xfft
153+
132154
# xhpc assemble
133155
cp -r ${LOCAL_PATH}/${XHPC_DIR_NAME}/xdnn/include/* xpu/include/
134156
cp -r ${LOCAL_PATH}/${XHPC_DIR_NAME}/xdnn/so/libxpuapi.so xpu/lib
@@ -161,7 +183,9 @@ else
161183
download_from_bos ${XRE_URL}
162184
download_from_bos ${XHPC_URL}
163185
download_from_bos ${XCCL_URL}
186+
download_from_bos ${XFFT_URL}
164187
xre_prepare
165188
xhpc_prepare
166189
xccl_prepare
190+
xfft_prepare
167191
fi

0 commit comments

Comments
 (0)