mirror of
https://github.com/zebrajr/pytorch.git
synced 2025-12-07 12:21:27 +01:00
We're no longer building Caffe2 mobile as part of our CI, and it adds a lot of clutter to our make files. Any lingering internal dependencies will use the buck build and so wont be effected. Pull Request resolved: https://github.com/pytorch/pytorch/pull/84338 Approved by: https://github.com/dreiss
106 lines
3.7 KiB
CMake
106 lines
3.7 KiB
CMake
if(INTERN_BUILD_MOBILE)
|
|
list(APPEND Caffe2_CPU_SRCS
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/embedding_lookup_idx.cc"
|
|
)
|
|
set(Caffe2_CPU_SRCS ${Caffe2_CPU_SRCS} PARENT_SCOPE)
|
|
return()
|
|
endif()
|
|
|
|
# ---[ CPU files.
|
|
file(GLOB common_srcs *.cc)
|
|
file(GLOB avx_srcs *_avx.cc)
|
|
file(GLOB avx2_srcs *_avx2.cc)
|
|
file(GLOB avx512_srcs *_avx512.cc)
|
|
# exclude avx, avx2, and avx512 srcs from common_srcs
|
|
exclude(common_srcs "${common_srcs}" ${avx_srcs})
|
|
exclude(common_srcs "${common_srcs}" ${avx2_srcs})
|
|
exclude(common_srcs "${common_srcs}" ${avx512_srcs})
|
|
|
|
# We will always build common srcs.
|
|
set(Caffe2_CPU_SRCS ${Caffe2_CPU_SRCS} ${common_srcs})
|
|
|
|
# We will only build the perf kernel files if the compiler supports avx2
|
|
# extensions.
|
|
if(CXX_AVX2_FOUND)
|
|
add_library(Caffe2_perfkernels_avx STATIC ${avx_srcs})
|
|
add_library(Caffe2_perfkernels_avx2 STATIC ${avx2_srcs})
|
|
add_dependencies(Caffe2_perfkernels_avx Caffe2_PROTO)
|
|
add_dependencies(Caffe2_perfkernels_avx2 Caffe2_PROTO)
|
|
target_link_libraries(Caffe2_perfkernels_avx PRIVATE c10)
|
|
target_link_libraries(Caffe2_perfkernels_avx2 PRIVATE c10)
|
|
install(TARGETS Caffe2_perfkernels_avx Caffe2_perfkernels_avx2
|
|
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}")
|
|
|
|
if(MSVC AND NOT "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
|
|
target_compile_options(Caffe2_perfkernels_avx
|
|
PRIVATE "/arch:AVX"
|
|
PRIVATE "/D__F16C__")
|
|
target_compile_options(Caffe2_perfkernels_avx2
|
|
PRIVATE "/arch:AVX2"
|
|
PRIVATE "/D__FMA__"
|
|
PRIVATE "/D__F16C__")
|
|
else()
|
|
target_compile_options(Caffe2_perfkernels_avx
|
|
PRIVATE "-mavx"
|
|
PRIVATE "-mf16c")
|
|
target_compile_options(Caffe2_perfkernels_avx2
|
|
PRIVATE "-mavx2"
|
|
PRIVATE "-mfma"
|
|
PRIVATE "-mavx"
|
|
PRIVATE "-mf16c")
|
|
endif()
|
|
caffe2_interface_library(
|
|
Caffe2_perfkernels_avx Caffe2_perfkernels_avx_interface)
|
|
caffe2_interface_library(
|
|
Caffe2_perfkernels_avx2 Caffe2_perfkernels_avx2_interface)
|
|
list(APPEND
|
|
Caffe2_DEPENDENCY_WHOLE_LINK_LIBS
|
|
"Caffe2_perfkernels_avx_interface")
|
|
list(APPEND
|
|
Caffe2_DEPENDENCY_WHOLE_LINK_LIBS
|
|
"Caffe2_perfkernels_avx2_interface")
|
|
|
|
if(CAFFE2_COMPILER_SUPPORTS_AVX512_EXTENSIONS)
|
|
add_library(Caffe2_perfkernels_avx512 STATIC ${avx512_srcs})
|
|
add_dependencies(Caffe2_perfkernels_avx512 Caffe2_PROTO)
|
|
target_link_libraries(Caffe2_perfkernels_avx512 PRIVATE c10)
|
|
install(TARGETS Caffe2_perfkernels_avx512
|
|
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}")
|
|
|
|
if(MSVC AND NOT "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
|
|
target_compile_options(Caffe2_perfkernels_avx512
|
|
PRIVATE "/D__AVX512F__"
|
|
PRIVATE "/D__AVX512DQ__"
|
|
PRIVATE "/D__AVX512VL__"
|
|
PRIVATE "/arch:AVX2"
|
|
PRIVATE "/D__FMA__"
|
|
PRIVATE "/D__F16C__")
|
|
else()
|
|
target_compile_options(Caffe2_perfkernels_avx512
|
|
PRIVATE "-mavx512f"
|
|
PRIVATE "-mavx512dq"
|
|
PRIVATE "-mavx512vl"
|
|
PRIVATE "-mavx2"
|
|
PRIVATE "-mfma"
|
|
PRIVATE "-mavx"
|
|
PRIVATE "-mf16c")
|
|
endif()
|
|
caffe2_interface_library(
|
|
Caffe2_perfkernels_avx512 Caffe2_perfkernels_avx512_interface)
|
|
list(APPEND
|
|
Caffe2_DEPENDENCY_WHOLE_LINK_LIBS
|
|
"Caffe2_perfkernels_avx512_interface")
|
|
endif()
|
|
endif()
|
|
|
|
# TODO(jiayq): currently, we only implement the very base files for the
|
|
# perfkernels. This is because to implement avx and avx2 files, we actually
|
|
# need to set up different compilation units and this is a bit more involving
|
|
# in terms of CMakefile changes. This is a stop-gap solution until we get a
|
|
# more proper implementation.
|
|
|
|
set(Caffe2_CPU_SRCS ${Caffe2_CPU_SRCS} PARENT_SCOPE)
|
|
set(Caffe2_DEPENDENCY_WHOLE_LINK_LIBS
|
|
${Caffe2_DEPENDENCY_WHOLE_LINK_LIBS}
|
|
PARENT_SCOPE)
|