You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
1.8 KiB
54 lines
1.8 KiB
include(ExternalProject)
|
|
|
|
# update eigen to the commit id f612df27 on 03/16/2021
|
|
set(EIGEN_PREFIX_DIR ${THIRD_PARTY_PATH}/eigen3)
|
|
set(EIGEN_SOURCE_DIR ${THIRD_PARTY_PATH}/eigen3/src/extern_eigen3)
|
|
set(EIGEN_REPOSITORY https://gitlab.com/libeigen/eigen.git)
|
|
set(EIGEN_TAG f612df273689a19d25b45ca4f8269463207c4fee)
|
|
|
|
cache_third_party(extern_eigen3
|
|
REPOSITORY ${EIGEN_REPOSITORY}
|
|
TAG ${EIGEN_TAG}
|
|
DIR EIGEN_SOURCE_DIR)
|
|
|
|
if(WIN32)
|
|
add_definitions(-DEIGEN_STRONG_INLINE=inline)
|
|
elseif(LINUX)
|
|
if(WITH_ROCM)
|
|
# For HIPCC Eigen::internal::device::numeric_limits is not EIGEN_DEVICE_FUNC
|
|
# which will cause compiler error of using __host__ funciont in __host__ __device__
|
|
file(TO_NATIVE_PATH ${PADDLE_SOURCE_DIR}/patches/eigen/Meta.h native_src)
|
|
file(TO_NATIVE_PATH ${EIGEN_SOURCE_DIR}/Eigen/src/Core/util/Meta.h native_dst)
|
|
file(TO_NATIVE_PATH ${PADDLE_SOURCE_DIR}/patches/eigen/TensorReductionGpu.h native_src1)
|
|
file(TO_NATIVE_PATH ${EIGEN_SOURCE_DIR}/unsupported/Eigen/CXX11/src/Tensor/TensorReductionGpu.h native_dst1)
|
|
set(EIGEN_PATCH_COMMAND cp ${native_src} ${native_dst} && cp ${native_src1} ${native_dst1})
|
|
endif()
|
|
endif()
|
|
|
|
set(EIGEN_INCLUDE_DIR ${EIGEN_SOURCE_DIR})
|
|
INCLUDE_DIRECTORIES(${EIGEN_INCLUDE_DIR})
|
|
|
|
ExternalProject_Add(
|
|
extern_eigen3
|
|
${EXTERNAL_PROJECT_LOG_ARGS}
|
|
${SHALLOW_CLONE}
|
|
"${EIGEN_DOWNLOAD_CMD}"
|
|
PREFIX ${EIGEN_PREFIX_DIR}
|
|
SOURCE_DIR ${EIGEN_SOURCE_DIR}
|
|
UPDATE_COMMAND ""
|
|
PATCH_COMMAND ${EIGEN_PATCH_COMMAND}
|
|
CONFIGURE_COMMAND ""
|
|
BUILD_COMMAND ""
|
|
INSTALL_COMMAND ""
|
|
TEST_COMMAND ""
|
|
)
|
|
|
|
add_library(eigen3 INTERFACE)
|
|
|
|
add_dependencies(eigen3 extern_eigen3)
|
|
|
|
# sw not support thread_local semantic
|
|
if(WITH_SW)
|
|
add_definitions(-DEIGEN_AVOID_THREAD_LOCAL)
|
|
endif()
|