Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
85 changes: 28 additions & 57 deletions cmake/third_party.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -575,9 +575,29 @@ if(WITH_CUSPARSELT)
list(APPEND third_party_deps extern_cusparselt)
endif()

set(FLASHATTN_ENABLED OFF)
string(FIND "${CUDA_ARCH_BIN}" "90" ARCH_BIN_CONTAINS_90)

This comment was marked as outdated.

if(NOT WITH_GPU
OR NOT WITH_DISTRIBUTE
OR (ARCH_BIN_CONTAINS_90 EQUAL -1))

This comment was marked as outdated.

set(WITH_NVSHMEM OFF)
endif()
if(WITH_SLEEF
AND NOT WITH_ROCM
AND NOT WIN32)
include(cmake/sleef.cmake)
if(TARGET extern_sleef)
list(APPEND third_party_deps extern_sleef)
endif()
endif()
if(WITH_NVSHMEM)
include(external/nvshmem)
list(APPEND third_party_deps extern_nvshmem)
endif()

if(WITH_ROCM)
set(FLASHATTN_ENABLED ON)
include(external/flashattn)
list(APPEND third_party_deps extern_flashattn)
set(WITH_FLASHATTN ON)
endif()

if(WITH_GPU
Expand All @@ -594,73 +614,24 @@ if(WITH_GPU
endforeach()
foreach(arch ${NVCC_ARCH_BIN})
if(${arch} GREATER_EQUAL 80)
set(FLASHATTN_ENABLED ON)
include(external/flashattn)
list(APPEND third_party_deps extern_flashattn)
set(WITH_FLASHATTN ON)
break()
endif()
endforeach()
elseif(${CMAKE_CUDA_COMPILER_VERSION} GREATER_EQUAL 11.4)
foreach(arch ${NVCC_ARCH_BIN})
if(${arch} GREATER_EQUAL 80)
set(FLASHATTN_ENABLED ON)
include(external/flashattn)
list(APPEND third_party_deps extern_flashattn)
set(WITH_FLASHATTN ON)
break()
endif()
endforeach()
endif()
endif()

set(ARCH_BIN_CONTAINS_90 -1)
foreach(arch ${NVCC_ARCH_BIN})
if(${arch} GREATER_EQUAL 90)
set(ARCH_BIN_CONTAINS_90 0)
break()
endif()
endforeach()

set(WITH_NVSHMEM_USER_DEFINED OFF)
if(DEFINED CACHE{WITH_NVSHMEM} AND WITH_NVSHMEM)
set(WITH_NVSHMEM_USER_DEFINED ON)
endif()

set(NVSHMEM_AVAILABLE ON)
if(NOT WITH_XPU)
if(NOT WITH_GPU
OR NOT WITH_DISTRIBUTE
OR (ARCH_BIN_CONTAINS_90 EQUAL -1)
OR NOT FLASHATTN_ENABLED)
set(NVSHMEM_AVAILABLE OFF)
endif()
endif()

if(WITH_NVSHMEM AND NOT NVSHMEM_AVAILABLE)
if(WITH_NVSHMEM_USER_DEFINED)
message(
FATAL_ERROR
"For non-XPU builds, WITH_NVSHMEM=ON requires WITH_GPU=ON, "
"WITH_DISTRIBUTE=ON, NVCC_ARCH_BIN containing sm90 or higher, "
"and FLASHATTN_ENABLED=ON.")
else()
set(WITH_NVSHMEM OFF)
endif()
endif()
if(WITH_SLEEF
AND NOT WITH_ROCM
AND NOT WIN32)
include(cmake/sleef.cmake)
if(TARGET extern_sleef)
list(APPEND third_party_deps extern_sleef)
endif()
endif()
if(WITH_NVSHMEM)
include(external/nvshmem)
list(APPEND third_party_deps extern_nvshmem)
endif()

if(FLASHATTN_ENABLED)
include(external/flashattn)
list(APPEND third_party_deps extern_flashattn)
set(WITH_FLASHATTN ON)
endif()

if(WITH_CUDNN_FRONTEND)
include(external/cudnn-frontend) # download cudnn-frontend
list(APPEND third_party_deps extern_cudnn_frontend)
Expand Down
14 changes: 7 additions & 7 deletions paddle/fluid/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,12 @@ add_subdirectory(ir_adaptor)
add_subdirectory(primitive)
add_subdirectory(sub_graph)
# NOTE: Only compile FP8-related modules under CUDA 12.9 and above, and Hopper architecture.
#string(FIND "${COMPILED_CUDA_ARCHS}" "90" ARCH_BIN_CONTAINS_90)
#if(WITH_GPU
# AND (ARCH_BIN_CONTAINS_90 GREATER -1)
# AND (CUDA_VERSION GREATER_EQUAL 12.9))
# add_subdirectory(fp8)
# message(STATUS "To compile FP8-related modules, deep_gemm and kitchen.")
#endif()
string(FIND "${COMPILED_CUDA_ARCHS}" "90" ARCH_BIN_CONTAINS_90)
if(WITH_GPU
AND (ARCH_BIN_CONTAINS_90 GREATER -1)
AND (CUDA_VERSION GREATER_EQUAL 12.9))
add_subdirectory(fp8)
message(STATUS "To compile FP8-related modules, deep_gemm and kitchen.")
endif()
# NOTE: please add subdirectory inference at last.
add_subdirectory(inference)
14 changes: 7 additions & 7 deletions paddle/fluid/distributed/collective/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
string(REGEX MATCH "9[0-9]|1[0-9][0-9]" ARCH_BIN_CONTAINS_GE_90
"${COMPILED_CUDA_ARCHS}")

#if(WITH_DISTRIBUTE
# AND WITH_GPU
# AND ARCH_BIN_CONTAINS_GE_90)
# message(STATUS "Enable DeepEP alltoall communication.")
# add_subdirectory(deep_ep)
# set(DEEPEP_LIB deep_ep)
#endif()
if(WITH_DISTRIBUTE
AND WITH_GPU
AND ARCH_BIN_CONTAINS_GE_90)
message(STATUS "Enable DeepEP alltoall communication.")
add_subdirectory(deep_ep)
set(DEEPEP_LIB deep_ep)
endif()

if(WITH_DISTRIBUTE
AND WITH_XPU
Expand Down
18 changes: 9 additions & 9 deletions paddle/fluid/pybind/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -150,15 +150,15 @@ set(PYBIND_SRCS
if(WITH_DISTRIBUTE)
set(PYBIND_SRCS ${PYBIND_SRCS} dist_api.cc)

#string(FIND "${CUDA_ARCH_BIN}" "90" ARCH_BIN_CONTAINS_90)
#if(WITH_GPU AND (ARCH_BIN_CONTAINS_90 GREATER -1))
# set(PYBIND_DEPS ${PYBIND_DEPS} deep_ep)
# set(PYBIND_SRCS ${PYBIND_SRCS} deep_ep_api.cc)
# add_definitions(-DPADDLE_WITH_DEEP_EP)
# if(WITH_NVSHMEM)
# set(PYBIND_DEPS ${PYBIND_DEPS} nvshmem)
# endif()
#endif()
string(FIND "${CUDA_ARCH_BIN}" "90" ARCH_BIN_CONTAINS_90)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 建议 CUDA_ARCH_BIN 与 collective/CMakeLists.txt 中使用的 COMPILED_CUDA_ARCHS 不一致。

paddle/fluid/distributed/collective/CMakeLists.txt 用 COMPILED_CUDA_ARCHS + 正则 9[0-9]|1[0-9][0-9] 判断是否编译 deep_ep(覆盖 sm90~sm100+),而此处用 CUDA_ARCH_BIN + FIND "90"。当:

  1. 非 Manual 模式构建时 CUDA_ARCH_BIN 为空 → deep_ep 已被编译,但此处 pybind 不链接,运行时 import deep_ep 因找不到符号而报错;
  2. 目标架构为 sm_100(Blackwell)时,CUDA_ARCH_BIN="100" 不含 "90" → collective 编译了 deep_ep,但 pybind 不链接,同样导致 import 失败。

建议改为与 collective/CMakeLists.txt 保持一致:

string(REGEX MATCH "9[0-9]|1[0-9][0-9]" ARCH_BIN_CONTAINS_GE_90 "${COMPILED_CUDA_ARCHS}")
if(WITH_GPU AND ARCH_BIN_CONTAINS_GE_90)

if(WITH_GPU AND (ARCH_BIN_CONTAINS_90 GREATER -1))
set(PYBIND_DEPS ${PYBIND_DEPS} deep_ep)
set(PYBIND_SRCS ${PYBIND_SRCS} deep_ep_api.cc)
add_definitions(-DPADDLE_WITH_DEEP_EP)
if(WITH_NVSHMEM)
set(PYBIND_DEPS ${PYBIND_DEPS} nvshmem)
endif()
endif()
if(WITH_XPU AND WITH_XPU_XRE5)
set(PYBIND_DEPS ${PYBIND_DEPS} deep_ep_xpu)
set(PYBIND_SRCS ${PYBIND_SRCS} deep_ep_api.cc)
Expand Down