1*da0073e9SAndroid Build Coastguard Worker# ---[ Generate and install header and cpp files 2*da0073e9SAndroid Build Coastguard Workerinclude(../cmake/Codegen.cmake) 3*da0073e9SAndroid Build Coastguard Worker 4*da0073e9SAndroid Build Coastguard Worker# ---[ Vulkan code gen 5*da0073e9SAndroid Build Coastguard Workerif(USE_VULKAN) 6*da0073e9SAndroid Build Coastguard Worker include(../cmake/VulkanCodegen.cmake) 7*da0073e9SAndroid Build Coastguard Workerendif() 8*da0073e9SAndroid Build Coastguard Worker 9*da0073e9SAndroid Build Coastguard Worker# Debug messages - if you want to get a list of source files and examine 10*da0073e9SAndroid Build Coastguard Worker# target information, enable the following by -DPRINT_CMAKE_DEBUG_INFO=ON. 11*da0073e9SAndroid Build Coastguard Workerset(PRINT_CMAKE_DEBUG_INFO FALSE CACHE BOOL "print cmake debug information") 12*da0073e9SAndroid Build Coastguard Workerif(PRINT_CMAKE_DEBUG_INFO) 13*da0073e9SAndroid Build Coastguard Worker include(../cmake/DebugHelper.cmake) 14*da0073e9SAndroid Build Coastguard Workerendif() 15*da0073e9SAndroid Build Coastguard Worker 16*da0073e9SAndroid Build Coastguard Worker# ATen parallelism settings 17*da0073e9SAndroid Build Coastguard Worker# OMP - OpenMP for intra-op, native thread pool for inter-op parallelism 18*da0073e9SAndroid Build Coastguard Worker# NATIVE - using native thread pool for intra- and inter-op parallelism 19*da0073e9SAndroid Build Coastguard Workerif(INTERN_BUILD_MOBILE) 20*da0073e9SAndroid Build Coastguard Worker set(ATEN_THREADING "NATIVE" CACHE STRING "ATen parallel backend") 21*da0073e9SAndroid Build Coastguard Workerelse() 22*da0073e9SAndroid Build Coastguard Worker if(USE_OPENMP) 23*da0073e9SAndroid Build Coastguard Worker set(ATEN_THREADING "OMP" CACHE STRING "ATen parallel backend") 24*da0073e9SAndroid Build Coastguard Worker else() 25*da0073e9SAndroid Build Coastguard Worker set(ATEN_THREADING "NATIVE" CACHE STRING "ATen parallel backend") 26*da0073e9SAndroid Build Coastguard Worker endif() 27*da0073e9SAndroid Build Coastguard Workerendif() 28*da0073e9SAndroid Build Coastguard Worker 29*da0073e9SAndroid Build Coastguard Workerset(AT_PARALLEL_OPENMP 0) 30*da0073e9SAndroid Build Coastguard Workerset(AT_PARALLEL_NATIVE 0) 31*da0073e9SAndroid Build Coastguard Worker 32*da0073e9SAndroid Build Coastguard Workermessage(STATUS "Using ATen parallel backend: ${ATEN_THREADING}") 33*da0073e9SAndroid Build Coastguard Workerif("${ATEN_THREADING}" STREQUAL "OMP") 34*da0073e9SAndroid Build Coastguard Worker set(AT_PARALLEL_OPENMP 1) 35*da0073e9SAndroid Build Coastguard Workerelseif("${ATEN_THREADING}" STREQUAL "NATIVE") 36*da0073e9SAndroid Build Coastguard Worker set(AT_PARALLEL_NATIVE 1) 37*da0073e9SAndroid Build Coastguard Workerelse() 38*da0073e9SAndroid Build Coastguard Worker message(FATAL_ERROR "Unknown ATen parallel backend: ${ATEN_THREADING}") 39*da0073e9SAndroid Build Coastguard Workerendif() 40*da0073e9SAndroid Build Coastguard Worker 41*da0073e9SAndroid Build Coastguard Worker# ---[ Declare source file lists 42*da0073e9SAndroid Build Coastguard Worker 43*da0073e9SAndroid Build Coastguard Worker# ---[ ATen build 44*da0073e9SAndroid Build Coastguard Workerif(INTERN_BUILD_ATEN_OPS) 45*da0073e9SAndroid Build Coastguard Worker set(__torch_CMAKE_POSITION_INDEPENDENT_CODE ${CMAKE_POSITION_INDEPENDENT_CODE}) 46*da0073e9SAndroid Build Coastguard Worker set(CMAKE_POSITION_INDEPENDENT_CODE ON) 47*da0073e9SAndroid Build Coastguard Worker add_subdirectory(../aten aten) 48*da0073e9SAndroid Build Coastguard Worker set(CMAKE_POSITION_INDEPENDENT_CODE ${__torch_CMAKE_POSITION_INDEPENDENT_CODE}) 49*da0073e9SAndroid Build Coastguard Worker 50*da0073e9SAndroid Build Coastguard Worker # Generate the headers wrapped by our operator 51*da0073e9SAndroid Build Coastguard Worker file(GLOB_RECURSE torchgen_python "${PROJECT_SOURCE_DIR}/torchgen/*.py") 52*da0073e9SAndroid Build Coastguard Worker 53*da0073e9SAndroid Build Coastguard Worker 54*da0073e9SAndroid Build Coastguard Worker # Add source, includes, and libs to lists 55*da0073e9SAndroid Build Coastguard Worker list(APPEND Caffe2_CPU_SRCS ${ATen_CPU_SRCS}) 56*da0073e9SAndroid Build Coastguard Worker list(APPEND Caffe2_GPU_SRCS ${ATen_CUDA_CPP_SRCS}) 57*da0073e9SAndroid Build Coastguard Worker list(APPEND Caffe2_XPU_SRCS ${ATen_XPU_SRCS}) 58*da0073e9SAndroid Build Coastguard Worker list(APPEND Caffe2_XPU_INCLUDE ${ATen_XPU_INCLUDE}) 59*da0073e9SAndroid Build Coastguard Worker list(APPEND Caffe2_XPU_DEPENDENCY_LIBS ${ATen_XPU_DEPENDENCY_LIBS}) 60*da0073e9SAndroid Build Coastguard Worker list(APPEND Caffe2_GPU_SRCS_W_SORT_BY_KEY ${ATen_CUDA_SRCS_W_SORT_BY_KEY}) 61*da0073e9SAndroid Build Coastguard Worker list(APPEND Caffe2_GPU_CU_SRCS ${ATen_CUDA_CU_SRCS}) 62*da0073e9SAndroid Build Coastguard Worker list(APPEND Caffe2_GPU_CU_SRCS_W_SORT_BY_KEY ${ATen_CUDA_CU_SRCS_W_SORT_BY_KEY}) 63*da0073e9SAndroid Build Coastguard Worker list(APPEND Caffe2_HIP_SRCS ${ATen_HIP_SRCS}) 64*da0073e9SAndroid Build Coastguard Worker list(APPEND Caffe2_MPS_SRCS ${ATen_MPS_SRCS}) 65*da0073e9SAndroid Build Coastguard Worker list(APPEND Caffe2_XPU_SRCS ${ATen_XPU_SRCS}) 66*da0073e9SAndroid Build Coastguard Worker list(APPEND Caffe2_HIP_SRCS ${ATen_HIP_SRCS_W_SORT_BY_KEY}) 67*da0073e9SAndroid Build Coastguard Worker list(APPEND Caffe2_CPU_TEST_SRCS ${ATen_CPU_TEST_SRCS}) 68*da0073e9SAndroid Build Coastguard Worker list(APPEND Caffe2_MPS_TEST_SRCS ${ATen_MPS_TEST_SRCS}) 69*da0073e9SAndroid Build Coastguard Worker list(APPEND Caffe2_GPU_TEST_SRCS ${ATen_CUDA_TEST_SRCS}) 70*da0073e9SAndroid Build Coastguard Worker list(APPEND Caffe2_HIP_TEST_SRCS ${ATen_HIP_TEST_SRCS}) 71*da0073e9SAndroid Build Coastguard Worker list(APPEND Caffe2_XPU_TEST_SRCS ${ATen_XPU_TEST_SRCS}) 72*da0073e9SAndroid Build Coastguard Worker list(APPEND Caffe2_CPU_TEST_SRCS ${ATen_CORE_TEST_SRCS}) 73*da0073e9SAndroid Build Coastguard Worker list(APPEND Caffe2_VULKAN_TEST_SRCS ${ATen_VULKAN_TEST_SRCS}) 74*da0073e9SAndroid Build Coastguard Worker list(APPEND Caffe2_CPU_INCLUDE ${ATen_CPU_INCLUDE}) 75*da0073e9SAndroid Build Coastguard Worker list(APPEND Caffe2_GPU_INCLUDE ${ATen_CUDA_INCLUDE}) 76*da0073e9SAndroid Build Coastguard Worker list(APPEND Caffe2_HIP_INCLUDE ${ATen_HIP_INCLUDE}) 77*da0073e9SAndroid Build Coastguard Worker list(APPEND Caffe2_XPU_INCLUDE ${ATen_XPU_INCLUDE}) 78*da0073e9SAndroid Build Coastguard Worker list(APPEND Caffe2_VULKAN_INCLUDE ${ATen_VULKAN_INCLUDE}) 79*da0073e9SAndroid Build Coastguard Worker list(APPEND Caffe2_DEPENDENCY_LIBS ${ATen_CPU_DEPENDENCY_LIBS}) 80*da0073e9SAndroid Build Coastguard Worker list(APPEND Caffe2_CUDA_DEPENDENCY_LIBS ${ATen_CUDA_DEPENDENCY_LIBS}) 81*da0073e9SAndroid Build Coastguard Worker list(APPEND Caffe2_HIP_DEPENDENCY_LIBS ${ATen_HIP_DEPENDENCY_LIBS}) 82*da0073e9SAndroid Build Coastguard Worker list(APPEND Caffe2_DEPENDENCY_INCLUDE ${ATen_THIRD_PARTY_INCLUDE}) 83*da0073e9SAndroid Build Coastguard Worker set(Caffe2_CUDA_DEPENDENCY_LIBS ${Caffe2_CUDA_DEPENDENCY_LIBS} PARENT_SCOPE) 84*da0073e9SAndroid Build Coastguard Workerendif() 85*da0073e9SAndroid Build Coastguard Worker 86*da0073e9SAndroid Build Coastguard Worker# ---[ Caffe2 build 87*da0073e9SAndroid Build Coastguard Worker# Note: the folders that are being commented out have not been properly 88*da0073e9SAndroid Build Coastguard Worker# addressed yet. 89*da0073e9SAndroid Build Coastguard Worker 90*da0073e9SAndroid Build Coastguard Workerif(NOT MSVC AND USE_XNNPACK) 91*da0073e9SAndroid Build Coastguard Worker if(NOT TARGET fxdiv) 92*da0073e9SAndroid Build Coastguard Worker set(FXDIV_BUILD_TESTS OFF CACHE BOOL "") 93*da0073e9SAndroid Build Coastguard Worker set(FXDIV_BUILD_BENCHMARKS OFF CACHE BOOL "") 94*da0073e9SAndroid Build Coastguard Worker add_subdirectory( 95*da0073e9SAndroid Build Coastguard Worker "${FXDIV_SOURCE_DIR}" 96*da0073e9SAndroid Build Coastguard Worker "${CMAKE_BINARY_DIR}/FXdiv") 97*da0073e9SAndroid Build Coastguard Worker endif() 98*da0073e9SAndroid Build Coastguard Workerendif() 99*da0073e9SAndroid Build Coastguard Worker 100*da0073e9SAndroid Build Coastguard Workeradd_subdirectory(core) 101*da0073e9SAndroid Build Coastguard Workeradd_subdirectory(serialize) 102*da0073e9SAndroid Build Coastguard Workeradd_subdirectory(utils) 103*da0073e9SAndroid Build Coastguard Workerif(NOT USE_FBGEMM) 104*da0073e9SAndroid Build Coastguard Worker add_subdirectory(perfkernels) 105*da0073e9SAndroid Build Coastguard Workerendif() 106*da0073e9SAndroid Build Coastguard Worker 107*da0073e9SAndroid Build Coastguard Worker# Advanced: if we have allow list specified, we will do intersections for all 108*da0073e9SAndroid Build Coastguard Worker# main lib srcs. 109*da0073e9SAndroid Build Coastguard Workerif(CAFFE2_ALLOWLISTED_FILES) 110*da0073e9SAndroid Build Coastguard Worker caffe2_do_allowlist(Caffe2_CPU_SRCS CAFFE2_ALLOWLISTED_FILES) 111*da0073e9SAndroid Build Coastguard Worker caffe2_do_allowlist(Caffe2_GPU_SRCS CAFFE2_ALLOWLISTED_FILES) 112*da0073e9SAndroid Build Coastguard Worker caffe2_do_allowlist(Caffe2_XPU_SRCS CAFFE2_ALLOWLISTED_FILES) 113*da0073e9SAndroid Build Coastguard Worker caffe2_do_allowlist(Caffe2_GPU_SRCS_W_SORT_BY_KEY CAFFE2_ALLOWLISTED_FILES) 114*da0073e9SAndroid Build Coastguard Worker caffe2_do_allowlist(Caffe2_GPU_CU_SRCS CAFFE2_ALLOWLISTED_FILES) 115*da0073e9SAndroid Build Coastguard Worker caffe2_do_allowlist(Caffe2_GPU_CU_SRCS_W_SORT_BY_KEY CAFFE2_ALLOWLISTED_FILES) 116*da0073e9SAndroid Build Coastguard Worker caffe2_do_allowlist(Caffe2_HIP_SRCS CAFFE2_ALLOWLISTED_FILES) 117*da0073e9SAndroid Build Coastguard Workerendif() 118*da0073e9SAndroid Build Coastguard Worker 119*da0073e9SAndroid Build Coastguard Workerif(PRINT_CMAKE_DEBUG_INFO) 120*da0073e9SAndroid Build Coastguard Worker message(STATUS "CPU sources: ") 121*da0073e9SAndroid Build Coastguard Worker foreach(tmp ${Caffe2_CPU_SRCS}) 122*da0073e9SAndroid Build Coastguard Worker message(STATUS " " ${tmp}) 123*da0073e9SAndroid Build Coastguard Worker endforeach() 124*da0073e9SAndroid Build Coastguard Worker 125*da0073e9SAndroid Build Coastguard Worker message(STATUS "GPU sources: (for torch_cuda_cpp)") 126*da0073e9SAndroid Build Coastguard Worker foreach(tmp ${Caffe2_GPU_SRCS}) 127*da0073e9SAndroid Build Coastguard Worker message(STATUS " " ${tmp}) 128*da0073e9SAndroid Build Coastguard Worker endforeach() 129*da0073e9SAndroid Build Coastguard Worker 130*da0073e9SAndroid Build Coastguard Worker message(STATUS "GPU sources: (for torch_cuda_cu)") 131*da0073e9SAndroid Build Coastguard Worker foreach(tmp ${Caffe2_GPU_CU_SRCS}) 132*da0073e9SAndroid Build Coastguard Worker message(STATUS " " ${tmp}) 133*da0073e9SAndroid Build Coastguard Worker endforeach() 134*da0073e9SAndroid Build Coastguard Worker 135*da0073e9SAndroid Build Coastguard Worker message(STATUS "torch_cuda_cu GPU sources (w/ sort by key): ") 136*da0073e9SAndroid Build Coastguard Worker foreach(tmp ${Caffe2_GPU_CU_SRCS_W_SORT_BY_KEY}) 137*da0073e9SAndroid Build Coastguard Worker message(STATUS " " ${tmp}) 138*da0073e9SAndroid Build Coastguard Worker endforeach() 139*da0073e9SAndroid Build Coastguard Worker 140*da0073e9SAndroid Build Coastguard Worker message(STATUS "torch_cuda_cpp GPU sources (w/ sort by key): ") 141*da0073e9SAndroid Build Coastguard Worker foreach(tmp ${Caffe2_GPU_SRCS_W_SORT_BY_KEY}) 142*da0073e9SAndroid Build Coastguard Worker message(STATUS " " ${tmp}) 143*da0073e9SAndroid Build Coastguard Worker endforeach() 144*da0073e9SAndroid Build Coastguard Worker 145*da0073e9SAndroid Build Coastguard Worker message(STATUS "CPU include: ") 146*da0073e9SAndroid Build Coastguard Worker foreach(tmp ${Caffe2_CPU_INCLUDE}) 147*da0073e9SAndroid Build Coastguard Worker message(STATUS " " ${tmp}) 148*da0073e9SAndroid Build Coastguard Worker endforeach() 149*da0073e9SAndroid Build Coastguard Worker 150*da0073e9SAndroid Build Coastguard Worker message(STATUS "GPU include: ") 151*da0073e9SAndroid Build Coastguard Worker foreach(tmp ${Caffe2_GPU_INCLUDE}) 152*da0073e9SAndroid Build Coastguard Worker message(STATUS " " ${tmp}) 153*da0073e9SAndroid Build Coastguard Worker endforeach() 154*da0073e9SAndroid Build Coastguard Worker 155*da0073e9SAndroid Build Coastguard Worker message(STATUS "CPU test sources: ") 156*da0073e9SAndroid Build Coastguard Worker foreach(tmp ${Caffe2_CPU_TEST_SRCS}) 157*da0073e9SAndroid Build Coastguard Worker message(STATUS " " ${tmp}) 158*da0073e9SAndroid Build Coastguard Worker endforeach() 159*da0073e9SAndroid Build Coastguard Worker 160*da0073e9SAndroid Build Coastguard Worker message(STATUS "GPU test sources: ") 161*da0073e9SAndroid Build Coastguard Worker foreach(tmp ${Caffe2_GPU_TEST_SRCS}) 162*da0073e9SAndroid Build Coastguard Worker message(STATUS " " ${tmp}) 163*da0073e9SAndroid Build Coastguard Worker endforeach() 164*da0073e9SAndroid Build Coastguard Worker 165*da0073e9SAndroid Build Coastguard Worker message(STATUS "HIP sources: ") 166*da0073e9SAndroid Build Coastguard Worker foreach(tmp ${Caffe2_HIP_SRCS}) 167*da0073e9SAndroid Build Coastguard Worker message(STATUS " " ${tmp}) 168*da0073e9SAndroid Build Coastguard Worker endforeach() 169*da0073e9SAndroid Build Coastguard Worker 170*da0073e9SAndroid Build Coastguard Worker message(STATUS "MPS sources: ") 171*da0073e9SAndroid Build Coastguard Worker foreach(tmp ${Caffe2_MPS_SRCS}) 172*da0073e9SAndroid Build Coastguard Worker message(STATUS " " ${tmp}) 173*da0073e9SAndroid Build Coastguard Worker endforeach() 174*da0073e9SAndroid Build Coastguard Worker 175*da0073e9SAndroid Build Coastguard Worker message(STATUS "XPU sources: ") 176*da0073e9SAndroid Build Coastguard Worker foreach(tmp ${Caffe2_XPU_SRCS}) 177*da0073e9SAndroid Build Coastguard Worker message(STATUS " " ${tmp}) 178*da0073e9SAndroid Build Coastguard Worker endforeach() 179*da0073e9SAndroid Build Coastguard Worker 180*da0073e9SAndroid Build Coastguard Worker message(STATUS "HIP test sources: ") 181*da0073e9SAndroid Build Coastguard Worker foreach(tmp ${Caffe2_HIP_TEST_SRCS}) 182*da0073e9SAndroid Build Coastguard Worker message(STATUS " " ${tmp}) 183*da0073e9SAndroid Build Coastguard Worker endforeach() 184*da0073e9SAndroid Build Coastguard Worker 185*da0073e9SAndroid Build Coastguard Worker message(STATUS "ATen CPU test sources: ") 186*da0073e9SAndroid Build Coastguard Worker foreach(tmp ${ATen_CPU_TEST_SRCS}) 187*da0073e9SAndroid Build Coastguard Worker message(STATUS " " ${tmp}) 188*da0073e9SAndroid Build Coastguard Worker endforeach() 189*da0073e9SAndroid Build Coastguard Worker 190*da0073e9SAndroid Build Coastguard Worker message(STATUS "ATen MPS test sources: ") 191*da0073e9SAndroid Build Coastguard Worker foreach(tmp ${ATen_MPS_TEST_SRCS}) 192*da0073e9SAndroid Build Coastguard Worker message(STATUS " " ${tmp}) 193*da0073e9SAndroid Build Coastguard Worker endforeach() 194*da0073e9SAndroid Build Coastguard Worker 195*da0073e9SAndroid Build Coastguard Worker message(STATUS "ATen CUDA test sources: ") 196*da0073e9SAndroid Build Coastguard Worker foreach(tmp ${ATen_CUDA_TEST_SRCS}) 197*da0073e9SAndroid Build Coastguard Worker message(STATUS " " ${tmp}) 198*da0073e9SAndroid Build Coastguard Worker endforeach() 199*da0073e9SAndroid Build Coastguard Worker 200*da0073e9SAndroid Build Coastguard Worker message(STATUS "ATen HIP test sources: ") 201*da0073e9SAndroid Build Coastguard Worker foreach(tmp ${ATen_HIP_TEST_SRCS}) 202*da0073e9SAndroid Build Coastguard Worker message(STATUS " " ${tmp}) 203*da0073e9SAndroid Build Coastguard Worker endforeach() 204*da0073e9SAndroid Build Coastguard Worker 205*da0073e9SAndroid Build Coastguard Worker message(STATUS "ATen XPU test sources: ") 206*da0073e9SAndroid Build Coastguard Worker foreach(tmp ${ATen_XPU_TEST_SRCS}) 207*da0073e9SAndroid Build Coastguard Worker message(STATUS " " ${tmp}) 208*da0073e9SAndroid Build Coastguard Worker endforeach() 209*da0073e9SAndroid Build Coastguard Worker 210*da0073e9SAndroid Build Coastguard Worker message(STATUS "ATen Vulkan test sources: ") 211*da0073e9SAndroid Build Coastguard Worker foreach(tmp ${ATen_VULKAN_TEST_SRCS}) 212*da0073e9SAndroid Build Coastguard Worker message(STATUS " " ${tmp}) 213*da0073e9SAndroid Build Coastguard Worker endforeach() 214*da0073e9SAndroid Build Coastguard Worker 215*da0073e9SAndroid Build Coastguard Workerendif() 216*da0073e9SAndroid Build Coastguard Worker 217*da0073e9SAndroid Build Coastguard Worker# ========================================================== 218*da0073e9SAndroid Build Coastguard Worker# formerly-libtorch 219*da0073e9SAndroid Build Coastguard Worker# ========================================================== 220*da0073e9SAndroid Build Coastguard Worker 221*da0073e9SAndroid Build Coastguard Workerset(TORCH_SRC_DIR "${PROJECT_SOURCE_DIR}/torch") 222*da0073e9SAndroid Build Coastguard Workerset(TORCH_ROOT "${PROJECT_SOURCE_DIR}") 223*da0073e9SAndroid Build Coastguard Worker 224*da0073e9SAndroid Build Coastguard Workerif(NOT TORCH_INSTALL_BIN_DIR) 225*da0073e9SAndroid Build Coastguard Worker set(TORCH_INSTALL_BIN_DIR bin) 226*da0073e9SAndroid Build Coastguard Workerendif() 227*da0073e9SAndroid Build Coastguard Worker 228*da0073e9SAndroid Build Coastguard Workerif(NOT TORCH_INSTALL_INCLUDE_DIR) 229*da0073e9SAndroid Build Coastguard Worker set(TORCH_INSTALL_INCLUDE_DIR include) 230*da0073e9SAndroid Build Coastguard Workerendif() 231*da0073e9SAndroid Build Coastguard Worker 232*da0073e9SAndroid Build Coastguard Workerif(NOT TORCH_INSTALL_LIB_DIR) 233*da0073e9SAndroid Build Coastguard Worker set(TORCH_INSTALL_LIB_DIR lib) 234*da0073e9SAndroid Build Coastguard Workerendif() 235*da0073e9SAndroid Build Coastguard Worker 236*da0073e9SAndroid Build Coastguard Workerset(CMAKE_POSITION_INDEPENDENT_CODE TRUE) 237*da0073e9SAndroid Build Coastguard Worker 238*da0073e9SAndroid Build Coastguard Worker# Generate files 239*da0073e9SAndroid Build Coastguard Workerset(TOOLS_PATH "${TORCH_ROOT}/tools") 240*da0073e9SAndroid Build Coastguard Worker 241*da0073e9SAndroid Build Coastguard Workerconfigure_file("${TORCH_SRC_DIR}/_utils_internal.py" 242*da0073e9SAndroid Build Coastguard Worker "${TOOLS_PATH}/shared/_utils_internal.py" 243*da0073e9SAndroid Build Coastguard Worker COPYONLY) 244*da0073e9SAndroid Build Coastguard Worker 245*da0073e9SAndroid Build Coastguard Worker# Generate header with version info 246*da0073e9SAndroid Build Coastguard Workerconfigure_file("${TORCH_SRC_DIR}/csrc/api/include/torch/version.h.in" 247*da0073e9SAndroid Build Coastguard Worker "${TORCH_SRC_DIR}/csrc/api/include/torch/version.h" 248*da0073e9SAndroid Build Coastguard Worker @ONLY) 249*da0073e9SAndroid Build Coastguard Worker 250*da0073e9SAndroid Build Coastguard Workerset(GENERATED_CXX_TORCH 251*da0073e9SAndroid Build Coastguard Worker "${TORCH_SRC_DIR}/csrc/autograd/generated/Functions.cpp" 252*da0073e9SAndroid Build Coastguard Worker "${TORCH_SRC_DIR}/csrc/autograd/generated/ViewFuncs.cpp" 253*da0073e9SAndroid Build Coastguard Worker ) 254*da0073e9SAndroid Build Coastguard Worker 255*da0073e9SAndroid Build Coastguard Workerif(NOT INTERN_DISABLE_AUTOGRAD AND NOT BUILD_LITE_INTERPRETER) 256*da0073e9SAndroid Build Coastguard Worker list(APPEND GENERATED_CXX_TORCH 257*da0073e9SAndroid Build Coastguard Worker "${TORCH_SRC_DIR}/csrc/autograd/generated/VariableType_0.cpp" 258*da0073e9SAndroid Build Coastguard Worker "${TORCH_SRC_DIR}/csrc/autograd/generated/VariableType_1.cpp" 259*da0073e9SAndroid Build Coastguard Worker "${TORCH_SRC_DIR}/csrc/autograd/generated/VariableType_2.cpp" 260*da0073e9SAndroid Build Coastguard Worker "${TORCH_SRC_DIR}/csrc/autograd/generated/VariableType_3.cpp" 261*da0073e9SAndroid Build Coastguard Worker "${TORCH_SRC_DIR}/csrc/autograd/generated/VariableType_4.cpp" 262*da0073e9SAndroid Build Coastguard Worker "${TORCH_SRC_DIR}/csrc/autograd/generated/TraceType_0.cpp" 263*da0073e9SAndroid Build Coastguard Worker "${TORCH_SRC_DIR}/csrc/autograd/generated/TraceType_1.cpp" 264*da0073e9SAndroid Build Coastguard Worker "${TORCH_SRC_DIR}/csrc/autograd/generated/TraceType_2.cpp" 265*da0073e9SAndroid Build Coastguard Worker "${TORCH_SRC_DIR}/csrc/autograd/generated/TraceType_3.cpp" 266*da0073e9SAndroid Build Coastguard Worker "${TORCH_SRC_DIR}/csrc/autograd/generated/TraceType_4.cpp" 267*da0073e9SAndroid Build Coastguard Worker "${TORCH_SRC_DIR}/csrc/autograd/generated/ADInplaceOrViewType_0.cpp" 268*da0073e9SAndroid Build Coastguard Worker "${TORCH_SRC_DIR}/csrc/autograd/generated/ADInplaceOrViewType_1.cpp" 269*da0073e9SAndroid Build Coastguard Worker "${TORCH_SRC_DIR}/csrc/inductor/aoti_torch/generated/c_shim_cpu.cpp" 270*da0073e9SAndroid Build Coastguard Worker ) 271*da0073e9SAndroid Build Coastguard Worker if(BUILD_LAZY_TS_BACKEND) 272*da0073e9SAndroid Build Coastguard Worker list(APPEND GENERATED_CXX_TORCH 273*da0073e9SAndroid Build Coastguard Worker "${TORCH_SRC_DIR}/csrc/lazy/generated/LazyNativeFunctions.cpp" 274*da0073e9SAndroid Build Coastguard Worker "${TORCH_SRC_DIR}/csrc/lazy/generated/RegisterAutogradLazy.cpp" 275*da0073e9SAndroid Build Coastguard Worker "${TORCH_SRC_DIR}/csrc/lazy/generated/RegisterLazy.cpp" 276*da0073e9SAndroid Build Coastguard Worker ) 277*da0073e9SAndroid Build Coastguard Worker endif() 278*da0073e9SAndroid Build Coastguard Workerendif() 279*da0073e9SAndroid Build Coastguard Worker 280*da0073e9SAndroid Build Coastguard Workerset(GENERATED_H_TORCH 281*da0073e9SAndroid Build Coastguard Worker "${TORCH_SRC_DIR}/csrc/autograd/generated/Functions.h" 282*da0073e9SAndroid Build Coastguard Worker "${TORCH_SRC_DIR}/csrc/autograd/generated/variable_factories.h" 283*da0073e9SAndroid Build Coastguard Worker "${TORCH_SRC_DIR}/csrc/autograd/generated/ViewFuncs.h" 284*da0073e9SAndroid Build Coastguard Worker ) 285*da0073e9SAndroid Build Coastguard Worker 286*da0073e9SAndroid Build Coastguard Workerif(NOT INTERN_DISABLE_AUTOGRAD) 287*da0073e9SAndroid Build Coastguard Worker list(APPEND GENERATED_H_TORCH 288*da0073e9SAndroid Build Coastguard Worker "${TORCH_SRC_DIR}/csrc/autograd/generated/VariableType.h" 289*da0073e9SAndroid Build Coastguard Worker "${TORCH_SRC_DIR}/csrc/lazy/generated/LazyIr.h" 290*da0073e9SAndroid Build Coastguard Worker "${TORCH_SRC_DIR}/csrc/lazy/generated/LazyNonNativeIr.h" 291*da0073e9SAndroid Build Coastguard Worker "${TORCH_SRC_DIR}/csrc/lazy/generated/LazyNativeFunctions.h" 292*da0073e9SAndroid Build Coastguard Worker ) 293*da0073e9SAndroid Build Coastguard Workerendif() 294*da0073e9SAndroid Build Coastguard Worker 295*da0073e9SAndroid Build Coastguard Workerset(GENERATED_CXX_PYTHON 296*da0073e9SAndroid Build Coastguard Worker "${TORCH_SRC_DIR}/csrc/autograd/generated/python_functions_0.cpp" 297*da0073e9SAndroid Build Coastguard Worker "${TORCH_SRC_DIR}/csrc/autograd/generated/python_functions_1.cpp" 298*da0073e9SAndroid Build Coastguard Worker "${TORCH_SRC_DIR}/csrc/autograd/generated/python_functions_2.cpp" 299*da0073e9SAndroid Build Coastguard Worker "${TORCH_SRC_DIR}/csrc/autograd/generated/python_functions_3.cpp" 300*da0073e9SAndroid Build Coastguard Worker "${TORCH_SRC_DIR}/csrc/autograd/generated/python_functions_4.cpp" 301*da0073e9SAndroid Build Coastguard Worker "${TORCH_SRC_DIR}/csrc/autograd/generated/python_variable_methods.cpp" 302*da0073e9SAndroid Build Coastguard Worker "${TORCH_SRC_DIR}/csrc/autograd/generated/python_torch_functions_0.cpp" 303*da0073e9SAndroid Build Coastguard Worker "${TORCH_SRC_DIR}/csrc/autograd/generated/python_torch_functions_1.cpp" 304*da0073e9SAndroid Build Coastguard Worker "${TORCH_SRC_DIR}/csrc/autograd/generated/python_torch_functions_2.cpp" 305*da0073e9SAndroid Build Coastguard Worker "${TORCH_SRC_DIR}/csrc/autograd/generated/python_nn_functions.cpp" 306*da0073e9SAndroid Build Coastguard Worker "${TORCH_SRC_DIR}/csrc/autograd/generated/python_fft_functions.cpp" 307*da0073e9SAndroid Build Coastguard Worker "${TORCH_SRC_DIR}/csrc/autograd/generated/python_linalg_functions.cpp" 308*da0073e9SAndroid Build Coastguard Worker "${TORCH_SRC_DIR}/csrc/autograd/generated/python_nested_functions.cpp" 309*da0073e9SAndroid Build Coastguard Worker "${TORCH_SRC_DIR}/csrc/autograd/generated/python_sparse_functions.cpp" 310*da0073e9SAndroid Build Coastguard Worker "${TORCH_SRC_DIR}/csrc/autograd/generated/python_special_functions.cpp" 311*da0073e9SAndroid Build Coastguard Worker "${TORCH_SRC_DIR}/csrc/autograd/generated/python_return_types.cpp" 312*da0073e9SAndroid Build Coastguard Worker "${TORCH_SRC_DIR}/csrc/autograd/generated/python_enum_tag.cpp" 313*da0073e9SAndroid Build Coastguard Worker ) 314*da0073e9SAndroid Build Coastguard Worker 315*da0073e9SAndroid Build Coastguard Workerset(GENERATED_H_PYTHON 316*da0073e9SAndroid Build Coastguard Worker "${TORCH_SRC_DIR}/csrc/autograd/generated/python_functions.h" 317*da0073e9SAndroid Build Coastguard Worker "${TORCH_SRC_DIR}/csrc/autograd/generated/python_return_types.h" 318*da0073e9SAndroid Build Coastguard Worker ) 319*da0073e9SAndroid Build Coastguard Worker 320*da0073e9SAndroid Build Coastguard Workerset(GENERATED_TESTING_PYTHON 321*da0073e9SAndroid Build Coastguard Worker "${TORCH_SRC_DIR}/testing/_internal/generated/annotated_fn_args.py" 322*da0073e9SAndroid Build Coastguard Worker ) 323*da0073e9SAndroid Build Coastguard Worker 324*da0073e9SAndroid Build Coastguard Workerset(GENERATED_CXX_TORCH_CUDA 325*da0073e9SAndroid Build Coastguard Worker "${TORCH_SRC_DIR}/csrc/inductor/aoti_torch/generated/c_shim_cuda.cpp" 326*da0073e9SAndroid Build Coastguard Worker ) 327*da0073e9SAndroid Build Coastguard Worker 328*da0073e9SAndroid Build Coastguard Workerset(TORCH_GENERATED_CODE 329*da0073e9SAndroid Build Coastguard Worker ${GENERATED_CXX_TORCH} 330*da0073e9SAndroid Build Coastguard Worker ${GENERATED_H_TORCH} 331*da0073e9SAndroid Build Coastguard Worker ${GENERATED_CXX_PYTHON} 332*da0073e9SAndroid Build Coastguard Worker ${GENERATED_H_PYTHON} 333*da0073e9SAndroid Build Coastguard Worker ${GENERATED_TESTING_PYTHON} 334*da0073e9SAndroid Build Coastguard Worker ${GENERATED_CXX_TORCH_CUDA} 335*da0073e9SAndroid Build Coastguard Worker ) 336*da0073e9SAndroid Build Coastguard Worker 337*da0073e9SAndroid Build Coastguard Workerset(GEN_PER_OPERATOR_FLAG) 338*da0073e9SAndroid Build Coastguard Workerif(USE_PER_OPERATOR_HEADERS) 339*da0073e9SAndroid Build Coastguard Worker list(APPEND GEN_PER_OPERATOR_FLAG "--per_operator_headers") 340*da0073e9SAndroid Build Coastguard Workerendif() 341*da0073e9SAndroid Build Coastguard Worker 342*da0073e9SAndroid Build Coastguard Workerfile(GLOB_RECURSE autograd_python "${TOOLS_PATH}/autograd/*.py") 343*da0073e9SAndroid Build Coastguard Workerfile(GLOB_RECURSE autograd_yaml "${TOOLS_PATH}/autograd/*.yaml") 344*da0073e9SAndroid Build Coastguard Workerfile(GLOB_RECURSE autograd_templates "${TOOLS_PATH}/autograd/templates/*") 345*da0073e9SAndroid Build Coastguard Workeradd_custom_command( 346*da0073e9SAndroid Build Coastguard Worker OUTPUT 347*da0073e9SAndroid Build Coastguard Worker ${TORCH_GENERATED_CODE} 348*da0073e9SAndroid Build Coastguard Worker COMMAND 349*da0073e9SAndroid Build Coastguard Worker Python::Interpreter tools/setup_helpers/generate_code.py 350*da0073e9SAndroid Build Coastguard Worker --native-functions-path "aten/src/ATen/native/native_functions.yaml" 351*da0073e9SAndroid Build Coastguard Worker --tags-path "aten/src/ATen/native/tags.yaml" 352*da0073e9SAndroid Build Coastguard Worker $<$<BOOL:${INTERN_DISABLE_AUTOGRAD}>:--disable-autograd> 353*da0073e9SAndroid Build Coastguard Worker $<$<BOOL:${SELECTED_OP_LIST}>:--selected-op-list-path="${SELECTED_OP_LIST}"> 354*da0073e9SAndroid Build Coastguard Worker --force_schema_registration 355*da0073e9SAndroid Build Coastguard Worker --gen_lazy_ts_backend 356*da0073e9SAndroid Build Coastguard Worker ${GEN_PER_OPERATOR_FLAG} 357*da0073e9SAndroid Build Coastguard Worker DEPENDS 358*da0073e9SAndroid Build Coastguard Worker "${TORCH_ROOT}/aten/src/ATen/native/native_functions.yaml" 359*da0073e9SAndroid Build Coastguard Worker "${TORCH_ROOT}/aten/src/ATen/native/tags.yaml" 360*da0073e9SAndroid Build Coastguard Worker "${TORCH_ROOT}/aten/src/ATen/native/ts_native_functions.yaml" 361*da0073e9SAndroid Build Coastguard Worker "${TORCH_ROOT}/torch/csrc/lazy/core/shape_inference.h" 362*da0073e9SAndroid Build Coastguard Worker "${TORCH_ROOT}/torch/csrc/lazy/ts_backend/ts_native_functions.cpp" 363*da0073e9SAndroid Build Coastguard Worker "${TORCH_ROOT}/aten/src/ATen/templates/DispatchKeyNativeFunctions.h" 364*da0073e9SAndroid Build Coastguard Worker "${TORCH_ROOT}/aten/src/ATen/templates/DispatchKeyNativeFunctions.cpp" 365*da0073e9SAndroid Build Coastguard Worker "${TORCH_ROOT}/aten/src/ATen/templates/LazyIr.h" 366*da0073e9SAndroid Build Coastguard Worker "${TORCH_ROOT}/aten/src/ATen/templates/LazyNonNativeIr.h" 367*da0073e9SAndroid Build Coastguard Worker "${TORCH_ROOT}/aten/src/ATen/templates/RegisterDispatchKey.cpp" 368*da0073e9SAndroid Build Coastguard Worker ${autograd_python} 369*da0073e9SAndroid Build Coastguard Worker ${autograd_yaml} 370*da0073e9SAndroid Build Coastguard Worker ${autograd_templates} 371*da0073e9SAndroid Build Coastguard Worker ${torchgen_python} 372*da0073e9SAndroid Build Coastguard Worker WORKING_DIRECTORY "${TORCH_ROOT}") 373*da0073e9SAndroid Build Coastguard Worker 374*da0073e9SAndroid Build Coastguard Worker 375*da0073e9SAndroid Build Coastguard Worker# Required workaround for libtorch_python.so build 376*da0073e9SAndroid Build Coastguard Worker# see https://samthursfield.wordpress.com/2015/11/21/cmake-dependencies-between-targets-and-files-and-custom-commands/#custom-commands-in-different-directories 377*da0073e9SAndroid Build Coastguard Workeradd_custom_target( 378*da0073e9SAndroid Build Coastguard Worker generate-torch-sources 379*da0073e9SAndroid Build Coastguard Worker DEPENDS ${TORCH_GENERATED_CODE} 380*da0073e9SAndroid Build Coastguard Worker ) 381*da0073e9SAndroid Build Coastguard Worker 382*da0073e9SAndroid Build Coastguard Workerset(TORCH_SRCS ${GENERATED_CXX_TORCH}) 383*da0073e9SAndroid Build Coastguard Workerlist(APPEND TORCH_SRCS ${GENERATED_H_TORCH}) 384*da0073e9SAndroid Build Coastguard Workerlist(APPEND LIBTORCH_CMAKE_SRCS "") 385*da0073e9SAndroid Build Coastguard Worker 386*da0073e9SAndroid Build Coastguard Workerlist(APPEND LITE_EAGER_SYMOBLICATION_SRCS "") 387*da0073e9SAndroid Build Coastguard Workerif(USE_SOURCE_DEBUG_ON_MOBILE) 388*da0073e9SAndroid Build Coastguard Worker append_filelist("libtorch_lite_eager_symbolication" LITE_EAGER_SYMOBLICATION_SRCS) 389*da0073e9SAndroid Build Coastguard Worker # For source debug on lite interpreter, we have to add dependency on pickling 390*da0073e9SAndroid Build Coastguard Worker # but references to read/writeArchiveAndTensor is not built for mobile 391*da0073e9SAndroid Build Coastguard Worker # so this condition specifically says we are building for source debug 392*da0073e9SAndroid Build Coastguard Worker # on mobile. 393*da0073e9SAndroid Build Coastguard Worker if(BUILD_LITE_INTERPRETER) 394*da0073e9SAndroid Build Coastguard Worker set_source_files_properties(${TORCH_SRC_DIR}/csrc/jit/serialization/pickle.cpp PROPERTIES COMPILE_FLAGS "-DC10_MOBILE -DFEATURE_TORCH_MOBILE") 395*da0073e9SAndroid Build Coastguard Worker endif() 396*da0073e9SAndroid Build Coastguard Workerendif() 397*da0073e9SAndroid Build Coastguard Worker 398*da0073e9SAndroid Build Coastguard Workerlist(APPEND LITE_PROFILER_SRCS "") 399*da0073e9SAndroid Build Coastguard Workerif(USE_LITE_INTERPRETER_PROFILER) 400*da0073e9SAndroid Build Coastguard Worker append_filelist("libtorch_edge_profiler_sources " LITE_PROFILER_SRCS) 401*da0073e9SAndroid Build Coastguard Workerendif() 402*da0073e9SAndroid Build Coastguard Worker 403*da0073e9SAndroid Build Coastguard Worker# Switch between the full jit interpreter and lite interpreter 404*da0073e9SAndroid Build Coastguard Workerif(BUILD_LITE_INTERPRETER) 405*da0073e9SAndroid Build Coastguard Worker append_filelist("libtorch_lite_cmake_sources" LIBTORCH_CMAKE_SRCS) 406*da0073e9SAndroid Build Coastguard Worker list(APPEND LIBTORCH_CMAKE_SRCS ${LITE_EAGER_SYMOBLICATION_SRCS}) 407*da0073e9SAndroid Build Coastguard Worker list(APPEND LIBTORCH_CMAKE_SRCS ${LITE_PROFILER_SRCS}) 408*da0073e9SAndroid Build Coastguard Worker if(USE_LITE_AOTI) 409*da0073e9SAndroid Build Coastguard Worker append_filelist("inductor_core_resources" LIBTORCH_CMAKE_SRCS) 410*da0073e9SAndroid Build Coastguard Worker endif() 411*da0073e9SAndroid Build Coastguard Worker set(CMAKE_POSITION_INDEPENDENT_CODE TRUE) 412*da0073e9SAndroid Build Coastguard Workerelse() 413*da0073e9SAndroid Build Coastguard Worker append_filelist("libtorch_cmake_sources" LIBTORCH_CMAKE_SRCS) 414*da0073e9SAndroid Build Coastguard Worker list(APPEND LIBTORCH_CMAKE_SRCS ${LITE_EAGER_SYMOBLICATION_SRCS}) 415*da0073e9SAndroid Build Coastguard Worker if(BUILD_LAZY_TS_BACKEND) 416*da0073e9SAndroid Build Coastguard Worker append_filelist("lazy_tensor_ts_sources" LIBTORCH_CMAKE_SRCS) 417*da0073e9SAndroid Build Coastguard Worker endif() 418*da0073e9SAndroid Build Coastguard Worker if(CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "GNU") 419*da0073e9SAndroid Build Coastguard Worker # TODO: Delete this when https://github.com/pytorch/pytorch/issues/35026 is fixed 420*da0073e9SAndroid Build Coastguard Worker set_source_files_properties(../torch/csrc/autograd/record_function_ops.cpp PROPERTIES COMPILE_FLAGS -Wno-deprecated-declarations) 421*da0073e9SAndroid Build Coastguard Worker endif() 422*da0073e9SAndroid Build Coastguard Workerendif() 423*da0073e9SAndroid Build Coastguard Workerlist(APPEND TORCH_SRCS ${LIBTORCH_CMAKE_SRCS}) 424*da0073e9SAndroid Build Coastguard Worker 425*da0073e9SAndroid Build Coastguard Workerif(PRINT_CMAKE_DEBUG_INFO) 426*da0073e9SAndroid Build Coastguard Worker message(STATUS "Interpreter sources: ") 427*da0073e9SAndroid Build Coastguard Worker foreach(tmp ${LIBTORCH_CMAKE_SRCS}) 428*da0073e9SAndroid Build Coastguard Worker message(STATUS " " ${tmp}) 429*da0073e9SAndroid Build Coastguard Worker endforeach() 430*da0073e9SAndroid Build Coastguard Workerendif() 431*da0073e9SAndroid Build Coastguard Worker 432*da0073e9SAndroid Build Coastguard Worker# Mobile backend delegate srcs 433*da0073e9SAndroid Build Coastguard Workerif(INTERN_BUILD_MOBILE) 434*da0073e9SAndroid Build Coastguard Worker set(DELEGATE_SRCS 435*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/jit/backends/backend_debug_info.cpp 436*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/jit/backends/backend_interface.cpp 437*da0073e9SAndroid Build Coastguard Worker ) 438*da0073e9SAndroid Build Coastguard Worker list(APPEND TORCH_SRCS ${DELEGATE_SRCS}) 439*da0073e9SAndroid Build Coastguard Worker if(IOS AND USE_COREML_DELEGATE) 440*da0073e9SAndroid Build Coastguard Worker set(COREML_DELEGATE_SRCS 441*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/jit/backends/coreml/cpp/context.cpp 442*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/jit/backends/coreml/objc/PTMCoreMLBackend.mm 443*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/jit/backends/coreml/objc/PTMCoreMLExecutor.mm 444*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/jit/backends/coreml/objc/PTMCoreMLCompiler.mm 445*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/jit/backends/coreml/objc/PTMCoreMLFeatureProvider.mm 446*da0073e9SAndroid Build Coastguard Worker ) 447*da0073e9SAndroid Build Coastguard Worker set_source_files_properties(${TORCH_SRC_DIR}/csrc/jit/backends/coreml/objc/PTMCoreMLBackend.mm PROPERTIES COMPILE_FLAGS "-fno-objc-arc") 448*da0073e9SAndroid Build Coastguard Worker include_directories(${TORCH_ROOT}/third_party/nlohmann/single_include) 449*da0073e9SAndroid Build Coastguard Worker list(APPEND TORCH_SRCS ${COREML_DELEGATE_SRCS}) 450*da0073e9SAndroid Build Coastguard Worker endif() 451*da0073e9SAndroid Build Coastguard Workerendif() 452*da0073e9SAndroid Build Coastguard Worker 453*da0073e9SAndroid Build Coastguard Worker# Required workaround for LLVM 9 includes. 454*da0073e9SAndroid Build Coastguard Workerif(NOT MSVC) 455*da0073e9SAndroid Build Coastguard Worker set_source_files_properties(${TORCH_SRC_DIR}/csrc/jit/tensorexpr/llvm_jit.cpp PROPERTIES COMPILE_FLAGS -Wno-noexcept-type) 456*da0073e9SAndroid Build Coastguard Workerendif() 457*da0073e9SAndroid Build Coastguard Worker# Disable certain warnings for GCC-9.X 458*da0073e9SAndroid Build Coastguard Workerif(CMAKE_COMPILER_IS_GNUCXX) 459*da0073e9SAndroid Build Coastguard Worker # See https://github.com/pytorch/pytorch/issues/38856 460*da0073e9SAndroid Build Coastguard Worker set_source_files_properties(${TORCH_SRC_DIR}/csrc/jit/tensorexpr/llvm_jit.cpp PROPERTIES COMPILE_FLAGS "-Wno-redundant-move -Wno-noexcept-type") 461*da0073e9SAndroid Build Coastguard Worker set_source_files_properties(${TORCH_SRC_DIR}/csrc/jit/tensorexpr/llvm_codegen.cpp PROPERTIES COMPILE_FLAGS "-Wno-init-list-lifetime") 462*da0073e9SAndroid Build Coastguard Workerendif() 463*da0073e9SAndroid Build Coastguard Worker 464*da0073e9SAndroid Build Coastguard Worker# Enable conditional FP16 arithmetic intrinsics 465*da0073e9SAndroid Build Coastguard Workerif(CPU_AARCH64 AND LINUX) 466*da0073e9SAndroid Build Coastguard Workerset_source_files_properties(${TORCH_ROOT}/aten/src/ATen/native/BlasKernel.cpp PROPERTIES COMPILE_FLAGS "-march=armv8.2-a+fp16") 467*da0073e9SAndroid Build Coastguard Workerendif() 468*da0073e9SAndroid Build Coastguard Worker 469*da0073e9SAndroid Build Coastguard Worker 470*da0073e9SAndroid Build Coastguard Workerif(NOT INTERN_DISABLE_MOBILE_INTERP) 471*da0073e9SAndroid Build Coastguard Worker set(MOBILE_SRCS 472*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/jit/mobile/function.cpp 473*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/jit/mobile/import.cpp 474*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/jit/mobile/import_data.cpp 475*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/jit/mobile/interpreter.cpp 476*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/jit/mobile/compatibility/model_compatibility.cpp 477*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/jit/mobile/module.cpp 478*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/jit/mobile/flatbuffer_loader.cpp 479*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/jit/mobile/observer.cpp 480*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/jit/mobile/parse_bytecode.cpp 481*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/jit/mobile/parse_operators.cpp 482*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/jit/mobile/quantization.cpp 483*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/jit/mobile/train/export_data.cpp 484*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/jit/mobile/train/optim/sgd.cpp 485*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/jit/mobile/train/random.cpp 486*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/jit/mobile/train/sequential.cpp 487*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/jit/mobile/upgrader_mobile.cpp 488*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/jit/serialization/flatbuffer_serializer.cpp 489*da0073e9SAndroid Build Coastguard Worker ) 490*da0073e9SAndroid Build Coastguard Worker list(APPEND TORCH_SRCS ${MOBILE_SRCS}) 491*da0073e9SAndroid Build Coastguard Worker list(APPEND TORCH_SRCS ${LITE_EAGER_SYMOBLICATION_SRCS}) 492*da0073e9SAndroid Build Coastguard Workerendif() 493*da0073e9SAndroid Build Coastguard Worker 494*da0073e9SAndroid Build Coastguard Worker# This one needs to be unconditionally added as Functions.cpp is also unconditionally added 495*da0073e9SAndroid Build Coastguard Workerlist(APPEND TORCH_SRCS 496*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/autograd/FunctionsManual.cpp 497*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/utils/out_types.cpp 498*da0073e9SAndroid Build Coastguard Worker) 499*da0073e9SAndroid Build Coastguard Worker 500*da0073e9SAndroid Build Coastguard Workerif(NOT INTERN_DISABLE_AUTOGRAD AND NOT BUILD_LITE_INTERPRETER) 501*da0073e9SAndroid Build Coastguard Worker list(APPEND TORCH_SRCS 502*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/autograd/TraceTypeManual.cpp 503*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/autograd/VariableTypeManual.cpp 504*da0073e9SAndroid Build Coastguard Worker ) 505*da0073e9SAndroid Build Coastguard Workerendif() 506*da0073e9SAndroid Build Coastguard Worker 507*da0073e9SAndroid Build Coastguard Workerif(${USE_ITT}) 508*da0073e9SAndroid Build Coastguard Worker list(APPEND TORCH_SRCS 509*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/itt_wrapper.cpp 510*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/profiler/stubs/itt.cpp 511*da0073e9SAndroid Build Coastguard Worker ) 512*da0073e9SAndroid Build Coastguard Workerendif() 513*da0073e9SAndroid Build Coastguard Worker 514*da0073e9SAndroid Build Coastguard Workerif(NOT INTERN_BUILD_MOBILE AND NOT BUILD_LITE_INTERPRETER) 515*da0073e9SAndroid Build Coastguard Worker list(APPEND TORCH_SRCS 516*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/api/src/jit.cpp 517*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/jit/mobile/compatibility/backport.cpp 518*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/jit/mobile/compatibility/backport_manager.cpp 519*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/jit/serialization/onnx.cpp 520*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/jit/serialization/export.cpp 521*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/jit/serialization/export_bytecode.cpp 522*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/jit/serialization/export_module.cpp 523*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/jit/serialization/flatbuffer_serializer.cpp 524*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/jit/codegen/fuser/cpu/fused_kernel.cpp 525*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/jit/api/module_save.cpp 526*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/utils/byte_order.cpp 527*da0073e9SAndroid Build Coastguard Worker ) 528*da0073e9SAndroid Build Coastguard Worker 529*da0073e9SAndroid Build Coastguard Worker if(USE_DISTRIBUTED) 530*da0073e9SAndroid Build Coastguard Worker append_filelist("libtorch_distributed_base_sources" TORCH_SRCS) 531*da0073e9SAndroid Build Coastguard Worker if(NOT WIN32) 532*da0073e9SAndroid Build Coastguard Worker append_filelist("libtorch_distributed_extra_sources" TORCH_SRCS) 533*da0073e9SAndroid Build Coastguard Worker endif() 534*da0073e9SAndroid Build Coastguard Worker endif() 535*da0073e9SAndroid Build Coastguard Workerendif() 536*da0073e9SAndroid Build Coastguard Worker 537*da0073e9SAndroid Build Coastguard Workerif(USE_CUDA OR USE_ROCM) 538*da0073e9SAndroid Build Coastguard Worker append_filelist("libtorch_cuda_core_sources" Caffe2_GPU_HIP_JIT_FUSERS_SRCS) 539*da0073e9SAndroid Build Coastguard Workerendif() 540*da0073e9SAndroid Build Coastguard Worker 541*da0073e9SAndroid Build Coastguard Workerif(USE_CUDA) 542*da0073e9SAndroid Build Coastguard Worker list(APPEND Caffe2_GPU_CU_SRCS ${Caffe2_GPU_HIP_JIT_FUSERS_SRCS}) 543*da0073e9SAndroid Build Coastguard Worker add_library(caffe2_nvrtc SHARED ${ATen_NVRTC_STUB_SRCS}) 544*da0073e9SAndroid Build Coastguard Worker if(MSVC) 545*da0073e9SAndroid Build Coastguard Worker # Delay load nvcuda.dll so we can import torch compiled with cuda on a CPU-only machine 546*da0073e9SAndroid Build Coastguard Worker set(DELAY_LOAD_FLAGS "-DELAYLOAD:nvcuda.dll;delayimp.lib") 547*da0073e9SAndroid Build Coastguard Worker else() 548*da0073e9SAndroid Build Coastguard Worker set(DELAY_LOAD_FLAGS "") 549*da0073e9SAndroid Build Coastguard Worker endif() 550*da0073e9SAndroid Build Coastguard Worker 551*da0073e9SAndroid Build Coastguard Worker target_link_libraries(caffe2_nvrtc PRIVATE caffe2::nvrtc ${DELAY_LOAD_FLAGS}) 552*da0073e9SAndroid Build Coastguard Worker install(TARGETS caffe2_nvrtc DESTINATION "${TORCH_INSTALL_LIB_DIR}") 553*da0073e9SAndroid Build Coastguard Worker if(USE_NCCL) 554*da0073e9SAndroid Build Coastguard Worker list(APPEND Caffe2_GPU_SRCS 555*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/cuda/nccl.cpp) 556*da0073e9SAndroid Build Coastguard Worker endif() 557*da0073e9SAndroid Build Coastguard Worker if(USE_DISTRIBUTED) 558*da0073e9SAndroid Build Coastguard Worker append_filelist("libtorch_cuda_distributed_base_sources" Caffe2_GPU_SRCS) 559*da0073e9SAndroid Build Coastguard Worker if(NOT WIN32) 560*da0073e9SAndroid Build Coastguard Worker append_filelist("libtorch_cuda_distributed_extra_sources" Caffe2_GPU_SRCS) 561*da0073e9SAndroid Build Coastguard Worker set_source_files_properties( 562*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/distributed/c10d/intra_node_comm.cpp 563*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/distributed/c10d/CudaDMAConnectivity.cpp 564*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/distributed/c10d/CUDASymmetricMemory.cu 565*da0073e9SAndroid Build Coastguard Worker PROPERTIES COMPILE_FLAGS "-DPYTORCH_C10_DRIVER_API_SUPPORTED=1" 566*da0073e9SAndroid Build Coastguard Worker ) 567*da0073e9SAndroid Build Coastguard Worker endif() 568*da0073e9SAndroid Build Coastguard Worker endif() 569*da0073e9SAndroid Build Coastguard Worker set_source_files_properties( 570*da0073e9SAndroid Build Coastguard Worker ${TORCH_ROOT}/aten/src/ATen/cuda/detail/LazyNVRTC.cpp 571*da0073e9SAndroid Build Coastguard Worker PROPERTIES COMPILE_DEFINITIONS "NVRTC_SHORTHASH=${CUDA_NVRTC_SHORTHASH}" 572*da0073e9SAndroid Build Coastguard Worker ) 573*da0073e9SAndroid Build Coastguard Worker set_source_files_properties(${TORCH_SRC_DIR}/csrc/jit/passes/frozen_conv_add_relu_fusion.cpp PROPERTIES COMPILE_FLAGS "-DUSE_CUDA=1") 574*da0073e9SAndroid Build Coastguard Worker set_source_files_properties(${TORCH_SRC_DIR}/csrc/jit/codegen/cuda/interface.cpp PROPERTIES COMPILE_FLAGS "-DUSE_CUDA=1") 575*da0073e9SAndroid Build Coastguard Workerendif() 576*da0073e9SAndroid Build Coastguard Worker 577*da0073e9SAndroid Build Coastguard Workerif(BUILD_ONEDNN_GRAPH) 578*da0073e9SAndroid Build Coastguard Worker list(APPEND Caffe2_CPU_SRCS 579*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/jit/codegen/onednn/LlgaTensorImpl.cpp 580*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/jit/codegen/onednn/graph_fuser.cpp 581*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/jit/codegen/onednn/graph_rewriter.cpp 582*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/jit/codegen/onednn/graph_helper.cpp 583*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/jit/codegen/onednn/register_interface.cpp 584*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/jit/codegen/onednn/decompose_silu.cpp 585*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/jit/codegen/onednn/interface.cpp 586*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/jit/codegen/onednn/kernel.cpp 587*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/jit/codegen/onednn/defer_size_check.cpp 588*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/jit/codegen/onednn/layout_propagation.cpp 589*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/jit/codegen/onednn/prepare_binary.cpp 590*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/jit/codegen/onednn/guard_shape.cpp 591*da0073e9SAndroid Build Coastguard Worker ) 592*da0073e9SAndroid Build Coastguard Workerendif() 593*da0073e9SAndroid Build Coastguard Worker 594*da0073e9SAndroid Build Coastguard Workerif(USE_ROCM) 595*da0073e9SAndroid Build Coastguard Worker list(APPEND Caffe2_HIP_SRCS ${Caffe2_GPU_HIP_JIT_FUSERS_SRCS}) 596*da0073e9SAndroid Build Coastguard Worker if(USE_NCCL) 597*da0073e9SAndroid Build Coastguard Worker list(APPEND Caffe2_HIP_SRCS 598*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/cuda/nccl.cpp) 599*da0073e9SAndroid Build Coastguard Worker endif() 600*da0073e9SAndroid Build Coastguard Worker if(USE_DISTRIBUTED) 601*da0073e9SAndroid Build Coastguard Worker append_filelist("libtorch_cuda_distributed_base_sources" Caffe2_HIP_SRCS) 602*da0073e9SAndroid Build Coastguard Worker if(NOT WIN32) 603*da0073e9SAndroid Build Coastguard Worker append_filelist("libtorch_cuda_distributed_extra_sources" Caffe2_HIP_SRCS) 604*da0073e9SAndroid Build Coastguard Worker endif() 605*da0073e9SAndroid Build Coastguard Worker endif() 606*da0073e9SAndroid Build Coastguard Worker # caffe2_nvrtc's stubs to driver APIs are useful for HIP. 607*da0073e9SAndroid Build Coastguard Worker # See NOTE [ ATen NVRTC Stub and HIP ] 608*da0073e9SAndroid Build Coastguard Worker add_library(caffe2_nvrtc SHARED ${ATen_NVRTC_STUB_SRCS}) 609*da0073e9SAndroid Build Coastguard Worker target_link_libraries(caffe2_nvrtc ${PYTORCH_HIP_LIBRARIES} ${ROCM_HIPRTC_LIB}) 610*da0073e9SAndroid Build Coastguard Worker target_include_directories(caffe2_nvrtc PRIVATE ${CMAKE_BINARY_DIR}) 611*da0073e9SAndroid Build Coastguard Worker target_compile_definitions(caffe2_nvrtc PRIVATE USE_ROCM __HIP_PLATFORM_AMD__) 612*da0073e9SAndroid Build Coastguard Worker install(TARGETS caffe2_nvrtc DESTINATION "${TORCH_INSTALL_LIB_DIR}") 613*da0073e9SAndroid Build Coastguard Workerendif() 614*da0073e9SAndroid Build Coastguard Worker 615*da0073e9SAndroid Build Coastguard Workerif(NOT NO_API AND NOT BUILD_LITE_INTERPRETER) 616*da0073e9SAndroid Build Coastguard Worker list(APPEND TORCH_SRCS 617*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/api/src/cuda.cpp 618*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/api/src/data/datasets/mnist.cpp 619*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/api/src/data/samplers/distributed.cpp 620*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/api/src/data/samplers/random.cpp 621*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/api/src/data/samplers/sequential.cpp 622*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/api/src/data/samplers/stream.cpp 623*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/api/src/enum.cpp 624*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/api/src/imethod.cpp 625*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/api/src/serialize.cpp 626*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/api/src/jit.cpp 627*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/api/src/mps.cpp 628*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/api/src/nn/init.cpp 629*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/api/src/nn/module.cpp 630*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/api/src/nn/modules/_functions.cpp 631*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/api/src/nn/modules/activation.cpp 632*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/api/src/nn/modules/adaptive.cpp 633*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/api/src/nn/modules/batchnorm.cpp 634*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/api/src/nn/modules/normalization.cpp 635*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/api/src/nn/modules/instancenorm.cpp 636*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/api/src/nn/modules/conv.cpp 637*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/api/src/nn/modules/dropout.cpp 638*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/api/src/nn/modules/distance.cpp 639*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/api/src/nn/modules/embedding.cpp 640*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/api/src/nn/modules/fold.cpp 641*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/api/src/nn/modules/linear.cpp 642*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/api/src/nn/modules/loss.cpp 643*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/api/src/nn/modules/padding.cpp 644*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/api/src/nn/modules/pixelshuffle.cpp 645*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/api/src/nn/modules/pooling.cpp 646*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/api/src/nn/modules/rnn.cpp 647*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/api/src/nn/modules/upsampling.cpp 648*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/api/src/nn/modules/transformer.cpp 649*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/api/src/nn/modules/container/functional.cpp 650*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/api/src/nn/options/activation.cpp 651*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/api/src/nn/options/adaptive.cpp 652*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/api/src/nn/options/batchnorm.cpp 653*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/api/src/nn/options/embedding.cpp 654*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/api/src/nn/options/instancenorm.cpp 655*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/api/src/nn/options/normalization.cpp 656*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/api/src/nn/options/conv.cpp 657*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/api/src/nn/options/dropout.cpp 658*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/api/src/nn/options/linear.cpp 659*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/api/src/nn/options/padding.cpp 660*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/api/src/nn/options/pooling.cpp 661*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/api/src/nn/options/rnn.cpp 662*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/api/src/nn/options/vision.cpp 663*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/api/src/nn/options/transformer.cpp 664*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/api/src/optim/adagrad.cpp 665*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/api/src/optim/adam.cpp 666*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/api/src/optim/adamw.cpp 667*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/api/src/optim/lbfgs.cpp 668*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/api/src/optim/optimizer.cpp 669*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/api/src/optim/rmsprop.cpp 670*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/api/src/optim/serialize.cpp 671*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/api/src/optim/sgd.cpp 672*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/api/src/optim/schedulers/lr_scheduler.cpp 673*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/api/src/optim/schedulers/step_lr.cpp 674*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/api/src/optim/schedulers/reduce_on_plateau_scheduler.cpp 675*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/api/src/serialize/input-archive.cpp 676*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/api/src/serialize/output-archive.cpp 677*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/api/src/xpu.cpp 678*da0073e9SAndroid Build Coastguard Worker ) 679*da0073e9SAndroid Build Coastguard Workerendif() 680*da0073e9SAndroid Build Coastguard Worker 681*da0073e9SAndroid Build Coastguard Workerlist(APPEND Caffe2_CPU_SRCS ${TORCH_SRCS}) 682*da0073e9SAndroid Build Coastguard Worker 683*da0073e9SAndroid Build Coastguard Workerif(USE_MPS) 684*da0073e9SAndroid Build Coastguard Worker list(APPEND Caffe2_CPU_SRCS ${Caffe2_MPS_SRCS}) 685*da0073e9SAndroid Build Coastguard Workerendif() 686*da0073e9SAndroid Build Coastguard Worker 687*da0073e9SAndroid Build Coastguard Worker# NOTE [ Linking AVX and non-AVX files ] 688*da0073e9SAndroid Build Coastguard Worker# 689*da0073e9SAndroid Build Coastguard Worker# Regardless of the CPU capabilities, we build some files with AVX2, and AVX512 690*da0073e9SAndroid Build Coastguard Worker# instruction set. If the host CPU doesn't support those, we simply ignore their 691*da0073e9SAndroid Build Coastguard Worker# functions at runtime during dispatch. 692*da0073e9SAndroid Build Coastguard Worker# 693*da0073e9SAndroid Build Coastguard Worker# We must make sure that those files are at the end of the input list when 694*da0073e9SAndroid Build Coastguard Worker# linking the torch_cpu library. Otherwise, the following error scenario might 695*da0073e9SAndroid Build Coastguard Worker# occur: 696*da0073e9SAndroid Build Coastguard Worker# 1. A non-AVX2 and an AVX2 file both call a function defined with the `inline` 697*da0073e9SAndroid Build Coastguard Worker# keyword 698*da0073e9SAndroid Build Coastguard Worker# 2. The compiler decides not to inline this function 699*da0073e9SAndroid Build Coastguard Worker# 3. Two different versions of the machine code are generated for this function: 700*da0073e9SAndroid Build Coastguard Worker# one without AVX2 instructions and one with AVX2. 701*da0073e9SAndroid Build Coastguard Worker# 4. When linking, the AVX2 version is found earlier in the input object files, 702*da0073e9SAndroid Build Coastguard Worker# so the linker makes the entire library use it, even in code not guarded by 703*da0073e9SAndroid Build Coastguard Worker# the dispatcher. 704*da0073e9SAndroid Build Coastguard Worker# 5. A CPU without AVX2 support executes this function, encounters an AVX2 705*da0073e9SAndroid Build Coastguard Worker# instruction and crashes. 706*da0073e9SAndroid Build Coastguard Worker# 707*da0073e9SAndroid Build Coastguard Worker# Thus we organize the input files in the following order: 708*da0073e9SAndroid Build Coastguard Worker# 1. All files with no AVX-n support 709*da0073e9SAndroid Build Coastguard Worker# 2. All files with AVX2 support ('*AVX2.cpp') 710*da0073e9SAndroid Build Coastguard Worker# 3. All files with AVX512 support ('*AVX512.cpp') 711*da0073e9SAndroid Build Coastguard Workerset(Caffe2_CPU_SRCS_NON_AVX) 712*da0073e9SAndroid Build Coastguard Workerset(Caffe2_CPU_SRCS_AVX2) 713*da0073e9SAndroid Build Coastguard Workerset(Caffe2_CPU_SRCS_AVX512) 714*da0073e9SAndroid Build Coastguard Workerforeach(input_filename ${Caffe2_CPU_SRCS}) 715*da0073e9SAndroid Build Coastguard Worker if(${input_filename} MATCHES "AVX2\\.cpp") 716*da0073e9SAndroid Build Coastguard Worker list(APPEND Caffe2_CPU_SRCS_AVX2 ${input_filename}) 717*da0073e9SAndroid Build Coastguard Worker elseif(${input_filename} MATCHES "AVX512\\.cpp") 718*da0073e9SAndroid Build Coastguard Worker list(APPEND Caffe2_CPU_SRCS_AVX512 ${input_filename}) 719*da0073e9SAndroid Build Coastguard Worker else() 720*da0073e9SAndroid Build Coastguard Worker list(APPEND Caffe2_CPU_SRCS_NON_AVX ${input_filename}) 721*da0073e9SAndroid Build Coastguard Worker endif() 722*da0073e9SAndroid Build Coastguard Workerendforeach(input_filename) 723*da0073e9SAndroid Build Coastguard Workerset(Caffe2_CPU_SRCS ${Caffe2_CPU_SRCS_NON_AVX} ${Caffe2_CPU_SRCS_AVX2} ${Caffe2_CPU_SRCS_AVX512}) 724*da0073e9SAndroid Build Coastguard Worker 725*da0073e9SAndroid Build Coastguard Worker# ========================================================== 726*da0073e9SAndroid Build Coastguard Worker# END formerly-libtorch sources 727*da0073e9SAndroid Build Coastguard Worker# ========================================================== 728*da0073e9SAndroid Build Coastguard Worker 729*da0073e9SAndroid Build Coastguard Workerif(BUILD_LIBTORCHLESS) 730*da0073e9SAndroid Build Coastguard Worker find_library(TORCH_LIB torch PATHS $ENV{LIBTORCH_LIB_PATH} NO_DEFAULT_PATH) 731*da0073e9SAndroid Build Coastguard Worker find_library(TORCH_CPU_LIB torch_cpu PATHS $ENV{LIBTORCH_LIB_PATH} NO_DEFAULT_PATH) 732*da0073e9SAndroid Build Coastguard Worker 733*da0073e9SAndroid Build Coastguard Worker if(USE_CUDA) 734*da0073e9SAndroid Build Coastguard Worker find_library(TORCH_CUDA_LIB torch_cuda PATHS $ENV{LIBTORCH_LIB_PATH} NO_DEFAULT_PATH) 735*da0073e9SAndroid Build Coastguard Worker endif() 736*da0073e9SAndroid Build Coastguard Worker 737*da0073e9SAndroid Build Coastguard Worker if(USE_ROCM) 738*da0073e9SAndroid Build Coastguard Worker find_library(TORCH_HIP_LIB torch_hip PATHS $ENV{LIBTORCH_LIB_PATH} NO_DEFAULT_PATH) 739*da0073e9SAndroid Build Coastguard Worker endif() 740*da0073e9SAndroid Build Coastguard Worker 741*da0073e9SAndroid Build Coastguard Worker if(USE_XPU) 742*da0073e9SAndroid Build Coastguard Worker find_library(TORCH_XPU_LIB torch_xpu PATHS $ENV{LIBTORCH_LIB_PATH} NO_DEFAULT_PATH) 743*da0073e9SAndroid Build Coastguard Worker endif() 744*da0073e9SAndroid Build Coastguard Worker add_subdirectory(../torch torch) 745*da0073e9SAndroid Build Coastguard Worker # ---[ Torch python bindings build 746*da0073e9SAndroid Build Coastguard Worker set(TORCH_PYTHON_COMPILE_OPTIONS ${TORCH_PYTHON_COMPILE_OPTIONS} PARENT_SCOPE) 747*da0073e9SAndroid Build Coastguard Worker set(TORCH_PYTHON_LINK_FLAGS ${TORCH_PYTHON_LINK_FLAGS} PARENT_SCOPE) 748*da0073e9SAndroid Build Coastguard Workerelse() 749*da0073e9SAndroid Build Coastguard Worker set(TORCH_LIB torch) 750*da0073e9SAndroid Build Coastguard Worker set(TORCH_CPU_LIB torch_cpu) 751*da0073e9SAndroid Build Coastguard Worker set(TORCH_CUDA_LIB torch_cuda) 752*da0073e9SAndroid Build Coastguard Worker set(TORCH_HIP_LIB torch_hip) 753*da0073e9SAndroid Build Coastguard Worker set(TORCH_XPU_LIB torch_xpu) 754*da0073e9SAndroid Build Coastguard Workerendif() 755*da0073e9SAndroid Build Coastguard Worker 756*da0073e9SAndroid Build Coastguard Worker 757*da0073e9SAndroid Build Coastguard Workerif(NOT BUILD_LIBTORCHLESS) 758*da0073e9SAndroid Build Coastguard Workeradd_library(torch_cpu ${Caffe2_CPU_SRCS}) 759*da0073e9SAndroid Build Coastguard Workerif(HAVE_SOVERSION) 760*da0073e9SAndroid Build Coastguard Worker set_target_properties(torch_cpu PROPERTIES 761*da0073e9SAndroid Build Coastguard Worker VERSION ${TORCH_VERSION} SOVERSION ${TORCH_SOVERSION}) 762*da0073e9SAndroid Build Coastguard Workerendif() 763*da0073e9SAndroid Build Coastguard Workertorch_compile_options(torch_cpu) # see cmake/public/utils.cmake 764*da0073e9SAndroid Build Coastguard Worker 765*da0073e9SAndroid Build Coastguard Worker# Ignore Wdeprecated-XXX errors from third-party libraries 766*da0073e9SAndroid Build Coastguard Workerif(NOT MSVC) 767*da0073e9SAndroid Build Coastguard Worker set_source_files_properties(${PROJECT_SOURCE_DIR}/torch/csrc/distributed/c10d/socket.cpp PROPERTIES COMPILE_OPTIONS "-Wno-error=deprecated") 768*da0073e9SAndroid Build Coastguard Workerendif() 769*da0073e9SAndroid Build Coastguard Worker 770*da0073e9SAndroid Build Coastguard Workerif("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang" AND NOT USE_IOS AND NOT USE_COREML_DELEGATE) 771*da0073e9SAndroid Build Coastguard Worker target_compile_options_if_supported(torch_cpu "-Wmissing-prototypes") 772*da0073e9SAndroid Build Coastguard Worker target_compile_options_if_supported(torch_cpu "-Werror=missing-prototypes") 773*da0073e9SAndroid Build Coastguard Worker get_target_property(TORCH_CPU_SOURCES torch_cpu SOURCES) 774*da0073e9SAndroid Build Coastguard Worker foreach(generated_file IN LISTS GENERATED_CXX_TORCH) 775*da0073e9SAndroid Build Coastguard Worker set_source_files_properties(${generated_file} PROPERTIES COMPILE_OPTIONS "-Wno-missing-prototypes;-Wno-error=missing-prototypes") 776*da0073e9SAndroid Build Coastguard Worker endforeach() 777*da0073e9SAndroid Build Coastguard Worker foreach(source_file IN LISTS TORCH_CPU_SOURCES) 778*da0073e9SAndroid Build Coastguard Worker get_filename_component(source_file "${source_file}" REALPATH) 779*da0073e9SAndroid Build Coastguard Worker string(FIND "${source_file}" "${CMAKE_BINARY_DIR}" res) 780*da0073e9SAndroid Build Coastguard Worker if(res GREATER -1) 781*da0073e9SAndroid Build Coastguard Worker set_source_files_properties(${source_file} PROPERTIES COMPILE_OPTIONS "-Wno-missing-prototypes;-Wno-error=missing-prototypes") 782*da0073e9SAndroid Build Coastguard Worker continue() 783*da0073e9SAndroid Build Coastguard Worker endif() 784*da0073e9SAndroid Build Coastguard Worker string(FIND "${source_file}" "caffe2" res) 785*da0073e9SAndroid Build Coastguard Worker if(res GREATER -1) 786*da0073e9SAndroid Build Coastguard Worker set_source_files_properties(${source_file} PROPERTIES COMPILE_OPTIONS "-Wno-missing-prototypes;-Wno-error=missing-prototypes") 787*da0073e9SAndroid Build Coastguard Worker endif() 788*da0073e9SAndroid Build Coastguard Worker endforeach() 789*da0073e9SAndroid Build Coastguard Workerendif() 790*da0073e9SAndroid Build Coastguard Worker 791*da0073e9SAndroid Build Coastguard Workeroption(TORCH_USE_IWYU "Use include-what-you-use to clean up header inclusion" OFF) 792*da0073e9SAndroid Build Coastguard Workerif(TORCH_USE_IWYU) 793*da0073e9SAndroid Build Coastguard Worker find_program(iwyu NAMES include-what-you-use) 794*da0073e9SAndroid Build Coastguard Worker if(iwyu) 795*da0073e9SAndroid Build Coastguard Worker set(iwyu_cmd 796*da0073e9SAndroid Build Coastguard Worker "include-what-you-use" 797*da0073e9SAndroid Build Coastguard Worker "-Xiwyu" 798*da0073e9SAndroid Build Coastguard Worker "--transitive_includes_only" 799*da0073e9SAndroid Build Coastguard Worker "-Xiwyu" 800*da0073e9SAndroid Build Coastguard Worker "--no_fwd_decls" 801*da0073e9SAndroid Build Coastguard Worker "-Xiwyu" 802*da0073e9SAndroid Build Coastguard Worker "--prefix_header_includes=keep" 803*da0073e9SAndroid Build Coastguard Worker "-Xiwyu" 804*da0073e9SAndroid Build Coastguard Worker "--mapping_file=${CMAKE_CURRENT_LIST_DIR}/../tools/iwyu/all.imp" 805*da0073e9SAndroid Build Coastguard Worker ) 806*da0073e9SAndroid Build Coastguard Worker set_property(TARGET torch_cpu PROPERTY CXX_INCLUDE_WHAT_YOU_USE ${iwyu_cmd}) 807*da0073e9SAndroid Build Coastguard Worker endif() 808*da0073e9SAndroid Build Coastguard Workerendif() 809*da0073e9SAndroid Build Coastguard Worker 810*da0073e9SAndroid Build Coastguard Workerset_property(SOURCE ${ATen_CORE_SRCS} APPEND 811*da0073e9SAndroid Build Coastguard Worker PROPERTY COMPILE_DEFINITIONS "TORCH_ASSERT_ONLY_METHOD_OPERATORS") 812*da0073e9SAndroid Build Coastguard Workerset_property(SOURCE ${ATen_ATTENTION_KERNEL_SRCS} APPEND 813*da0073e9SAndroid Build Coastguard Worker PROPERTY COMPILE_DEFINITIONS "TORCH_ASSERT_NO_OPERATORS") 814*da0073e9SAndroid Build Coastguard Worker 815*da0073e9SAndroid Build Coastguard Workerif(USE_MPS OR USE_PYTORCH_METAL) 816*da0073e9SAndroid Build Coastguard Worker enable_language(OBJC OBJCXX) 817*da0073e9SAndroid Build Coastguard Workerendif() 818*da0073e9SAndroid Build Coastguard Worker 819*da0073e9SAndroid Build Coastguard Workerif(USE_PRECOMPILED_HEADERS) 820*da0073e9SAndroid Build Coastguard Worker target_precompile_headers(torch_cpu PRIVATE 821*da0073e9SAndroid Build Coastguard Worker "$<$<COMPILE_LANGUAGE:CXX>:ATen/core/ATen_pch.h>") 822*da0073e9SAndroid Build Coastguard Worker # Exclude some files from using PCH 823*da0073e9SAndroid Build Coastguard Worker set_source_files_properties( 824*da0073e9SAndroid Build Coastguard Worker # Not built with OpenMP, so PCH is invalid 825*da0073e9SAndroid Build Coastguard Worker ${Torch_SOURCE_DIR}/aten/src/ATen/MapAllocator.cpp 826*da0073e9SAndroid Build Coastguard Worker # Builds with incompatible compiler flags 827*da0073e9SAndroid Build Coastguard Worker ${Caffe2_CPU_SRCS_AVX2} 828*da0073e9SAndroid Build Coastguard Worker ${Caffe2_CPU_SRCS_AVX512} 829*da0073e9SAndroid Build Coastguard Worker PROPERTIES SKIP_PRECOMPILE_HEADERS ON) 830*da0073e9SAndroid Build Coastguard Workerendif() 831*da0073e9SAndroid Build Coastguard Worker 832*da0073e9SAndroid Build Coastguard Worker# Pass path to PocketFFT 833*da0073e9SAndroid Build Coastguard Workerif(AT_POCKETFFT_ENABLED) 834*da0073e9SAndroid Build Coastguard Worker set_source_files_properties( 835*da0073e9SAndroid Build Coastguard Worker "${PROJECT_SOURCE_DIR}/aten/src/ATen/native/mkl/SpectralOps.cpp" 836*da0073e9SAndroid Build Coastguard Worker PROPERTIES INCLUDE_DIRECTORIES "${POCKETFFT_INCLUDE_DIR}") 837*da0073e9SAndroid Build Coastguard Workerendif() 838*da0073e9SAndroid Build Coastguard Worker 839*da0073e9SAndroid Build Coastguard Workerif(CMAKE_COMPILER_IS_GNUCXX AND BUILD_LIBTORCH_CPU_WITH_DEBUG) 840*da0073e9SAndroid Build Coastguard Worker # To enable debug fission we need to build libtorch_cpu with debug info on, 841*da0073e9SAndroid Build Coastguard Worker # but this increases link time and peak memory usage if we use the 842*da0073e9SAndroid Build Coastguard Worker # REL_WITH_DEB_INFO env var since that enables it for everything, but it's 843*da0073e9SAndroid Build Coastguard Worker # only really necessary for libtorch_cpu. 844*da0073e9SAndroid Build Coastguard Worker target_compile_options(torch_cpu PRIVATE "-g") 845*da0073e9SAndroid Build Coastguard Workerendif() 846*da0073e9SAndroid Build Coastguard Worker 847*da0073e9SAndroid Build Coastguard Workerif(USE_LLVM AND LLVM_FOUND) 848*da0073e9SAndroid Build Coastguard Worker llvm_map_components_to_libnames(LLVM_LINK_LIBS 849*da0073e9SAndroid Build Coastguard Worker support core analysis executionengine instcombine 850*da0073e9SAndroid Build Coastguard Worker scalaropts transformutils ${LLVM_TARGETS_TO_BUILD} orcjit) 851*da0073e9SAndroid Build Coastguard Worker target_link_libraries(torch_cpu PRIVATE ${LLVM_LINK_LIBS}) 852*da0073e9SAndroid Build Coastguard Worker if(APPLE) 853*da0073e9SAndroid Build Coastguard Worker set(LINKER_SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/unexported_symbols.lds") 854*da0073e9SAndroid Build Coastguard Worker set_target_properties(torch_cpu PROPERTIES LINK_DEPENDS ${LINKER_SCRIPT}) 855*da0073e9SAndroid Build Coastguard Worker set_target_properties(torch_cpu PROPERTIES LINK_FLAGS "-Wl,-unexported_symbols_list,${LINKER_SCRIPT}") 856*da0073e9SAndroid Build Coastguard Worker elseif(UNIX) 857*da0073e9SAndroid Build Coastguard Worker set(LINKER_SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/version_script.lds") 858*da0073e9SAndroid Build Coastguard Worker set_target_properties(torch_cpu PROPERTIES LINK_DEPENDS ${LINKER_SCRIPT}) 859*da0073e9SAndroid Build Coastguard Worker target_link_libraries(torch_cpu PRIVATE "-Wl,--version-script=${LINKER_SCRIPT}") 860*da0073e9SAndroid Build Coastguard Worker endif() 861*da0073e9SAndroid Build Coastguard Workerendif(USE_LLVM AND LLVM_FOUND) 862*da0073e9SAndroid Build Coastguard Worker 863*da0073e9SAndroid Build Coastguard Worker# This is required for older versions of CMake, which don't allow 864*da0073e9SAndroid Build Coastguard Worker# specifying add_library() without a list of source files 865*da0073e9SAndroid Build Coastguard Workerset(DUMMY_EMPTY_FILE ${CMAKE_BINARY_DIR}/empty.cpp) 866*da0073e9SAndroid Build Coastguard Worker 867*da0073e9SAndroid Build Coastguard Workerif(MSVC) 868*da0073e9SAndroid Build Coastguard Worker set(DUMMY_FILE_CONTENT "__declspec(dllexport) int ignore_this_library_placeholder(){return 0\\;}") 869*da0073e9SAndroid Build Coastguard Workerelse() 870*da0073e9SAndroid Build Coastguard Worker set(DUMMY_FILE_CONTENT "") 871*da0073e9SAndroid Build Coastguard Workerendif() 872*da0073e9SAndroid Build Coastguard Worker 873*da0073e9SAndroid Build Coastguard Workerfile(WRITE ${DUMMY_EMPTY_FILE} ${DUMMY_FILE_CONTENT}) 874*da0073e9SAndroid Build Coastguard Worker 875*da0073e9SAndroid Build Coastguard Worker# Wrapper library for people who link against torch and expect both CPU and CUDA support 876*da0073e9SAndroid Build Coastguard Worker# Contains "torch_cpu" and "torch_cuda" 877*da0073e9SAndroid Build Coastguard Workeradd_library(torch ${DUMMY_EMPTY_FILE}) 878*da0073e9SAndroid Build Coastguard Workerif(HAVE_SOVERSION) 879*da0073e9SAndroid Build Coastguard Worker set_target_properties(torch PROPERTIES 880*da0073e9SAndroid Build Coastguard Worker VERSION ${TORCH_VERSION} SOVERSION ${TORCH_SOVERSION}) 881*da0073e9SAndroid Build Coastguard Workerendif() 882*da0073e9SAndroid Build Coastguard Worker 883*da0073e9SAndroid Build Coastguard Workerif(USE_ROCM) 884*da0073e9SAndroid Build Coastguard Worker filter_list(__caffe2_hip_srcs_cpp Caffe2_HIP_SRCS "\\.(cu|hip)$") 885*da0073e9SAndroid Build Coastguard Worker set_source_files_properties(${__caffe2_hip_srcs_cpp} PROPERTIES HIP_SOURCE_PROPERTY_FORMAT 1) 886*da0073e9SAndroid Build Coastguard Workerendif() 887*da0073e9SAndroid Build Coastguard Worker 888*da0073e9SAndroid Build Coastguard Worker# Compile exposed libraries. 889*da0073e9SAndroid Build Coastguard Workerif(USE_ROCM) 890*da0073e9SAndroid Build Coastguard Worker set(CUDA_LINK_LIBRARIES_KEYWORD PRIVATE) 891*da0073e9SAndroid Build Coastguard Worker list(APPEND Caffe2_HIP_SRCS ${GENERATED_CXX_TORCH_CUDA}) 892*da0073e9SAndroid Build Coastguard Worker hip_add_library(torch_hip ${Caffe2_HIP_SRCS}) 893*da0073e9SAndroid Build Coastguard Worker if(USE_FLASH_ATTENTION) 894*da0073e9SAndroid Build Coastguard Worker target_link_libraries(torch_hip PRIVATE __caffe2_aotriton) 895*da0073e9SAndroid Build Coastguard Worker endif() 896*da0073e9SAndroid Build Coastguard Worker set(CUDA_LINK_LIBRARIES_KEYWORD) 897*da0073e9SAndroid Build Coastguard Worker torch_compile_options(torch_hip) # see cmake/public/utils.cmake 898*da0073e9SAndroid Build Coastguard Worker # TODO: Not totally sure if this is live or not 899*da0073e9SAndroid Build Coastguard Worker if(USE_NCCL) 900*da0073e9SAndroid Build Coastguard Worker target_link_libraries(torch_hip PRIVATE __caffe2_nccl) 901*da0073e9SAndroid Build Coastguard Worker target_compile_definitions(torch_hip PRIVATE USE_NCCL) 902*da0073e9SAndroid Build Coastguard Worker endif() 903*da0073e9SAndroid Build Coastguard Worker 904*da0073e9SAndroid Build Coastguard Worker if(USE_PRECOMPILED_HEADERS) 905*da0073e9SAndroid Build Coastguard Worker target_precompile_headers(torch_hip PRIVATE 906*da0073e9SAndroid Build Coastguard Worker "$<$<COMPILE_LANGUAGE:CXX>:ATen/core/ATen_pch.h>") 907*da0073e9SAndroid Build Coastguard Worker endif() 908*da0073e9SAndroid Build Coastguard Workerelseif(USE_CUDA) 909*da0073e9SAndroid Build Coastguard Worker set(CUDA_LINK_LIBRARIES_KEYWORD PRIVATE) 910*da0073e9SAndroid Build Coastguard Worker list(APPEND Caffe2_GPU_SRCS ${GENERATED_CXX_TORCH_CUDA}) 911*da0073e9SAndroid Build Coastguard Worker if(CUDA_SEPARABLE_COMPILATION) 912*da0073e9SAndroid Build Coastguard Worker # Separate compilation fails when kernels using `thrust::sort_by_key` 913*da0073e9SAndroid Build Coastguard Worker # are linked with the rest of CUDA code. Workaround by linking them separately. 914*da0073e9SAndroid Build Coastguard Worker add_library(torch_cuda ${Caffe2_GPU_SRCS} ${Caffe2_GPU_CU_SRCS}) 915*da0073e9SAndroid Build Coastguard Worker set_property(TARGET torch_cuda PROPERTY CUDA_SEPARABLE_COMPILATION ON) 916*da0073e9SAndroid Build Coastguard Worker 917*da0073e9SAndroid Build Coastguard Worker add_library(torch_cuda_w_sort_by_key OBJECT 918*da0073e9SAndroid Build Coastguard Worker ${Caffe2_GPU_SRCS_W_SORT_BY_KEY} 919*da0073e9SAndroid Build Coastguard Worker ${Caffe2_GPU_CU_SRCS_W_SORT_BY_KEY}) 920*da0073e9SAndroid Build Coastguard Worker set_property(TARGET torch_cuda_w_sort_by_key PROPERTY CUDA_SEPARABLE_COMPILATION OFF) 921*da0073e9SAndroid Build Coastguard Worker target_link_libraries(torch_cuda PRIVATE torch_cuda_w_sort_by_key) 922*da0073e9SAndroid Build Coastguard Worker else() 923*da0073e9SAndroid Build Coastguard Worker add_library(torch_cuda 924*da0073e9SAndroid Build Coastguard Worker ${Caffe2_GPU_SRCS} ${Caffe2_GPU_SRCS_W_SORT_BY_KEY} 925*da0073e9SAndroid Build Coastguard Worker ${Caffe2_GPU_CU_SRCS} ${Caffe2_GPU_CU_SRCS_W_SORT_BY_KEY}) 926*da0073e9SAndroid Build Coastguard Worker endif() 927*da0073e9SAndroid Build Coastguard Worker set(CUDA_LINK_LIBRARIES_KEYWORD) 928*da0073e9SAndroid Build Coastguard Worker torch_compile_options(torch_cuda) # see cmake/public/utils.cmake 929*da0073e9SAndroid Build Coastguard Worker target_compile_definitions(torch_cuda PRIVATE USE_CUDA) 930*da0073e9SAndroid Build Coastguard Worker 931*da0073e9SAndroid Build Coastguard Worker if(USE_CUFILE) 932*da0073e9SAndroid Build Coastguard Worker target_link_libraries(torch_cuda PRIVATE torch::cufile) 933*da0073e9SAndroid Build Coastguard Worker target_compile_definitions(torch_cuda PRIVATE USE_CUFILE) 934*da0073e9SAndroid Build Coastguard Worker endif() 935*da0073e9SAndroid Build Coastguard Worker if(USE_CUSPARSELT) 936*da0073e9SAndroid Build Coastguard Worker target_link_libraries(torch_cuda PRIVATE torch::cusparselt) 937*da0073e9SAndroid Build Coastguard Worker target_compile_definitions(torch_cuda PRIVATE USE_CUSPARSELT) 938*da0073e9SAndroid Build Coastguard Worker endif() 939*da0073e9SAndroid Build Coastguard Worker if(USE_CUDSS) 940*da0073e9SAndroid Build Coastguard Worker target_link_libraries(torch_cuda PRIVATE torch::cudss) 941*da0073e9SAndroid Build Coastguard Worker target_compile_definitions(torch_cuda PRIVATE USE_CUDSS) 942*da0073e9SAndroid Build Coastguard Worker endif() 943*da0073e9SAndroid Build Coastguard Worker if(USE_NCCL) 944*da0073e9SAndroid Build Coastguard Worker target_link_libraries(torch_cuda PRIVATE __caffe2_nccl) 945*da0073e9SAndroid Build Coastguard Worker target_compile_definitions(torch_cuda PRIVATE USE_NCCL) 946*da0073e9SAndroid Build Coastguard Worker endif() 947*da0073e9SAndroid Build Coastguard Worker if(USE_UCC) 948*da0073e9SAndroid Build Coastguard Worker target_link_libraries(torch_cuda PRIVATE __caffe2_ucc) 949*da0073e9SAndroid Build Coastguard Worker target_compile_definitions(torch_cuda PRIVATE USE_UCC) 950*da0073e9SAndroid Build Coastguard Worker endif() 951*da0073e9SAndroid Build Coastguard Worker if(USE_FLASH_ATTENTION) 952*da0073e9SAndroid Build Coastguard Worker target_compile_definitions(torch_cuda PRIVATE USE_FLASH_ATTENTION) 953*da0073e9SAndroid Build Coastguard Worker endif() 954*da0073e9SAndroid Build Coastguard Worker if(USE_MEM_EFF_ATTENTION) 955*da0073e9SAndroid Build Coastguard Worker target_compile_definitions(torch_cuda PRIVATE USE_MEM_EFF_ATTENTION) 956*da0073e9SAndroid Build Coastguard Worker endif() 957*da0073e9SAndroid Build Coastguard Worker if(BUILD_LAZY_CUDA_LINALG) 958*da0073e9SAndroid Build Coastguard Worker add_library(torch_cuda_linalg ${ATen_CUDA_LINALG_SRCS}) 959*da0073e9SAndroid Build Coastguard Worker target_compile_definitions(torch_cuda_linalg PRIVATE USE_CUDA BUILD_LAZY_CUDA_LINALG) 960*da0073e9SAndroid Build Coastguard Worker # Library order is important during static linking 961*da0073e9SAndroid Build Coastguard Worker # `torch::magma` should be mentioned before other CUDA 962*da0073e9SAndroid Build Coastguard Worker # to transitively include all symbols present in torch_cuda/torch_cpu 963*da0073e9SAndroid Build Coastguard Worker if(USE_MAGMA) 964*da0073e9SAndroid Build Coastguard Worker target_link_libraries(torch_cuda_linalg PRIVATE torch::magma) 965*da0073e9SAndroid Build Coastguard Worker # CUDAHooks reports version of MAGMA PyTorch was compiled against, i.e. needs to be able to include magma headers 966*da0073e9SAndroid Build Coastguard Worker get_target_property(HOOKS_INCLUDE_DIRECTORIES torch_cuda INCLUDE_DIRECTORIES) 967*da0073e9SAndroid Build Coastguard Worker if(NOT "${MAGMA_INCLUDE_DIR}" IN_LIST HOOKS_INCLUDE_DIRECTORIES) 968*da0073e9SAndroid Build Coastguard Worker set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/../aten/src/ATen/cuda/detail/CUDAHooks.cpp PROPERTIES INCLUDE_DIRECTORIES "${MAGMA_INCLUDE_DIR}") 969*da0073e9SAndroid Build Coastguard Worker endif() 970*da0073e9SAndroid Build Coastguard Worker endif() 971*da0073e9SAndroid Build Coastguard Worker target_link_libraries(torch_cuda_linalg PRIVATE 972*da0073e9SAndroid Build Coastguard Worker torch_cpu 973*da0073e9SAndroid Build Coastguard Worker torch_cuda 974*da0073e9SAndroid Build Coastguard Worker ) 975*da0073e9SAndroid Build Coastguard Worker if($ENV{ATEN_STATIC_CUDA}) 976*da0073e9SAndroid Build Coastguard Worker if(CUDA_VERSION_MAJOR LESS_EQUAL 11) 977*da0073e9SAndroid Build Coastguard Worker target_link_libraries(torch_cuda_linalg PRIVATE 978*da0073e9SAndroid Build Coastguard Worker CUDA::cusolver_static 979*da0073e9SAndroid Build Coastguard Worker ${CUDAToolkit_LIBRARY_DIR}/liblapack_static.a # needed for libcusolver_static 980*da0073e9SAndroid Build Coastguard Worker ) 981*da0073e9SAndroid Build Coastguard Worker elseif(CUDA_VERSION_MAJOR GREATER_EQUAL 12) 982*da0073e9SAndroid Build Coastguard Worker target_link_libraries(torch_cuda_linalg PRIVATE 983*da0073e9SAndroid Build Coastguard Worker CUDA::cusolver_static 984*da0073e9SAndroid Build Coastguard Worker ${CUDAToolkit_LIBRARY_DIR}/libcusolver_lapack_static.a # needed for libcusolver_static 985*da0073e9SAndroid Build Coastguard Worker ) 986*da0073e9SAndroid Build Coastguard Worker endif() 987*da0073e9SAndroid Build Coastguard Worker else() 988*da0073e9SAndroid Build Coastguard Worker target_link_libraries(torch_cuda_linalg PRIVATE 989*da0073e9SAndroid Build Coastguard Worker CUDA::cusolver 990*da0073e9SAndroid Build Coastguard Worker ) 991*da0073e9SAndroid Build Coastguard Worker endif() 992*da0073e9SAndroid Build Coastguard Worker # NS: TODO, is this really necessary? 993*da0073e9SAndroid Build Coastguard Worker if(USE_MAGMA AND CAFFE2_STATIC_LINK_CUDA) 994*da0073e9SAndroid Build Coastguard Worker target_link_libraries(torch_cuda_linalg PRIVATE 995*da0073e9SAndroid Build Coastguard Worker CUDA::culibos ${CMAKE_DL_LIBS}) 996*da0073e9SAndroid Build Coastguard Worker endif() 997*da0073e9SAndroid Build Coastguard Worker set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/../aten/src/ATen/native/cuda/LinearAlgebraStubs.cpp PROPERTIES COMPILE_FLAGS "-DBUILD_LAZY_CUDA_LINALG") 998*da0073e9SAndroid Build Coastguard Worker install(TARGETS torch_cuda_linalg DESTINATION "${TORCH_INSTALL_LIB_DIR}") 999*da0073e9SAndroid Build Coastguard Worker endif() 1000*da0073e9SAndroid Build Coastguard Worker 1001*da0073e9SAndroid Build Coastguard Worker if(USE_PRECOMPILED_HEADERS) 1002*da0073e9SAndroid Build Coastguard Worker target_precompile_headers(torch_cuda PRIVATE 1003*da0073e9SAndroid Build Coastguard Worker "$<$<COMPILE_LANGUAGE:CXX>:ATen/core/ATen_pch.h>") 1004*da0073e9SAndroid Build Coastguard Worker endif() 1005*da0073e9SAndroid Build Coastguard Worker 1006*da0073e9SAndroid Build Coastguard Worker # Apply suggestion from comment https://github.com/pytorch/pytorch/issues/113053#issuecomment-2115375714 1007*da0073e9SAndroid Build Coastguard Worker if(LINUX) 1008*da0073e9SAndroid Build Coastguard Worker set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/../aten/src/ATen/cuda/CUDASparseDescriptors.cpp PROPERTIES COMPILE_FLAGS -Wno-deprecated-declarations) 1009*da0073e9SAndroid Build Coastguard Worker set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/../aten/src/ATen/cuda/CUDASparseBlas.cpp PROPERTIES COMPILE_FLAGS -Wno-deprecated-declarations) 1010*da0073e9SAndroid Build Coastguard Worker set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/../aten/src/ATen/native/sparse/cuda/SparseCUDABlas.cpp PROPERTIES COMPILE_FLAGS -Wno-deprecated-declarations) 1011*da0073e9SAndroid Build Coastguard Worker set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/../aten/src/ATen/native/sparse/cuda/SparseBlasImpl.cpp PROPERTIES COMPILE_FLAGS -Wno-deprecated-declarations) 1012*da0073e9SAndroid Build Coastguard Worker endif() 1013*da0073e9SAndroid Build Coastguard Workerendif() 1014*da0073e9SAndroid Build Coastguard Worker 1015*da0073e9SAndroid Build Coastguard Workerif(USE_XPU) 1016*da0073e9SAndroid Build Coastguard Worker add_library(torch_xpu ${Caffe2_XPU_SRCS}) 1017*da0073e9SAndroid Build Coastguard Worker torch_compile_options(torch_xpu) # see cmake/public/utils.cmake 1018*da0073e9SAndroid Build Coastguard Worker target_compile_definitions(torch_xpu PRIVATE USE_XPU) 1019*da0073e9SAndroid Build Coastguard Worker 1020*da0073e9SAndroid Build Coastguard Worker # ATen XPU implementation 1021*da0073e9SAndroid Build Coastguard Worker set(TORCH_XPU_OPS_DIR ${TORCH_ROOT}/third_party/torch-xpu-ops) 1022*da0073e9SAndroid Build Coastguard Worker set(TORCH_XPU_OPS_REPO_URL https://github.com/intel/torch-xpu-ops.git) 1023*da0073e9SAndroid Build Coastguard Worker file(READ "${TORCH_ROOT}/third_party/xpu.txt" TORCH_XPU_OPS_COMMIT) 1024*da0073e9SAndroid Build Coastguard Worker string(REGEX REPLACE "\n$" "" TORCH_XPU_OPS_COMMIT "${TORCH_XPU_OPS_COMMIT}") 1025*da0073e9SAndroid Build Coastguard Worker if(NOT EXISTS "${TORCH_XPU_OPS_DIR}/.git") 1026*da0073e9SAndroid Build Coastguard Worker execute_process( 1027*da0073e9SAndroid Build Coastguard Worker COMMAND git clone --quiet ${TORCH_XPU_OPS_REPO_URL} ${TORCH_XPU_OPS_DIR} 1028*da0073e9SAndroid Build Coastguard Worker RESULT_VARIABLE _exitcode) 1029*da0073e9SAndroid Build Coastguard Worker if(NOT _exitcode EQUAL 0) 1030*da0073e9SAndroid Build Coastguard Worker message(FATAL_ERROR "Fail to clone ${TORCH_XPU_OPS_REPO_URL}") 1031*da0073e9SAndroid Build Coastguard Worker endif() 1032*da0073e9SAndroid Build Coastguard Worker endif() 1033*da0073e9SAndroid Build Coastguard Worker execute_process( 1034*da0073e9SAndroid Build Coastguard Worker COMMAND git fetch --quiet 1035*da0073e9SAndroid Build Coastguard Worker WORKING_DIRECTORY ${TORCH_XPU_OPS_DIR} 1036*da0073e9SAndroid Build Coastguard Worker RESULT_VARIABLE _exitcode) 1037*da0073e9SAndroid Build Coastguard Worker if(NOT _exitcode EQUAL 0) 1038*da0073e9SAndroid Build Coastguard Worker message(FATAL_ERROR "Fail to fetch ${TORCH_XPU_OPS_REPO_URL}") 1039*da0073e9SAndroid Build Coastguard Worker endif() 1040*da0073e9SAndroid Build Coastguard Worker execute_process( 1041*da0073e9SAndroid Build Coastguard Worker COMMAND git checkout --quiet ${TORCH_XPU_OPS_COMMIT} 1042*da0073e9SAndroid Build Coastguard Worker WORKING_DIRECTORY ${TORCH_XPU_OPS_DIR} 1043*da0073e9SAndroid Build Coastguard Worker RESULT_VARIABLE _exitcode) 1044*da0073e9SAndroid Build Coastguard Worker if(NOT _exitcode EQUAL 0) 1045*da0073e9SAndroid Build Coastguard Worker message(FATAL_ERROR "Fail to checkout ${TORCH_XPU_OPS_REPO_URL} to ${TORCH_XPU_OPS_COMMIT}") 1046*da0073e9SAndroid Build Coastguard Worker endif() 1047*da0073e9SAndroid Build Coastguard Worker 1048*da0073e9SAndroid Build Coastguard Worker set(TORCH_XPU_OPS_INCLUDE_DIRS 1049*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/api 1050*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/api/include 1051*da0073e9SAndroid Build Coastguard Worker ${Caffe2_CPU_INCLUDE} 1052*da0073e9SAndroid Build Coastguard Worker ${Caffe2_XPU_INCLUDE}) 1053*da0073e9SAndroid Build Coastguard Worker # Pass the target as a dependency so that ATen headers generation 1054*da0073e9SAndroid Build Coastguard Worker # could be followed by torch-xpu-ops build. 1055*da0073e9SAndroid Build Coastguard Worker # 1. Sources in torch-xpu-ops depend on generated ATen headers. 1056*da0073e9SAndroid Build Coastguard Worker # 2. Using add_custom_command in torch-xpu-ops to define sycl device sources 1057*da0073e9SAndroid Build Coastguard Worker # compilation. add_custom_command requires an explicit dependency. 1058*da0073e9SAndroid Build Coastguard Worker list(APPEND ${Caffe2_XPU_INCLUDE} ${TORCH_XPU_OPS_DIR}/src/ATen/) 1059*da0073e9SAndroid Build Coastguard Worker set(TORCH_XPU_OPS_PYTORCH_DEPS ATEN_CPU_FILES_GEN_TARGET) 1060*da0073e9SAndroid Build Coastguard Worker 1061*da0073e9SAndroid Build Coastguard Worker add_subdirectory(${TORCH_ROOT}/third_party/torch-xpu-ops 1062*da0073e9SAndroid Build Coastguard Worker ${CMAKE_BINARY_DIR}/caffe2/aten_xpu) 1063*da0073e9SAndroid Build Coastguard Worker if(NOT TARGET torch_xpu_ops) 1064*da0073e9SAndroid Build Coastguard Worker message(WARNING "Failed to include ATen XPU implementation target") 1065*da0073e9SAndroid Build Coastguard Worker else() 1066*da0073e9SAndroid Build Coastguard Worker target_link_libraries(torch_xpu PRIVATE torch_xpu_ops) 1067*da0073e9SAndroid Build Coastguard Worker if(MSVC) 1068*da0073e9SAndroid Build Coastguard Worker # Windows 1069*da0073e9SAndroid Build Coastguard Worker target_link_libraries(torch_xpu PRIVATE 1070*da0073e9SAndroid Build Coastguard Worker "-WHOLEARCHIVE:\"$<TARGET_FILE:torch_xpu_ops>\"") 1071*da0073e9SAndroid Build Coastguard Worker else() 1072*da0073e9SAndroid Build Coastguard Worker # Linux 1073*da0073e9SAndroid Build Coastguard Worker target_link_libraries(torch_xpu PRIVATE 1074*da0073e9SAndroid Build Coastguard Worker "-Wl,--whole-archive,\"$<TARGET_FILE:torch_xpu_ops>\" -Wl,--no-whole-archive") 1075*da0073e9SAndroid Build Coastguard Worker endif() 1076*da0073e9SAndroid Build Coastguard Worker 1077*da0073e9SAndroid Build Coastguard Worker # Set cached ${ATen_XPU_INCLUDE_DIRS} to torch 1078*da0073e9SAndroid Build Coastguard Worker include_directories(SYSTEM ${ATen_XPU_INCLUDE_DIRS}) 1079*da0073e9SAndroid Build Coastguard Worker 1080*da0073e9SAndroid Build Coastguard Worker endif() 1081*da0073e9SAndroid Build Coastguard Workerendif() 1082*da0073e9SAndroid Build Coastguard Worker 1083*da0073e9SAndroid Build Coastguard Workerif(NOT MSVC AND USE_XNNPACK) 1084*da0073e9SAndroid Build Coastguard Worker TARGET_LINK_LIBRARIES(torch_cpu PRIVATE fxdiv) 1085*da0073e9SAndroid Build Coastguard Workerendif() 1086*da0073e9SAndroid Build Coastguard Worker 1087*da0073e9SAndroid Build Coastguard Worker# ========================================================== 1088*da0073e9SAndroid Build Coastguard Worker# formerly-libtorch flags 1089*da0073e9SAndroid Build Coastguard Worker# ========================================================== 1090*da0073e9SAndroid Build Coastguard Worker 1091*da0073e9SAndroid Build Coastguard Worker 1092*da0073e9SAndroid Build Coastguard Worker# Build model tracer for tracing-based selective build 1093*da0073e9SAndroid Build Coastguard Workerif(TRACING_BASED AND NOT BUILD_LITE_INTERPRETER AND NOT INTERN_BUILD_MOBILE) 1094*da0073e9SAndroid Build Coastguard Worker add_subdirectory( 1095*da0073e9SAndroid Build Coastguard Worker ${TORCH_ROOT}/torch/csrc/jit/mobile/model_tracer 1096*da0073e9SAndroid Build Coastguard Worker ${CMAKE_BINARY_DIR}/model_tracer 1097*da0073e9SAndroid Build Coastguard Worker ) 1098*da0073e9SAndroid Build Coastguard Worker string(APPEND CMAKE_CXX_FLAGS " -DENABLE_RECORD_KERNEL_FUNCTION_DTYPE") 1099*da0073e9SAndroid Build Coastguard Workerendif() 1100*da0073e9SAndroid Build Coastguard Worker 1101*da0073e9SAndroid Build Coastguard Worker# Codegen selected_mobile_ops.h for template selective build 1102*da0073e9SAndroid Build Coastguard Workerif(BUILD_LITE_INTERPRETER AND SELECTED_OP_LIST) 1103*da0073e9SAndroid Build Coastguard Worker message("running gen_selected_mobile_ops_header for: '${SELECTED_OP_LIST}'") 1104*da0073e9SAndroid Build Coastguard Worker file(GLOB lite_interpreter_python "${TOOLS_PATH}/lite_interpreter/*.py") 1105*da0073e9SAndroid Build Coastguard Worker if(${TRACING_BASED}) 1106*da0073e9SAndroid Build Coastguard Worker file(GLOB code_analyzer_python "${TOOLS_PATH}/code_analyzer/*.py") 1107*da0073e9SAndroid Build Coastguard Worker add_custom_command( 1108*da0073e9SAndroid Build Coastguard Worker OUTPUT ${CMAKE_BINARY_DIR}/aten/src/ATen/selected_mobile_ops.h 1109*da0073e9SAndroid Build Coastguard Worker COMMAND 1110*da0073e9SAndroid Build Coastguard Worker Python::Interpreter 1111*da0073e9SAndroid Build Coastguard Worker -m tools.code_analyzer.gen_oplist 1112*da0073e9SAndroid Build Coastguard Worker --model_file_list_path "${SELECTED_OP_LIST}" 1113*da0073e9SAndroid Build Coastguard Worker --output_dir "${CMAKE_BINARY_DIR}/aten/src/ATen" 1114*da0073e9SAndroid Build Coastguard Worker DEPENDS 1115*da0073e9SAndroid Build Coastguard Worker ${torchgen_python} 1116*da0073e9SAndroid Build Coastguard Worker ${lite_interpreter_python} 1117*da0073e9SAndroid Build Coastguard Worker ${code_analyzer_python} 1118*da0073e9SAndroid Build Coastguard Worker "${SELECTED_OP_LIST}" 1119*da0073e9SAndroid Build Coastguard Worker "${TORCH_ROOT}/aten/src/ATen/native/native_functions.yaml" 1120*da0073e9SAndroid Build Coastguard Worker WORKING_DIRECTORY "${TORCH_ROOT}") 1121*da0073e9SAndroid Build Coastguard Worker else() 1122*da0073e9SAndroid Build Coastguard Worker add_custom_command( 1123*da0073e9SAndroid Build Coastguard Worker OUTPUT ${CMAKE_BINARY_DIR}/aten/src/ATen/selected_mobile_ops.h 1124*da0073e9SAndroid Build Coastguard Worker COMMAND 1125*da0073e9SAndroid Build Coastguard Worker Python::Interpreter 1126*da0073e9SAndroid Build Coastguard Worker -m tools.lite_interpreter.gen_selected_mobile_ops_header 1127*da0073e9SAndroid Build Coastguard Worker --yaml_file_path "${SELECTED_OP_LIST}" 1128*da0073e9SAndroid Build Coastguard Worker --output_file_path "${CMAKE_BINARY_DIR}/aten/src/ATen" 1129*da0073e9SAndroid Build Coastguard Worker DEPENDS 1130*da0073e9SAndroid Build Coastguard Worker ${torchgen_python} 1131*da0073e9SAndroid Build Coastguard Worker ${lite_interpreter_python} 1132*da0073e9SAndroid Build Coastguard Worker "${SELECTED_OP_LIST}" 1133*da0073e9SAndroid Build Coastguard Worker "${TORCH_ROOT}/aten/src/ATen/native/native_functions.yaml" 1134*da0073e9SAndroid Build Coastguard Worker WORKING_DIRECTORY "${TORCH_ROOT}") 1135*da0073e9SAndroid Build Coastguard Worker endif() 1136*da0073e9SAndroid Build Coastguard Worker 1137*da0073e9SAndroid Build Coastguard Worker add_custom_target( 1138*da0073e9SAndroid Build Coastguard Worker __selected_mobile_ops_header_gen 1139*da0073e9SAndroid Build Coastguard Worker DEPENDS ${CMAKE_BINARY_DIR}/aten/src/ATen/selected_mobile_ops.h) 1140*da0073e9SAndroid Build Coastguard Worker add_dependencies(torch_cpu __selected_mobile_ops_header_gen) 1141*da0073e9SAndroid Build Coastguard Workerendif() 1142*da0073e9SAndroid Build Coastguard Worker 1143*da0073e9SAndroid Build Coastguard Workerif(NOT NO_API) 1144*da0073e9SAndroid Build Coastguard Worker target_include_directories(torch_cpu PRIVATE 1145*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/api 1146*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc/api/include) 1147*da0073e9SAndroid Build Coastguard Workerendif() 1148*da0073e9SAndroid Build Coastguard Worker 1149*da0073e9SAndroid Build Coastguard Workerif(USE_CUDA AND MSVC) 1150*da0073e9SAndroid Build Coastguard Worker # -INCLUDE is used to ensure torch_cuda is linked against in a project that relies on them. 1151*da0073e9SAndroid Build Coastguard Worker # Related issue: https://github.com/pytorch/pytorch/issues/31611 1152*da0073e9SAndroid Build Coastguard Worker target_link_libraries(torch_cuda INTERFACE "-INCLUDE:?warp_size@cuda@at@@YAHXZ") 1153*da0073e9SAndroid Build Coastguard Workerendif() 1154*da0073e9SAndroid Build Coastguard Worker 1155*da0073e9SAndroid Build Coastguard Workerif(NOT BUILD_LITE_INTERPRETER) 1156*da0073e9SAndroid Build Coastguard Worker set(TH_CPU_INCLUDE 1157*da0073e9SAndroid Build Coastguard Worker # dense 1158*da0073e9SAndroid Build Coastguard Worker aten/src/TH 1159*da0073e9SAndroid Build Coastguard Worker ${CMAKE_CURRENT_BINARY_DIR}/aten/src/TH 1160*da0073e9SAndroid Build Coastguard Worker ${TORCH_ROOT}/aten/src 1161*da0073e9SAndroid Build Coastguard Worker ${CMAKE_CURRENT_BINARY_DIR}/aten/src 1162*da0073e9SAndroid Build Coastguard Worker 1163*da0073e9SAndroid Build Coastguard Worker ${CMAKE_BINARY_DIR}/aten/src) 1164*da0073e9SAndroid Build Coastguard Worker target_include_directories(torch_cpu PRIVATE ${TH_CPU_INCLUDE}) 1165*da0073e9SAndroid Build Coastguard Workerendif() 1166*da0073e9SAndroid Build Coastguard Worker 1167*da0073e9SAndroid Build Coastguard Workerset(ATen_CPU_INCLUDE 1168*da0073e9SAndroid Build Coastguard Worker ${TORCH_ROOT}/aten/src 1169*da0073e9SAndroid Build Coastguard Worker ${CMAKE_CURRENT_BINARY_DIR}/../aten/src 1170*da0073e9SAndroid Build Coastguard Worker ${CMAKE_BINARY_DIR}/aten/src) 1171*da0073e9SAndroid Build Coastguard Worker 1172*da0073e9SAndroid Build Coastguard Workerif(CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "GNU") 1173*da0073e9SAndroid Build Coastguard Worker set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/../aten/src/ATen/native/QuantizedLinear.cpp PROPERTIES COMPILE_FLAGS -Wno-deprecated-declarations) 1174*da0073e9SAndroid Build Coastguard Worker set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/../aten/src/ATen/native/RNN.cpp PROPERTIES COMPILE_FLAGS -Wno-deprecated-declarations) 1175*da0073e9SAndroid Build Coastguard Worker set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/../aten/src/ATen/native/quantized/cpu/qlinear_prepack.cpp PROPERTIES COMPILE_FLAGS -Wno-deprecated-declarations) 1176*da0073e9SAndroid Build Coastguard Worker set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/../aten/src/ATen/native/quantized/qlinear_unpack.cpp PROPERTIES COMPILE_FLAGS -Wno-deprecated-declarations) 1177*da0073e9SAndroid Build Coastguard Workerendif() 1178*da0073e9SAndroid Build Coastguard Worker 1179*da0073e9SAndroid Build Coastguard Workertarget_include_directories(torch_cpu PRIVATE ${ATen_CPU_INCLUDE}) 1180*da0073e9SAndroid Build Coastguard Worker 1181*da0073e9SAndroid Build Coastguard Workertarget_include_directories(torch_cpu PRIVATE 1182*da0073e9SAndroid Build Coastguard Worker ${TORCH_SRC_DIR}/csrc) 1183*da0073e9SAndroid Build Coastguard Worker 1184*da0073e9SAndroid Build Coastguard Workertarget_include_directories(torch_cpu PRIVATE 1185*da0073e9SAndroid Build Coastguard Worker ${TORCH_ROOT}/third_party/miniz-2.1.0) 1186*da0073e9SAndroid Build Coastguard Worker 1187*da0073e9SAndroid Build Coastguard Workertarget_include_directories(torch_cpu PRIVATE 1188*da0073e9SAndroid Build Coastguard Worker ${TORCH_ROOT}/third_party/kineto/libkineto/include) 1189*da0073e9SAndroid Build Coastguard Worker 1190*da0073e9SAndroid Build Coastguard Workerif(USE_KINETO) 1191*da0073e9SAndroid Build Coastguard Worker target_include_directories(torch_cpu PRIVATE 1192*da0073e9SAndroid Build Coastguard Worker ${TORCH_ROOT}/third_party/kineto/libkineto/src) 1193*da0073e9SAndroid Build Coastguard Workerendif() 1194*da0073e9SAndroid Build Coastguard Worker 1195*da0073e9SAndroid Build Coastguard Workertarget_include_directories(torch_cpu PRIVATE 1196*da0073e9SAndroid Build Coastguard Worker ${TORCH_ROOT}/third_party/cpp-httplib) 1197*da0073e9SAndroid Build Coastguard Worker 1198*da0073e9SAndroid Build Coastguard Workertarget_include_directories(torch_cpu PRIVATE 1199*da0073e9SAndroid Build Coastguard Worker ${TORCH_ROOT}/third_party/nlohmann/include) 1200*da0073e9SAndroid Build Coastguard Worker 1201*da0073e9SAndroid Build Coastguard Workerinstall(DIRECTORY "${TORCH_SRC_DIR}/csrc" 1202*da0073e9SAndroid Build Coastguard Worker DESTINATION ${TORCH_INSTALL_INCLUDE_DIR}/torch 1203*da0073e9SAndroid Build Coastguard Worker FILES_MATCHING PATTERN "*.h" PATTERN "*.hpp") 1204*da0073e9SAndroid Build Coastguard Workerinstall(FILES 1205*da0073e9SAndroid Build Coastguard Worker "${TORCH_SRC_DIR}/script.h" 1206*da0073e9SAndroid Build Coastguard Worker "${TORCH_SRC_DIR}/extension.h" 1207*da0073e9SAndroid Build Coastguard Worker "${TORCH_SRC_DIR}/custom_class.h" 1208*da0073e9SAndroid Build Coastguard Worker "${TORCH_SRC_DIR}/library.h" 1209*da0073e9SAndroid Build Coastguard Worker "${TORCH_SRC_DIR}/custom_class_detail.h" 1210*da0073e9SAndroid Build Coastguard Worker DESTINATION ${TORCH_INSTALL_INCLUDE_DIR}/torch) 1211*da0073e9SAndroid Build Coastguard Workerif(BUILD_TEST) 1212*da0073e9SAndroid Build Coastguard Worker if(BUILD_EXECUTORCH) 1213*da0073e9SAndroid Build Coastguard Worker add_subdirectory( 1214*da0073e9SAndroid Build Coastguard Worker ${TORCH_ROOT}/test/edge 1215*da0073e9SAndroid Build Coastguard Worker ${CMAKE_BINARY_DIR}/test_edge_op_registration 1216*da0073e9SAndroid Build Coastguard Worker ) 1217*da0073e9SAndroid Build Coastguard Worker endif() 1218*da0073e9SAndroid Build Coastguard Worker if(BUILD_LITE_INTERPRETER) 1219*da0073e9SAndroid Build Coastguard Worker add_subdirectory( 1220*da0073e9SAndroid Build Coastguard Worker ${TORCH_ROOT}/test/cpp/lite_interpreter_runtime 1221*da0073e9SAndroid Build Coastguard Worker ${CMAKE_BINARY_DIR}/test_lite_interpreter_runtime 1222*da0073e9SAndroid Build Coastguard Worker ) 1223*da0073e9SAndroid Build Coastguard Worker add_subdirectory( 1224*da0073e9SAndroid Build Coastguard Worker ${TORCH_ROOT}/test/mobile/lightweight_dispatch 1225*da0073e9SAndroid Build Coastguard Worker ${CMAKE_BINARY_DIR}/test_codegen_unboxing 1226*da0073e9SAndroid Build Coastguard Worker ) 1227*da0073e9SAndroid Build Coastguard Worker else() 1228*da0073e9SAndroid Build Coastguard Worker add_subdirectory(${TORCH_ROOT}/test/cpp/jit ${CMAKE_BINARY_DIR}/test_jit) 1229*da0073e9SAndroid Build Coastguard Worker add_subdirectory(${TORCH_ROOT}/test/inductor ${CMAKE_BINARY_DIR}/test_inductor) 1230*da0073e9SAndroid Build Coastguard Worker add_subdirectory( 1231*da0073e9SAndroid Build Coastguard Worker ${TORCH_ROOT}/test/cpp/tensorexpr 1232*da0073e9SAndroid Build Coastguard Worker ${CMAKE_BINARY_DIR}/test_tensorexpr 1233*da0073e9SAndroid Build Coastguard Worker ) 1234*da0073e9SAndroid Build Coastguard Worker if(USE_DISTRIBUTED) 1235*da0073e9SAndroid Build Coastguard Worker add_subdirectory(${TORCH_ROOT}/test/cpp/c10d ${CMAKE_BINARY_DIR}/test_cpp_c10d) 1236*da0073e9SAndroid Build Coastguard Worker if(NOT WIN32) 1237*da0073e9SAndroid Build Coastguard Worker add_subdirectory(${TORCH_ROOT}/test/cpp/dist_autograd ${CMAKE_BINARY_DIR}/dist_autograd) 1238*da0073e9SAndroid Build Coastguard Worker add_subdirectory(${TORCH_ROOT}/test/cpp/rpc ${CMAKE_BINARY_DIR}/test_cpp_rpc) 1239*da0073e9SAndroid Build Coastguard Worker endif() 1240*da0073e9SAndroid Build Coastguard Worker endif() 1241*da0073e9SAndroid Build Coastguard Worker if(NOT NO_API) 1242*da0073e9SAndroid Build Coastguard Worker add_subdirectory(${TORCH_ROOT}/test/cpp/api ${CMAKE_BINARY_DIR}/test_api) 1243*da0073e9SAndroid Build Coastguard Worker endif() 1244*da0073e9SAndroid Build Coastguard Worker 1245*da0073e9SAndroid Build Coastguard Worker if(USE_LLVM AND LLVM_FOUND) 1246*da0073e9SAndroid Build Coastguard Worker add_subdirectory( 1247*da0073e9SAndroid Build Coastguard Worker ${TORCH_ROOT}/test/mobile/nnc 1248*da0073e9SAndroid Build Coastguard Worker ${CMAKE_BINARY_DIR}/test_mobile_nnc 1249*da0073e9SAndroid Build Coastguard Worker ) 1250*da0073e9SAndroid Build Coastguard Worker endif() 1251*da0073e9SAndroid Build Coastguard Worker add_subdirectory(${TORCH_ROOT}/test/cpp/lazy 1252*da0073e9SAndroid Build Coastguard Worker ${CMAKE_BINARY_DIR}/test_lazy) 1253*da0073e9SAndroid Build Coastguard Worker endif() 1254*da0073e9SAndroid Build Coastguard Worker if(BUILD_AOT_INDUCTOR_TEST) 1255*da0073e9SAndroid Build Coastguard Worker add_subdirectory( 1256*da0073e9SAndroid Build Coastguard Worker ${TORCH_ROOT}/test/cpp/aoti_abi_check 1257*da0073e9SAndroid Build Coastguard Worker ${CMAKE_BINARY_DIR}/test_aoti_abi_check) 1258*da0073e9SAndroid Build Coastguard Worker add_subdirectory( 1259*da0073e9SAndroid Build Coastguard Worker ${TORCH_ROOT}/test/cpp/aoti_inference 1260*da0073e9SAndroid Build Coastguard Worker ${CMAKE_BINARY_DIR}/test_aoti_inference) 1261*da0073e9SAndroid Build Coastguard Worker endif() 1262*da0073e9SAndroid Build Coastguard Workerendif() 1263*da0073e9SAndroid Build Coastguard Worker 1264*da0073e9SAndroid Build Coastguard Workerif(CMAKE_SYSTEM_NAME STREQUAL "Linux") 1265*da0073e9SAndroid Build Coastguard Worker include(../cmake/CheckAbi.cmake) 1266*da0073e9SAndroid Build Coastguard Workerendif() 1267*da0073e9SAndroid Build Coastguard Worker 1268*da0073e9SAndroid Build Coastguard Worker# CMake config for external projects. 1269*da0073e9SAndroid Build Coastguard Workerconfigure_file( 1270*da0073e9SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/cmake/TorchConfigVersion.cmake.in 1271*da0073e9SAndroid Build Coastguard Worker ${PROJECT_BINARY_DIR}/TorchConfigVersion.cmake 1272*da0073e9SAndroid Build Coastguard Worker @ONLY) 1273*da0073e9SAndroid Build Coastguard Workerconfigure_file( 1274*da0073e9SAndroid Build Coastguard Worker ${TORCH_ROOT}/cmake/TorchConfig.cmake.in 1275*da0073e9SAndroid Build Coastguard Worker ${PROJECT_BINARY_DIR}/TorchConfig.cmake 1276*da0073e9SAndroid Build Coastguard Worker @ONLY) 1277*da0073e9SAndroid Build Coastguard Workerinstall(FILES 1278*da0073e9SAndroid Build Coastguard Worker ${PROJECT_BINARY_DIR}/TorchConfigVersion.cmake 1279*da0073e9SAndroid Build Coastguard Worker ${PROJECT_BINARY_DIR}/TorchConfig.cmake 1280*da0073e9SAndroid Build Coastguard Worker DESTINATION share/cmake/Torch) 1281*da0073e9SAndroid Build Coastguard Worker 1282*da0073e9SAndroid Build Coastguard Worker# ---[ Torch python bindings build 1283*da0073e9SAndroid Build Coastguard Workeradd_subdirectory(../torch torch) 1284*da0073e9SAndroid Build Coastguard Workerset(TORCH_PYTHON_COMPILE_OPTIONS ${TORCH_PYTHON_COMPILE_OPTIONS} PARENT_SCOPE) 1285*da0073e9SAndroid Build Coastguard Workerset(TORCH_PYTHON_LINK_FLAGS ${TORCH_PYTHON_LINK_FLAGS} PARENT_SCOPE) 1286*da0073e9SAndroid Build Coastguard Worker# ========================================================== 1287*da0073e9SAndroid Build Coastguard Worker# END formerly-libtorch flags 1288*da0073e9SAndroid Build Coastguard Worker# ========================================================== 1289*da0073e9SAndroid Build Coastguard Worker 1290*da0073e9SAndroid Build Coastguard Workerif(NOT NO_API) 1291*da0073e9SAndroid Build Coastguard Worker target_include_directories(torch_cpu PUBLIC 1292*da0073e9SAndroid Build Coastguard Worker $<BUILD_INTERFACE:${TORCH_SRC_DIR}/csrc/api> 1293*da0073e9SAndroid Build Coastguard Worker $<BUILD_INTERFACE:${TORCH_SRC_DIR}/csrc/api/include>) 1294*da0073e9SAndroid Build Coastguard Workerendif() 1295*da0073e9SAndroid Build Coastguard Worker 1296*da0073e9SAndroid Build Coastguard Workerif(USE_ROCM) 1297*da0073e9SAndroid Build Coastguard Worker target_compile_definitions(torch_hip PRIVATE 1298*da0073e9SAndroid Build Coastguard Worker USE_ROCM 1299*da0073e9SAndroid Build Coastguard Worker __HIP_PLATFORM_AMD__ 1300*da0073e9SAndroid Build Coastguard Worker ) 1301*da0073e9SAndroid Build Coastguard Worker # NB: Massive hack. torch/csrc/jit/codegen/fuser/codegen.cpp includes 1302*da0073e9SAndroid Build Coastguard Worker # torch/csrc/jit/codegen/fuser/cuda/resource_strings.h which changes the 1303*da0073e9SAndroid Build Coastguard Worker # strings depending on if you're __HIP_PLATFORM_AMD__ or not. 1304*da0073e9SAndroid Build Coastguard Worker # But that file is in torch_cpu! So, against all odds, this macro 1305*da0073e9SAndroid Build Coastguard Worker # has to be set on torch_cpu too. I also added it to torch for 1306*da0073e9SAndroid Build Coastguard Worker # better luck 1307*da0073e9SAndroid Build Coastguard Worker target_compile_definitions(torch_cpu PRIVATE 1308*da0073e9SAndroid Build Coastguard Worker USE_ROCM 1309*da0073e9SAndroid Build Coastguard Worker __HIP_PLATFORM_AMD__ 1310*da0073e9SAndroid Build Coastguard Worker ) 1311*da0073e9SAndroid Build Coastguard Worker target_compile_definitions(torch PRIVATE 1312*da0073e9SAndroid Build Coastguard Worker USE_ROCM 1313*da0073e9SAndroid Build Coastguard Worker __HIP_PLATFORM_AMD__ 1314*da0073e9SAndroid Build Coastguard Worker ) 1315*da0073e9SAndroid Build Coastguard Worker 1316*da0073e9SAndroid Build Coastguard Worker if(NOT ROCM_SOURCE_DIR) 1317*da0073e9SAndroid Build Coastguard Worker set(ROCM_SOURCE_DIR "$ENV{ROCM_SOURCE_DIR}") 1318*da0073e9SAndroid Build Coastguard Worker endif() 1319*da0073e9SAndroid Build Coastguard Worker if($ROCM_SOURCE_DIR STREQUAL "") 1320*da0073e9SAndroid Build Coastguard Worker set(ROCM_SOURCE_DIR "/opt/rocm") 1321*da0073e9SAndroid Build Coastguard Worker endif() 1322*da0073e9SAndroid Build Coastguard Worker message(INFO "caffe2 ROCM_SOURCE_DIR = ${ROCM_SOURCE_DIR}") 1323*da0073e9SAndroid Build Coastguard Worker target_include_directories(torch_hip PRIVATE 1324*da0073e9SAndroid Build Coastguard Worker ${ROCM_SOURCE_DIR}/include 1325*da0073e9SAndroid Build Coastguard Worker ${ROCM_SOURCE_DIR}/hcc/include 1326*da0073e9SAndroid Build Coastguard Worker ${ROCM_SOURCE_DIR}/rocblas/include 1327*da0073e9SAndroid Build Coastguard Worker ${ROCM_SOURCE_DIR}/hipsparse/include 1328*da0073e9SAndroid Build Coastguard Worker ) 1329*da0073e9SAndroid Build Coastguard Worker if(USE_FLASH_ATTENTION) 1330*da0073e9SAndroid Build Coastguard Worker target_compile_definitions(torch_hip PRIVATE USE_FLASH_ATTENTION) 1331*da0073e9SAndroid Build Coastguard Worker endif() 1332*da0073e9SAndroid Build Coastguard Worker if(USE_MEM_EFF_ATTENTION) 1333*da0073e9SAndroid Build Coastguard Worker target_compile_definitions(torch_hip PRIVATE USE_MEM_EFF_ATTENTION) 1334*da0073e9SAndroid Build Coastguard Worker endif() 1335*da0073e9SAndroid Build Coastguard Workerendif() 1336*da0073e9SAndroid Build Coastguard Worker 1337*da0073e9SAndroid Build Coastguard Workerif(BUILD_LITE_INTERPRETER) 1338*da0073e9SAndroid Build Coastguard Worker target_compile_definitions(torch_cpu PRIVATE BUILD_LITE_INTERPRETER) 1339*da0073e9SAndroid Build Coastguard Worker # Enable template selective build only when SELECTED_OP_LIST is provided. 1340*da0073e9SAndroid Build Coastguard Worker if(SELECTED_OP_LIST) 1341*da0073e9SAndroid Build Coastguard Worker target_compile_definitions(torch_cpu PRIVATE TEMPLATE_SELECTIVE_BUILD) 1342*da0073e9SAndroid Build Coastguard Worker endif() 1343*da0073e9SAndroid Build Coastguard Workerendif() 1344*da0073e9SAndroid Build Coastguard Worker 1345*da0073e9SAndroid Build Coastguard Worker 1346*da0073e9SAndroid Build Coastguard Worker# Pass USE_DISTRIBUTED to torch_cpu, as some codes in jit/pickler.cpp and 1347*da0073e9SAndroid Build Coastguard Worker# jit/unpickler.cpp need to be compiled only when USE_DISTRIBUTED is set 1348*da0073e9SAndroid Build Coastguard Workerif(USE_DISTRIBUTED) 1349*da0073e9SAndroid Build Coastguard Worker target_compile_definitions(torch_cpu PUBLIC USE_DISTRIBUTED) 1350*da0073e9SAndroid Build Coastguard Worker if(USE_GLOO AND USE_C10D_GLOO) 1351*da0073e9SAndroid Build Coastguard Worker target_compile_definitions(torch_cpu PUBLIC USE_C10D_GLOO) 1352*da0073e9SAndroid Build Coastguard Worker endif() 1353*da0073e9SAndroid Build Coastguard Worker if(USE_UCC AND USE_C10D_UCC) 1354*da0073e9SAndroid Build Coastguard Worker target_compile_definitions(torch_cpu PUBLIC USE_C10D_UCC) 1355*da0073e9SAndroid Build Coastguard Worker if(USE_CUDA) 1356*da0073e9SAndroid Build Coastguard Worker target_compile_definitions(torch_cuda PUBLIC USE_C10D_UCC) 1357*da0073e9SAndroid Build Coastguard Worker endif() 1358*da0073e9SAndroid Build Coastguard Worker endif() 1359*da0073e9SAndroid Build Coastguard Worker if(USE_NCCL AND USE_C10D_NCCL) 1360*da0073e9SAndroid Build Coastguard Worker if(USE_ROCM) 1361*da0073e9SAndroid Build Coastguard Worker target_compile_definitions(torch_hip PUBLIC USE_C10D_NCCL) 1362*da0073e9SAndroid Build Coastguard Worker else() 1363*da0073e9SAndroid Build Coastguard Worker target_compile_definitions(torch_cuda PUBLIC USE_C10D_NCCL) 1364*da0073e9SAndroid Build Coastguard Worker endif() 1365*da0073e9SAndroid Build Coastguard Worker endif() 1366*da0073e9SAndroid Build Coastguard Worker if(USE_MPI AND USE_C10D_MPI) 1367*da0073e9SAndroid Build Coastguard Worker if(CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "GNU") 1368*da0073e9SAndroid Build Coastguard Worker set_source_files_properties( 1369*da0073e9SAndroid Build Coastguard Worker "${TORCH_SRC_DIR}/csrc/distributed/c10d/ProcessGroupMPI.cpp" 1370*da0073e9SAndroid Build Coastguard Worker PROPERTIES COMPILE_FLAGS -Wno-deprecated-declarations) 1371*da0073e9SAndroid Build Coastguard Worker endif() 1372*da0073e9SAndroid Build Coastguard Worker target_compile_definitions(torch_cpu PUBLIC USE_C10D_MPI) 1373*da0073e9SAndroid Build Coastguard Worker endif() 1374*da0073e9SAndroid Build Coastguard Worker # Pass USE_RPC in order to reduce use of 1375*da0073e9SAndroid Build Coastguard Worker # #if defined(USE_DISTRIBUTED) && !defined(_WIN32) 1376*da0073e9SAndroid Build Coastguard Worker # need to be removed when RPC is supported 1377*da0073e9SAndroid Build Coastguard Worker if(NOT WIN32) 1378*da0073e9SAndroid Build Coastguard Worker target_compile_definitions(torch_cpu PUBLIC USE_RPC) 1379*da0073e9SAndroid Build Coastguard Worker endif() 1380*da0073e9SAndroid Build Coastguard Worker # Pass USE_TENSORPIPE to torch_cpu as some parts of rpc/utils.cpp 1381*da0073e9SAndroid Build Coastguard Worker # can only be compiled with USE_TENSORPIPE is set. 1382*da0073e9SAndroid Build Coastguard Worker if(USE_TENSORPIPE) 1383*da0073e9SAndroid Build Coastguard Worker target_compile_definitions(torch_cpu PUBLIC USE_TENSORPIPE) 1384*da0073e9SAndroid Build Coastguard Worker endif() 1385*da0073e9SAndroid Build Coastguard Workerendif() 1386*da0073e9SAndroid Build Coastguard Worker 1387*da0073e9SAndroid Build Coastguard Workerif(NOT INTERN_BUILD_MOBILE) 1388*da0073e9SAndroid Build Coastguard Worker if(${CAFFE2_LINK_LOCAL_PROTOBUF}) 1389*da0073e9SAndroid Build Coastguard Worker target_link_libraries(torch_cpu INTERFACE protobuf::libprotobuf) 1390*da0073e9SAndroid Build Coastguard Worker else() 1391*da0073e9SAndroid Build Coastguard Worker target_link_libraries(torch_cpu PUBLIC protobuf::libprotobuf) 1392*da0073e9SAndroid Build Coastguard Worker endif() 1393*da0073e9SAndroid Build Coastguard Workerendif() 1394*da0073e9SAndroid Build Coastguard Worker 1395*da0073e9SAndroid Build Coastguard Workerif($ENV{TH_BINARY_BUILD}) 1396*da0073e9SAndroid Build Coastguard Worker if(NOT MSVC AND USE_CUDA AND NOT APPLE) 1397*da0073e9SAndroid Build Coastguard Worker # Note [Extra MKL symbols for MAGMA in torch_cpu] 1398*da0073e9SAndroid Build Coastguard Worker # 1399*da0073e9SAndroid Build Coastguard Worker # When we build CUDA libraries and link against MAGMA, MAGMA makes use of 1400*da0073e9SAndroid Build Coastguard Worker # some BLAS symbols in its CPU fallbacks when it has no GPU versions 1401*da0073e9SAndroid Build Coastguard Worker # of kernels. Previously, we ensured the BLAS symbols were filled in by 1402*da0073e9SAndroid Build Coastguard Worker # MKL by linking torch_cuda with BLAS, but when we are statically linking 1403*da0073e9SAndroid Build Coastguard Worker # against MKL (when we do wheel builds), this actually ends up pulling in a 1404*da0073e9SAndroid Build Coastguard Worker # decent chunk of MKL into torch_cuda, inflating our torch_cuda binary 1405*da0073e9SAndroid Build Coastguard Worker # size by 8M. torch_cpu exposes most of the MKL symbols we need, but 1406*da0073e9SAndroid Build Coastguard Worker # empirically we determined that there are four which it doesn't provide. If 1407*da0073e9SAndroid Build Coastguard Worker # we link torch_cpu with these --undefined symbols, we can ensure they 1408*da0073e9SAndroid Build Coastguard Worker # do get pulled in, and then we can avoid statically linking in MKL to 1409*da0073e9SAndroid Build Coastguard Worker # torch_cuda at all! 1410*da0073e9SAndroid Build Coastguard Worker # 1411*da0073e9SAndroid Build Coastguard Worker # We aren't really optimizing for binary size on Windows (and this link 1412*da0073e9SAndroid Build Coastguard Worker # line doesn't work on Windows), so don't do it there. 1413*da0073e9SAndroid Build Coastguard Worker # 1414*da0073e9SAndroid Build Coastguard Worker # These linker commands do not work on OS X, do not attempt this there. 1415*da0073e9SAndroid Build Coastguard Worker # (It shouldn't matter anyway, though, because OS X has dropped CUDA support) 1416*da0073e9SAndroid Build Coastguard Worker foreach(_symb slaed0 daled0 dormql sormql zheevd cheevd) 1417*da0073e9SAndroid Build Coastguard Worker STRING(APPEND _undefined_link_flags " -Wl,--undefined=mkl_lapack_${_symb}") 1418*da0073e9SAndroid Build Coastguard Worker endforeach(_symb) 1419*da0073e9SAndroid Build Coastguard Worker set_target_properties(torch_cpu PROPERTIES LINK_FLAGS ${_undefined_link_flags}) 1420*da0073e9SAndroid Build Coastguard Worker 1421*da0073e9SAndroid Build Coastguard Worker endif() 1422*da0073e9SAndroid Build Coastguard Workerendif() 1423*da0073e9SAndroid Build Coastguard Worker 1424*da0073e9SAndroid Build Coastguard Workertarget_link_libraries(torch_cpu PUBLIC c10) 1425*da0073e9SAndroid Build Coastguard Workertarget_link_libraries(torch_cpu PUBLIC ${Caffe2_PUBLIC_DEPENDENCY_LIBS}) 1426*da0073e9SAndroid Build Coastguard Workertarget_link_libraries(torch_cpu PRIVATE ${Caffe2_DEPENDENCY_LIBS}) 1427*da0073e9SAndroid Build Coastguard Workertarget_link_libraries(torch_cpu PRIVATE ${Caffe2_DEPENDENCY_WHOLE_LINK_LIBS}) 1428*da0073e9SAndroid Build Coastguard Workerif(USE_MPI) 1429*da0073e9SAndroid Build Coastguard Worker target_link_libraries(torch_cpu PRIVATE MPI::MPI_CXX) 1430*da0073e9SAndroid Build Coastguard Workerendif() 1431*da0073e9SAndroid Build Coastguard Workertarget_include_directories(torch_cpu INTERFACE $<INSTALL_INTERFACE:include>) 1432*da0073e9SAndroid Build Coastguard Workertarget_include_directories(torch_cpu PRIVATE ${Caffe2_CPU_INCLUDE}) 1433*da0073e9SAndroid Build Coastguard Workertarget_include_directories(torch_cpu SYSTEM PRIVATE "${Caffe2_DEPENDENCY_INCLUDE}") 1434*da0073e9SAndroid Build Coastguard Worker 1435*da0073e9SAndroid Build Coastguard Workertarget_compile_definitions(torch_cpu PRIVATE CAFFE2_BUILD_MAIN_LIB) 1436*da0073e9SAndroid Build Coastguard Workerif(USE_CUDA) 1437*da0073e9SAndroid Build Coastguard Worker target_compile_definitions(torch_cuda PRIVATE TORCH_CUDA_BUILD_MAIN_LIB) 1438*da0073e9SAndroid Build Coastguard Workerelseif(USE_ROCM) 1439*da0073e9SAndroid Build Coastguard Worker target_compile_definitions(torch_hip PRIVATE TORCH_HIP_BUILD_MAIN_LIB) 1440*da0073e9SAndroid Build Coastguard Workerendif() 1441*da0073e9SAndroid Build Coastguard Worker 1442*da0073e9SAndroid Build Coastguard Workerif(USE_XPU) 1443*da0073e9SAndroid Build Coastguard Worker target_compile_definitions(torch_xpu PRIVATE TORCH_XPU_BUILD_MAIN_LIB) 1444*da0073e9SAndroid Build Coastguard Workerendif() 1445*da0073e9SAndroid Build Coastguard Worker 1446*da0073e9SAndroid Build Coastguard Workerset(EXPERIMENTAL_SINGLE_THREAD_POOL "0" CACHE STRING 1447*da0073e9SAndroid Build Coastguard Worker "Experimental option to use a single thread pool for inter- and intra-op parallelism") 1448*da0073e9SAndroid Build Coastguard Workerif("${EXPERIMENTAL_SINGLE_THREAD_POOL}") 1449*da0073e9SAndroid Build Coastguard Worker target_compile_definitions(torch_cpu PUBLIC "-DAT_EXPERIMENTAL_SINGLE_THREAD_POOL=1") 1450*da0073e9SAndroid Build Coastguard Workerendif() 1451*da0073e9SAndroid Build Coastguard Worker 1452*da0073e9SAndroid Build Coastguard Workerif(MSVC AND BUILD_SHARED_LIBS) 1453*da0073e9SAndroid Build Coastguard Worker # ONNX is linked statically and needs to be exported from this library 1454*da0073e9SAndroid Build Coastguard Worker # to be used externally. Make sure that references match the export. 1455*da0073e9SAndroid Build Coastguard Worker target_compile_options(torch_cpu PRIVATE "-DONNX_BUILD_MAIN_LIB") 1456*da0073e9SAndroid Build Coastguard Workerendif() 1457*da0073e9SAndroid Build Coastguard Worker 1458*da0073e9SAndroid Build Coastguard Workercaffe2_interface_library(torch_cpu torch_cpu_library) 1459*da0073e9SAndroid Build Coastguard Worker 1460*da0073e9SAndroid Build Coastguard Workerif(USE_CUDA) 1461*da0073e9SAndroid Build Coastguard Worker caffe2_interface_library(torch_cuda torch_cuda_library) 1462*da0073e9SAndroid Build Coastguard Workerelseif(USE_ROCM) 1463*da0073e9SAndroid Build Coastguard Worker caffe2_interface_library(torch_hip torch_hip_library) 1464*da0073e9SAndroid Build Coastguard Workerelseif(USE_XPU) 1465*da0073e9SAndroid Build Coastguard Worker caffe2_interface_library(torch_xpu torch_xpu_library) 1466*da0073e9SAndroid Build Coastguard Workerendif() 1467*da0073e9SAndroid Build Coastguard Worker 1468*da0073e9SAndroid Build Coastguard Workercaffe2_interface_library(torch torch_library) 1469*da0073e9SAndroid Build Coastguard Worker 1470*da0073e9SAndroid Build Coastguard Workerinstall(TARGETS torch_cpu torch_cpu_library EXPORT Caffe2Targets DESTINATION "${TORCH_INSTALL_LIB_DIR}") 1471*da0073e9SAndroid Build Coastguard Worker 1472*da0073e9SAndroid Build Coastguard Workerif(USE_CUDA) 1473*da0073e9SAndroid Build Coastguard Worker install(TARGETS torch_cuda torch_cuda_library EXPORT Caffe2Targets DESTINATION "${TORCH_INSTALL_LIB_DIR}") 1474*da0073e9SAndroid Build Coastguard Workerelseif(USE_ROCM) 1475*da0073e9SAndroid Build Coastguard Worker install(TARGETS torch_hip torch_hip_library EXPORT Caffe2Targets DESTINATION "${TORCH_INSTALL_LIB_DIR}") 1476*da0073e9SAndroid Build Coastguard Workerelseif(USE_XPU) 1477*da0073e9SAndroid Build Coastguard Worker install(TARGETS torch_xpu torch_xpu_library EXPORT Caffe2Targets DESTINATION "${TORCH_INSTALL_LIB_DIR}") 1478*da0073e9SAndroid Build Coastguard Workerendif() 1479*da0073e9SAndroid Build Coastguard Worker 1480*da0073e9SAndroid Build Coastguard Workerinstall(TARGETS torch torch_library EXPORT Caffe2Targets DESTINATION "${TORCH_INSTALL_LIB_DIR}") 1481*da0073e9SAndroid Build Coastguard Worker 1482*da0073e9SAndroid Build Coastguard Workertarget_link_libraries(torch PUBLIC torch_cpu_library) 1483*da0073e9SAndroid Build Coastguard Worker 1484*da0073e9SAndroid Build Coastguard Workerif(USE_CUDA) 1485*da0073e9SAndroid Build Coastguard Worker target_link_libraries(torch PUBLIC torch_cuda_library) 1486*da0073e9SAndroid Build Coastguard Workerelseif(USE_ROCM) 1487*da0073e9SAndroid Build Coastguard Worker target_link_libraries(torch PUBLIC torch_hip_library) 1488*da0073e9SAndroid Build Coastguard Workerendif() 1489*da0073e9SAndroid Build Coastguard Worker 1490*da0073e9SAndroid Build Coastguard Workerif(USE_XPU) 1491*da0073e9SAndroid Build Coastguard Worker target_link_libraries(torch PUBLIC torch_xpu_library) 1492*da0073e9SAndroid Build Coastguard Workerendif() 1493*da0073e9SAndroid Build Coastguard Worker 1494*da0073e9SAndroid Build Coastguard Workerif(PRINT_CMAKE_DEBUG_INFO) 1495*da0073e9SAndroid Build Coastguard Worker print_target_properties(torch) 1496*da0073e9SAndroid Build Coastguard Worker print_target_properties(torch_cpu) 1497*da0073e9SAndroid Build Coastguard Workerendif() 1498*da0073e9SAndroid Build Coastguard Worker 1499*da0073e9SAndroid Build Coastguard Worker# Install PDB files for MSVC builds 1500*da0073e9SAndroid Build Coastguard Workerif(MSVC AND BUILD_SHARED_LIBS) 1501*da0073e9SAndroid Build Coastguard Worker install(FILES $<TARGET_PDB_FILE:torch_cpu> DESTINATION "${TORCH_INSTALL_LIB_DIR}" OPTIONAL) 1502*da0073e9SAndroid Build Coastguard Worker if(USE_CUDA) 1503*da0073e9SAndroid Build Coastguard Worker install(FILES $<TARGET_PDB_FILE:torch_cuda> DESTINATION "${TORCH_INSTALL_LIB_DIR}" OPTIONAL) 1504*da0073e9SAndroid Build Coastguard Worker elseif(USE_ROCM) 1505*da0073e9SAndroid Build Coastguard Worker install(FILES $<TARGET_PDB_FILE:torch_hip> DESTINATION "${TORCH_INSTALL_LIB_DIR}" OPTIONAL) 1506*da0073e9SAndroid Build Coastguard Worker endif() 1507*da0073e9SAndroid Build Coastguard Workerendif() 1508*da0073e9SAndroid Build Coastguard Worker 1509*da0073e9SAndroid Build Coastguard Worker# ---[ CUDA library. 1510*da0073e9SAndroid Build Coastguard Workerif(USE_CUDA) 1511*da0073e9SAndroid Build Coastguard Worker # FIXME: If kineto is linked with CUPTI it pollutes torch_cpu with CUDA dependencies 1512*da0073e9SAndroid Build Coastguard Worker # Even worse, it never declares that it depends on cudart, but calls the API, see 1513*da0073e9SAndroid Build Coastguard Worker # https://github.com/pytorch/kineto/blob/aef2f5c0f15e3be52406ac0b885e8689de6bc9f6/libkineto/src/CudaDeviceProperties.cpp#L24 1514*da0073e9SAndroid Build Coastguard Worker if(USE_KINETO AND NOT MSVC AND NOT LIBKINETO_NOCUPTI) 1515*da0073e9SAndroid Build Coastguard Worker target_link_libraries(torch_cpu PRIVATE torch::cudart) 1516*da0073e9SAndroid Build Coastguard Worker endif() 1517*da0073e9SAndroid Build Coastguard Worker target_link_libraries(torch_cuda INTERFACE torch::cudart) 1518*da0073e9SAndroid Build Coastguard Worker target_link_libraries(torch_cuda PUBLIC c10_cuda) 1519*da0073e9SAndroid Build Coastguard Worker if(TARGET torch::nvtx3) 1520*da0073e9SAndroid Build Coastguard Worker target_link_libraries(torch_cuda PRIVATE torch::nvtx3) 1521*da0073e9SAndroid Build Coastguard Worker else() 1522*da0073e9SAndroid Build Coastguard Worker target_link_libraries(torch_cuda PUBLIC torch::nvtoolsext) 1523*da0073e9SAndroid Build Coastguard Worker endif() 1524*da0073e9SAndroid Build Coastguard Worker 1525*da0073e9SAndroid Build Coastguard Worker target_include_directories( 1526*da0073e9SAndroid Build Coastguard Worker torch_cuda INTERFACE $<INSTALL_INTERFACE:include>) 1527*da0073e9SAndroid Build Coastguard Worker target_include_directories( 1528*da0073e9SAndroid Build Coastguard Worker torch_cuda PRIVATE ${Caffe2_GPU_INCLUDE}) 1529*da0073e9SAndroid Build Coastguard Worker target_link_libraries( 1530*da0073e9SAndroid Build Coastguard Worker torch_cuda PRIVATE ${Caffe2_CUDA_DEPENDENCY_LIBS}) 1531*da0073e9SAndroid Build Coastguard Worker 1532*da0073e9SAndroid Build Coastguard Worker # These public dependencies must go after the previous dependencies, as the 1533*da0073e9SAndroid Build Coastguard Worker # order of the libraries in the linker call matters here when statically 1534*da0073e9SAndroid Build Coastguard Worker # linking; libculibos and cublas must be last. 1535*da0073e9SAndroid Build Coastguard Worker target_link_libraries(torch_cuda PUBLIC torch_cpu_library ${Caffe2_PUBLIC_CUDA_DEPENDENCY_LIBS}) 1536*da0073e9SAndroid Build Coastguard Workerendif() 1537*da0073e9SAndroid Build Coastguard Worker 1538*da0073e9SAndroid Build Coastguard Worker# ---[ XPU library. 1539*da0073e9SAndroid Build Coastguard Workerif(USE_XPU) 1540*da0073e9SAndroid Build Coastguard Worker target_link_libraries(torch_xpu INTERFACE torch::xpurt) 1541*da0073e9SAndroid Build Coastguard Worker 1542*da0073e9SAndroid Build Coastguard Worker target_link_libraries(torch_xpu PUBLIC c10_xpu) 1543*da0073e9SAndroid Build Coastguard Worker 1544*da0073e9SAndroid Build Coastguard Worker target_include_directories( 1545*da0073e9SAndroid Build Coastguard Worker torch_xpu INTERFACE $<INSTALL_INTERFACE:include>) 1546*da0073e9SAndroid Build Coastguard Worker target_include_directories( 1547*da0073e9SAndroid Build Coastguard Worker torch_xpu PRIVATE ${Caffe2_XPU_INCLUDE}) 1548*da0073e9SAndroid Build Coastguard Worker target_link_libraries( 1549*da0073e9SAndroid Build Coastguard Worker torch_xpu PRIVATE ${Caffe2_XPU_DEPENDENCY_LIBS}) 1550*da0073e9SAndroid Build Coastguard Worker 1551*da0073e9SAndroid Build Coastguard Worker # Ensure that torch_cpu is ready before being linked by torch_xpu. 1552*da0073e9SAndroid Build Coastguard Worker add_dependencies(torch_xpu torch_cpu) 1553*da0073e9SAndroid Build Coastguard Worker 1554*da0073e9SAndroid Build Coastguard Worker if(MSVC) 1555*da0073e9SAndroid Build Coastguard Worker target_link_libraries(torch_xpu PUBLIC torch_cpu_library) 1556*da0073e9SAndroid Build Coastguard Worker else() 1557*da0073e9SAndroid Build Coastguard Worker include(CheckLinkerFlag) 1558*da0073e9SAndroid Build Coastguard Worker 1559*da0073e9SAndroid Build Coastguard Worker # Check whether the compiler supports '--no-as-needed' and '--as-needed' 1560*da0073e9SAndroid Build Coastguard Worker check_linker_flag(CXX "-Wl,--no-as-needed" HAVE_NO_AS_NEEDED) 1561*da0073e9SAndroid Build Coastguard Worker check_linker_flag(CXX "-Wl,--as-needed" HAVE_AS_NEEDED) 1562*da0073e9SAndroid Build Coastguard Worker 1563*da0073e9SAndroid Build Coastguard Worker if(HAVE_NO_AS_NEEDED AND HAVE_AS_NEEDED) 1564*da0073e9SAndroid Build Coastguard Worker target_link_libraries(torch_xpu PRIVATE 1565*da0073e9SAndroid Build Coastguard Worker "-Wl,--no-as-needed,\"$<TARGET_FILE:torch_cpu>\" -Wl,--as-needed") 1566*da0073e9SAndroid Build Coastguard Worker else() 1567*da0073e9SAndroid Build Coastguard Worker target_link_libraries(torch_xpu PRIVATE "$<TARGET_FILE:torch_cpu>") 1568*da0073e9SAndroid Build Coastguard Worker endif() 1569*da0073e9SAndroid Build Coastguard Worker endif() 1570*da0073e9SAndroid Build Coastguard Workerendif() 1571*da0073e9SAndroid Build Coastguard Worker 1572*da0073e9SAndroid Build Coastguard Worker# ---[ Metal(OSX) modification 1573*da0073e9SAndroid Build Coastguard Workerif(APPLE AND USE_PYTORCH_METAL) 1574*da0073e9SAndroid Build Coastguard Worker if(NOT INTERN_BUILD_MOBILE) 1575*da0073e9SAndroid Build Coastguard Worker include(../cmake/Metal.cmake) 1576*da0073e9SAndroid Build Coastguard Worker # We need to link the system frameworks explicitly 1577*da0073e9SAndroid Build Coastguard Worker find_library(metal NAMES Metal) 1578*da0073e9SAndroid Build Coastguard Worker find_library(mps NAMES MetalPerformanceShaders) 1579*da0073e9SAndroid Build Coastguard Worker find_library(foundation NAMES Foundation) 1580*da0073e9SAndroid Build Coastguard Worker find_library(accelerate NAMES Accelerate) 1581*da0073e9SAndroid Build Coastguard Worker target_link_libraries(torch_cpu PUBLIC ${metal} ${mps} ${foundation} ${accelerate}) 1582*da0073e9SAndroid Build Coastguard Worker endif() 1583*da0073e9SAndroid Build Coastguard Workerendif() 1584*da0073e9SAndroid Build Coastguard Worker 1585*da0073e9SAndroid Build Coastguard Worker 1586*da0073e9SAndroid Build Coastguard Workertarget_link_libraries(torch_cpu PRIVATE flatbuffers) 1587*da0073e9SAndroid Build Coastguard Worker 1588*da0073e9SAndroid Build Coastguard Worker# Note [Global dependencies] 1589*da0073e9SAndroid Build Coastguard Worker# Some libraries (e.g. OpenMPI) like to dlopen plugins after they're initialized, 1590*da0073e9SAndroid Build Coastguard Worker# and they assume that all of their symbols will be available in the global namespace. 1591*da0073e9SAndroid Build Coastguard Worker# On the other hand we try to be good citizens and avoid polluting the symbol 1592*da0073e9SAndroid Build Coastguard Worker# namespaces, so libtorch is loaded with all its dependencies in a local scope. 1593*da0073e9SAndroid Build Coastguard Worker# That usually leads to missing symbol errors at run-time, so to avoid a situation like 1594*da0073e9SAndroid Build Coastguard Worker# this we have to preload those libs in a global namespace. 1595*da0073e9SAndroid Build Coastguard Workerif(BUILD_SHARED_LIBS) 1596*da0073e9SAndroid Build Coastguard Worker add_library(torch_global_deps SHARED ${TORCH_SRC_DIR}/csrc/empty.c) 1597*da0073e9SAndroid Build Coastguard Worker if(HAVE_SOVERSION) 1598*da0073e9SAndroid Build Coastguard Worker set_target_properties(torch_global_deps PROPERTIES 1599*da0073e9SAndroid Build Coastguard Worker VERSION ${TORCH_VERSION} SOVERSION ${TORCH_SOVERSION}) 1600*da0073e9SAndroid Build Coastguard Worker endif() 1601*da0073e9SAndroid Build Coastguard Worker set_target_properties(torch_global_deps PROPERTIES LINKER_LANGUAGE C) 1602*da0073e9SAndroid Build Coastguard Worker if(USE_MPI) 1603*da0073e9SAndroid Build Coastguard Worker target_link_libraries(torch_global_deps MPI::MPI_CXX) 1604*da0073e9SAndroid Build Coastguard Worker endif() 1605*da0073e9SAndroid Build Coastguard Worker if(CAFFE2_USE_MKL) 1606*da0073e9SAndroid Build Coastguard Worker target_link_libraries(torch_global_deps caffe2::mkl) 1607*da0073e9SAndroid Build Coastguard Worker endif() 1608*da0073e9SAndroid Build Coastguard Worker # The CUDA libraries are linked here for a different reason: in some 1609*da0073e9SAndroid Build Coastguard Worker # cases we load these libraries with ctypes, and if they weren't opened 1610*da0073e9SAndroid Build Coastguard Worker # with RTLD_GLOBAL, we'll do the "normal" search process again (and 1611*da0073e9SAndroid Build Coastguard Worker # not find them, because they're usually in non-standard locations) 1612*da0073e9SAndroid Build Coastguard Worker if(USE_CUDA) 1613*da0073e9SAndroid Build Coastguard Worker target_link_libraries(torch_global_deps ${Caffe2_PUBLIC_CUDA_DEPENDENCY_LIBS}) 1614*da0073e9SAndroid Build Coastguard Worker target_link_libraries(torch_global_deps torch::cudart) 1615*da0073e9SAndroid Build Coastguard Worker if(TARGET torch::nvtoolsext) 1616*da0073e9SAndroid Build Coastguard Worker target_link_libraries(torch_global_deps torch::nvtoolsext) 1617*da0073e9SAndroid Build Coastguard Worker endif() 1618*da0073e9SAndroid Build Coastguard Worker endif() 1619*da0073e9SAndroid Build Coastguard Worker install(TARGETS torch_global_deps DESTINATION "${TORCH_INSTALL_LIB_DIR}") 1620*da0073e9SAndroid Build Coastguard Workerendif() 1621*da0073e9SAndroid Build Coastguard Worker 1622*da0073e9SAndroid Build Coastguard Worker# ---[ Caffe2 HIP sources. 1623*da0073e9SAndroid Build Coastguard Workerif(USE_ROCM) 1624*da0073e9SAndroid Build Coastguard Worker # Call again since Caffe2_HIP_INCLUDE is extended with ATen include dirs. 1625*da0073e9SAndroid Build Coastguard Worker # Get Compile Definitions from the directory (FindHIP.cmake bug) 1626*da0073e9SAndroid Build Coastguard Worker get_directory_property(MY_DEFINITIONS COMPILE_DEFINITIONS) 1627*da0073e9SAndroid Build Coastguard Worker if(MY_DEFINITIONS) 1628*da0073e9SAndroid Build Coastguard Worker foreach(_item ${MY_DEFINITIONS}) 1629*da0073e9SAndroid Build Coastguard Worker list(APPEND HIP_CLANG_FLAGS "-D${_item}") 1630*da0073e9SAndroid Build Coastguard Worker endforeach() 1631*da0073e9SAndroid Build Coastguard Worker endif() 1632*da0073e9SAndroid Build Coastguard Worker 1633*da0073e9SAndroid Build Coastguard Worker # Call again since Caffe2_HIP_INCLUDE is extended with ATen include dirs. 1634*da0073e9SAndroid Build Coastguard Worker hip_include_directories(${Caffe2_HIP_INCLUDE}) 1635*da0073e9SAndroid Build Coastguard Worker 1636*da0073e9SAndroid Build Coastguard Worker # Since PyTorch files contain HIP headers, these flags are required for the necessary definitions to be added. 1637*da0073e9SAndroid Build Coastguard Worker target_compile_options(torch_hip PUBLIC ${HIP_CXX_FLAGS}) # experiment 1638*da0073e9SAndroid Build Coastguard Worker 1639*da0073e9SAndroid Build Coastguard Worker target_link_libraries(torch_hip PUBLIC c10_hip) 1640*da0073e9SAndroid Build Coastguard Worker 1641*da0073e9SAndroid Build Coastguard Worker if(NOT INTERN_BUILD_MOBILE) 1642*da0073e9SAndroid Build Coastguard Worker # TODO: Cut this over to ATEN_HIP_FILES_GEN_LIB. At the moment, we 1643*da0073e9SAndroid Build Coastguard Worker # only generate CUDA files 1644*da0073e9SAndroid Build Coastguard Worker # NB: This dependency must be PRIVATE, because we don't install 1645*da0073e9SAndroid Build Coastguard Worker # ATEN_CUDA_FILES_GEN_LIB (it's a synthetic target just to get the 1646*da0073e9SAndroid Build Coastguard Worker # correct dependency from generated files.) 1647*da0073e9SAndroid Build Coastguard Worker target_link_libraries(torch_hip PRIVATE ATEN_CUDA_FILES_GEN_LIB) 1648*da0073e9SAndroid Build Coastguard Worker endif() 1649*da0073e9SAndroid Build Coastguard Worker target_link_libraries(torch_hip PUBLIC torch_cpu_library ${Caffe2_PUBLIC_HIP_DEPENDENCY_LIBS}) 1650*da0073e9SAndroid Build Coastguard Worker target_link_libraries(torch_hip PRIVATE ${Caffe2_HIP_DEPENDENCY_LIBS}) 1651*da0073e9SAndroid Build Coastguard Worker 1652*da0073e9SAndroid Build Coastguard Worker # Since PyTorch files contain HIP headers, this is also needed to capture the includes. 1653*da0073e9SAndroid Build Coastguard Worker target_include_directories(torch_hip PRIVATE ${Caffe2_HIP_INCLUDE}) 1654*da0073e9SAndroid Build Coastguard Worker target_include_directories(torch_hip INTERFACE $<INSTALL_INTERFACE:include>) 1655*da0073e9SAndroid Build Coastguard Workerendif() 1656*da0073e9SAndroid Build Coastguard Worker 1657*da0073e9SAndroid Build Coastguard Workerif(BUILD_STATIC_RUNTIME_BENCHMARK) 1658*da0073e9SAndroid Build Coastguard Worker add_subdirectory(${TORCH_ROOT}/benchmarks/static_runtime ${PROJECT_BINARY_DIR}/bin) 1659*da0073e9SAndroid Build Coastguard Worker add_executable(static_runtime_bench "${STATIC_RUNTIME_BENCHMARK_SRCS}") 1660*da0073e9SAndroid Build Coastguard Worker add_executable(static_runtime_test "${STATIC_RUNTIME_TEST_SRCS}") 1661*da0073e9SAndroid Build Coastguard Worker target_link_libraries(static_runtime_bench torch_library benchmark) 1662*da0073e9SAndroid Build Coastguard Worker target_link_libraries(static_runtime_test torch_library gtest_main) 1663*da0073e9SAndroid Build Coastguard Workerendif() 1664*da0073e9SAndroid Build Coastguard Worker 1665*da0073e9SAndroid Build Coastguard Workerif(BUILD_MOBILE_BENCHMARK) 1666*da0073e9SAndroid Build Coastguard Worker foreach(benchmark_src ${ATen_MOBILE_BENCHMARK_SRCS}) 1667*da0073e9SAndroid Build Coastguard Worker get_filename_component(benchmark_name ${benchmark_src} NAME_WE) 1668*da0073e9SAndroid Build Coastguard Worker add_executable(${benchmark_name} "${benchmark_src}") 1669*da0073e9SAndroid Build Coastguard Worker target_link_libraries(${benchmark_name} torch_library benchmark) 1670*da0073e9SAndroid Build Coastguard Worker target_include_directories(${benchmark_name} PRIVATE $<INSTALL_INTERFACE:include>) 1671*da0073e9SAndroid Build Coastguard Worker target_include_directories(${benchmark_name} PRIVATE $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>) 1672*da0073e9SAndroid Build Coastguard Worker target_include_directories(${benchmark_name} PRIVATE ${ATen_CPU_INCLUDE}) 1673*da0073e9SAndroid Build Coastguard Worker target_link_options(${benchmark_name} PRIVATE "LINKER:--allow-multiple-definition") 1674*da0073e9SAndroid Build Coastguard Worker endforeach() 1675*da0073e9SAndroid Build Coastguard Workerendif() 1676*da0073e9SAndroid Build Coastguard Worker 1677*da0073e9SAndroid Build Coastguard Workerif(BUILD_MOBILE_TEST) 1678*da0073e9SAndroid Build Coastguard Worker foreach(test_src ${ATen_MOBILE_TEST_SRCS}) 1679*da0073e9SAndroid Build Coastguard Worker get_filename_component(test_name ${test_src} NAME_WE) 1680*da0073e9SAndroid Build Coastguard Worker add_executable(${test_name} "${test_src}") 1681*da0073e9SAndroid Build Coastguard Worker target_link_libraries(${test_name} torch_library gtest_main) 1682*da0073e9SAndroid Build Coastguard Worker target_include_directories(${test_name} PRIVATE $<INSTALL_INTERFACE:include>) 1683*da0073e9SAndroid Build Coastguard Worker target_include_directories(${test_name} PRIVATE $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>) 1684*da0073e9SAndroid Build Coastguard Worker target_include_directories(${test_name} PRIVATE ${ATen_CPU_INCLUDE}) 1685*da0073e9SAndroid Build Coastguard Worker add_test(NAME ${test_name} COMMAND $<TARGET_FILE:${test_name}>) 1686*da0073e9SAndroid Build Coastguard Worker endforeach() 1687*da0073e9SAndroid Build Coastguard Workerendif() 1688*da0073e9SAndroid Build Coastguard Worker 1689*da0073e9SAndroid Build Coastguard Worker# ---[ Test binaries. 1690*da0073e9SAndroid Build Coastguard Workerif(BUILD_TEST) 1691*da0073e9SAndroid Build Coastguard Worker 1692*da0073e9SAndroid Build Coastguard Worker foreach(test_src ${ATen_VEC_TEST_SRCS}) 1693*da0073e9SAndroid Build Coastguard Worker foreach(i RANGE ${NUM_CPU_CAPABILITY_NAMES}) 1694*da0073e9SAndroid Build Coastguard Worker get_filename_component(test_name ${test_src} NAME_WE) 1695*da0073e9SAndroid Build Coastguard Worker list(GET CPU_CAPABILITY_NAMES ${i} CPU_CAPABILITY) 1696*da0073e9SAndroid Build Coastguard Worker list(GET CPU_CAPABILITY_FLAGS ${i} FLAGS) 1697*da0073e9SAndroid Build Coastguard Worker separate_arguments(FLAGS UNIX_COMMAND "${FLAGS}") 1698*da0073e9SAndroid Build Coastguard Worker # Build vec with minimal dependencies on all platforms but Windows 1699*da0073e9SAndroid Build Coastguard Worker if(NOT MSVC) 1700*da0073e9SAndroid Build Coastguard Worker add_executable(${test_name}_${CPU_CAPABILITY} "${test_src}" ../aten/src/ATen/native/quantized/AffineQuantizerBase.cpp) 1701*da0073e9SAndroid Build Coastguard Worker # TODO: Get rid of c10 dependency (which is only needed for the implementation of AT_ERROR) 1702*da0073e9SAndroid Build Coastguard Worker target_link_libraries(${test_name}_${CPU_CAPABILITY} c10 sleef gtest_main nlohmann) 1703*da0073e9SAndroid Build Coastguard Worker if(USE_FBGEMM) 1704*da0073e9SAndroid Build Coastguard Worker target_link_libraries(${test_name}_${CPU_CAPABILITY} fbgemm) 1705*da0073e9SAndroid Build Coastguard Worker endif() 1706*da0073e9SAndroid Build Coastguard Worker if(USE_ASAN) 1707*da0073e9SAndroid Build Coastguard Worker if(TARGET Sanitizer::address) 1708*da0073e9SAndroid Build Coastguard Worker target_link_libraries(${test_name}_${CPU_CAPABILITY} Sanitizer::address) 1709*da0073e9SAndroid Build Coastguard Worker endif() 1710*da0073e9SAndroid Build Coastguard Worker if(TARGET Sanitizer::undefined) 1711*da0073e9SAndroid Build Coastguard Worker target_link_libraries(${test_name}_${CPU_CAPABILITY} Sanitizer::undefined) 1712*da0073e9SAndroid Build Coastguard Worker endif() 1713*da0073e9SAndroid Build Coastguard Worker endif() 1714*da0073e9SAndroid Build Coastguard Worker else() 1715*da0073e9SAndroid Build Coastguard Worker add_executable(${test_name}_${CPU_CAPABILITY} "${test_src}") 1716*da0073e9SAndroid Build Coastguard Worker target_link_libraries(${test_name}_${CPU_CAPABILITY} torch_library sleef gtest_main) 1717*da0073e9SAndroid Build Coastguard Worker endif() 1718*da0073e9SAndroid Build Coastguard Worker target_include_directories(${test_name}_${CPU_CAPABILITY} PRIVATE $<INSTALL_INTERFACE:include>) 1719*da0073e9SAndroid Build Coastguard Worker target_include_directories(${test_name}_${CPU_CAPABILITY} PRIVATE $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>) 1720*da0073e9SAndroid Build Coastguard Worker target_include_directories(${test_name}_${CPU_CAPABILITY} PRIVATE ${ATen_CPU_INCLUDE}) 1721*da0073e9SAndroid Build Coastguard Worker target_compile_definitions(${test_name}_${CPU_CAPABILITY} PRIVATE CPU_CAPABILITY=${CPU_CAPABILITY} CPU_CAPABILITY_${CPU_CAPABILITY}) 1722*da0073e9SAndroid Build Coastguard Worker target_compile_options(${test_name}_${CPU_CAPABILITY} PRIVATE ${FLAGS}) 1723*da0073e9SAndroid Build Coastguard Worker if(NOT MSVC) 1724*da0073e9SAndroid Build Coastguard Worker target_compile_options(${test_name}_${CPU_CAPABILITY} PRIVATE -Wno-ignored-qualifiers) 1725*da0073e9SAndroid Build Coastguard Worker endif(NOT MSVC) 1726*da0073e9SAndroid Build Coastguard Worker add_test(NAME ${test_name}_${CPU_CAPABILITY} COMMAND $<TARGET_FILE:${test_name}_${CPU_CAPABILITY}>) 1727*da0073e9SAndroid Build Coastguard Worker endforeach() 1728*da0073e9SAndroid Build Coastguard Worker endforeach() 1729*da0073e9SAndroid Build Coastguard Worker 1730*da0073e9SAndroid Build Coastguard Worker foreach(test_src ${Caffe2_CPU_TEST_SRCS}) 1731*da0073e9SAndroid Build Coastguard Worker get_filename_component(test_name ${test_src} NAME_WE) 1732*da0073e9SAndroid Build Coastguard Worker add_executable(${test_name} "${test_src}") 1733*da0073e9SAndroid Build Coastguard Worker target_link_libraries(${test_name} torch_library gtest_main) 1734*da0073e9SAndroid Build Coastguard Worker if(NOT MSVC) 1735*da0073e9SAndroid Build Coastguard Worker target_link_libraries(${test_name} stdc++) 1736*da0073e9SAndroid Build Coastguard Worker endif() 1737*da0073e9SAndroid Build Coastguard Worker target_include_directories(${test_name} PRIVATE $<INSTALL_INTERFACE:include>) 1738*da0073e9SAndroid Build Coastguard Worker target_include_directories(${test_name} PRIVATE $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>) 1739*da0073e9SAndroid Build Coastguard Worker target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE}) 1740*da0073e9SAndroid Build Coastguard Worker add_test(NAME ${test_name} COMMAND $<TARGET_FILE:${test_name}>) 1741*da0073e9SAndroid Build Coastguard Worker if(INSTALL_TEST) 1742*da0073e9SAndroid Build Coastguard Worker install(TARGETS ${test_name} DESTINATION test) 1743*da0073e9SAndroid Build Coastguard Worker # Install PDB files for MSVC builds 1744*da0073e9SAndroid Build Coastguard Worker if(MSVC AND BUILD_SHARED_LIBS) 1745*da0073e9SAndroid Build Coastguard Worker install(FILES $<TARGET_PDB_FILE:${test_name}> DESTINATION test OPTIONAL) 1746*da0073e9SAndroid Build Coastguard Worker endif() 1747*da0073e9SAndroid Build Coastguard Worker endif() 1748*da0073e9SAndroid Build Coastguard Worker endforeach() 1749*da0073e9SAndroid Build Coastguard Worker 1750*da0073e9SAndroid Build Coastguard Worker if(USE_MPS) 1751*da0073e9SAndroid Build Coastguard Worker foreach(test_src ${Caffe2_MPS_TEST_SRCS}) 1752*da0073e9SAndroid Build Coastguard Worker get_filename_component(test_name ${test_src} NAME_WE) 1753*da0073e9SAndroid Build Coastguard Worker add_executable(${test_name} "${test_src}") 1754*da0073e9SAndroid Build Coastguard Worker find_library(metal NAMES Metal) 1755*da0073e9SAndroid Build Coastguard Worker find_library(foundation NAMES Foundation) 1756*da0073e9SAndroid Build Coastguard Worker target_link_libraries(${test_name} torch_library gtest_main ${metal} ${foundation}) 1757*da0073e9SAndroid Build Coastguard Worker target_include_directories(${test_name} PRIVATE $<INSTALL_INTERFACE:include>) 1758*da0073e9SAndroid Build Coastguard Worker target_include_directories(${test_name} PRIVATE $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>) 1759*da0073e9SAndroid Build Coastguard Worker target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE}) 1760*da0073e9SAndroid Build Coastguard Worker add_test(NAME ${test_name} COMMAND $<TARGET_FILE:${test_name}>) 1761*da0073e9SAndroid Build Coastguard Worker if(INSTALL_TEST) 1762*da0073e9SAndroid Build Coastguard Worker install(TARGETS ${test_name} DESTINATION test) 1763*da0073e9SAndroid Build Coastguard Worker # Install PDB files for MSVC builds 1764*da0073e9SAndroid Build Coastguard Worker if(MSVC AND BUILD_SHARED_LIBS) 1765*da0073e9SAndroid Build Coastguard Worker install(FILES $<TARGET_PDB_FILE:${test_name}> DESTINATION test OPTIONAL) 1766*da0073e9SAndroid Build Coastguard Worker endif() 1767*da0073e9SAndroid Build Coastguard Worker endif() 1768*da0073e9SAndroid Build Coastguard Worker endforeach() 1769*da0073e9SAndroid Build Coastguard Worker endif() 1770*da0073e9SAndroid Build Coastguard Worker 1771*da0073e9SAndroid Build Coastguard Worker if(USE_CUDA) 1772*da0073e9SAndroid Build Coastguard Worker foreach(test_src ${Caffe2_GPU_TEST_SRCS}) 1773*da0073e9SAndroid Build Coastguard Worker get_filename_component(test_name ${test_src} NAME_WE) 1774*da0073e9SAndroid Build Coastguard Worker add_executable(${test_name} "${test_src}") 1775*da0073e9SAndroid Build Coastguard Worker target_link_libraries(${test_name} torch_library gtest_main) 1776*da0073e9SAndroid Build Coastguard Worker if(USE_CUDNN AND ${test_name} MATCHES "cudnn") 1777*da0073e9SAndroid Build Coastguard Worker target_link_libraries(${test_name} torch::cudnn) 1778*da0073e9SAndroid Build Coastguard Worker endif() 1779*da0073e9SAndroid Build Coastguard Worker target_include_directories(${test_name} PRIVATE $<INSTALL_INTERFACE:include>) 1780*da0073e9SAndroid Build Coastguard Worker target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE}) 1781*da0073e9SAndroid Build Coastguard Worker add_test(NAME ${test_name} COMMAND $<TARGET_FILE:${test_name}>) 1782*da0073e9SAndroid Build Coastguard Worker if(INSTALL_TEST) 1783*da0073e9SAndroid Build Coastguard Worker install(TARGETS ${test_name} DESTINATION test) 1784*da0073e9SAndroid Build Coastguard Worker # Install PDB files for MSVC builds 1785*da0073e9SAndroid Build Coastguard Worker if(MSVC AND BUILD_SHARED_LIBS) 1786*da0073e9SAndroid Build Coastguard Worker install(FILES $<TARGET_PDB_FILE:${test_name}> DESTINATION test OPTIONAL) 1787*da0073e9SAndroid Build Coastguard Worker endif() 1788*da0073e9SAndroid Build Coastguard Worker endif() 1789*da0073e9SAndroid Build Coastguard Worker endforeach() 1790*da0073e9SAndroid Build Coastguard Worker if(TARGET context_gpu_test) 1791*da0073e9SAndroid Build Coastguard Worker target_link_libraries(context_gpu_test caffe2::curand caffe2::cublas) 1792*da0073e9SAndroid Build Coastguard Worker endif() 1793*da0073e9SAndroid Build Coastguard Worker endif() 1794*da0073e9SAndroid Build Coastguard Worker 1795*da0073e9SAndroid Build Coastguard Worker if(USE_XPU) 1796*da0073e9SAndroid Build Coastguard Worker foreach(test_src ${Caffe2_XPU_TEST_SRCS}) 1797*da0073e9SAndroid Build Coastguard Worker get_filename_component(test_name ${test_src} NAME_WE) 1798*da0073e9SAndroid Build Coastguard Worker add_executable(${test_name} "${test_src}") 1799*da0073e9SAndroid Build Coastguard Worker target_link_libraries(${test_name} torch_library gtest_main) 1800*da0073e9SAndroid Build Coastguard Worker target_include_directories(${test_name} PRIVATE $<INSTALL_INTERFACE:include>) 1801*da0073e9SAndroid Build Coastguard Worker target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE}) 1802*da0073e9SAndroid Build Coastguard Worker add_test(NAME ${test_name} COMMAND $<TARGET_FILE:${test_name}>) 1803*da0073e9SAndroid Build Coastguard Worker if(INSTALL_TEST) 1804*da0073e9SAndroid Build Coastguard Worker install(TARGETS ${test_name} DESTINATION test) 1805*da0073e9SAndroid Build Coastguard Worker endif() 1806*da0073e9SAndroid Build Coastguard Worker endforeach() 1807*da0073e9SAndroid Build Coastguard Worker endif() 1808*da0073e9SAndroid Build Coastguard Worker 1809*da0073e9SAndroid Build Coastguard Worker if(USE_VULKAN) 1810*da0073e9SAndroid Build Coastguard Worker foreach(test_src ${Caffe2_VULKAN_TEST_SRCS}) 1811*da0073e9SAndroid Build Coastguard Worker get_filename_component(test_name ${test_src} NAME_WE) 1812*da0073e9SAndroid Build Coastguard Worker add_executable(${test_name} "${test_src}") 1813*da0073e9SAndroid Build Coastguard Worker target_link_libraries(${test_name} torch_library gtest_main) 1814*da0073e9SAndroid Build Coastguard Worker target_include_directories(${test_name} PRIVATE $<INSTALL_INTERFACE:include>) 1815*da0073e9SAndroid Build Coastguard Worker target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE}) 1816*da0073e9SAndroid Build Coastguard Worker add_test(NAME ${test_name} COMMAND $<TARGET_FILE:${test_name}>) 1817*da0073e9SAndroid Build Coastguard Worker if(INSTALL_TEST) 1818*da0073e9SAndroid Build Coastguard Worker install(TARGETS ${test_name} DESTINATION test) 1819*da0073e9SAndroid Build Coastguard Worker # Install PDB files for MSVC builds 1820*da0073e9SAndroid Build Coastguard Worker if(MSVC AND BUILD_SHARED_LIBS) 1821*da0073e9SAndroid Build Coastguard Worker install(FILES $<TARGET_PDB_FILE:${test_name}> DESTINATION test OPTIONAL) 1822*da0073e9SAndroid Build Coastguard Worker endif() 1823*da0073e9SAndroid Build Coastguard Worker endif() 1824*da0073e9SAndroid Build Coastguard Worker endforeach() 1825*da0073e9SAndroid Build Coastguard Worker endif() 1826*da0073e9SAndroid Build Coastguard Worker 1827*da0073e9SAndroid Build Coastguard Worker if(USE_ROCM) 1828*da0073e9SAndroid Build Coastguard Worker foreach(test_src ${Caffe2_HIP_TEST_SRCS}) 1829*da0073e9SAndroid Build Coastguard Worker get_filename_component(test_name ${test_src} NAME_WE) 1830*da0073e9SAndroid Build Coastguard Worker add_executable(${test_name} "${test_src}") 1831*da0073e9SAndroid Build Coastguard Worker target_link_libraries(${test_name} torch_library gtest_main) 1832*da0073e9SAndroid Build Coastguard Worker target_include_directories(${test_name} PRIVATE $<INSTALL_INTERFACE:include>) 1833*da0073e9SAndroid Build Coastguard Worker target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE} ${Caffe2_HIP_INCLUDE}) 1834*da0073e9SAndroid Build Coastguard Worker target_compile_options(${test_name} PRIVATE ${HIP_CXX_FLAGS}) 1835*da0073e9SAndroid Build Coastguard Worker add_test(NAME ${test_name} COMMAND $<TARGET_FILE:${test_name}>) 1836*da0073e9SAndroid Build Coastguard Worker if(INSTALL_TEST) 1837*da0073e9SAndroid Build Coastguard Worker install(TARGETS ${test_name} DESTINATION test) 1838*da0073e9SAndroid Build Coastguard Worker endif() 1839*da0073e9SAndroid Build Coastguard Worker endforeach() 1840*da0073e9SAndroid Build Coastguard Worker endif() 1841*da0073e9SAndroid Build Coastguard Workerendif() 1842*da0073e9SAndroid Build Coastguard Worker 1843*da0073e9SAndroid Build Coastguard Workerif(MSVC) 1844*da0073e9SAndroid Build Coastguard Worker # This is used to enable the conforming lambda processor in MSVC 1845*da0073e9SAndroid Build Coastguard Worker # Which allows us to capture constexpr in lambdas 1846*da0073e9SAndroid Build Coastguard Worker # Note that this will be turned on by default for std=c++20 and above 1847*da0073e9SAndroid Build Coastguard Worker # This should be applied globally when https://github.com/pytorch/pytorch/issues/92600 is fixed 1848*da0073e9SAndroid Build Coastguard Worker foreach(tmp ${MEM_EFF_ATTENTION_CUDA_SOURCES}) 1849*da0073e9SAndroid Build Coastguard Worker # MEM_EFF_ATTENTION_CUDA is populated in pytorch/aten/src/ATen/CMakeLists.txt 1850*da0073e9SAndroid Build Coastguard Worker # We iterate over these files, updating paths and adding the compile flag 1851*da0073e9SAndroid Build Coastguard Worker FILE(RELATIVE_PATH tmp_path "${PROJECT_SOURCE_DIR}" "${tmp}") 1852*da0073e9SAndroid Build Coastguard Worker SET(tmp_path "../${tmp_path}") 1853*da0073e9SAndroid Build Coastguard Worker set_source_files_properties(${tmp_path} PROPERTIES COMPILE_FLAGS "-Xcompiler /Zc:lambda") 1854*da0073e9SAndroid Build Coastguard Worker endforeach() 1855*da0073e9SAndroid Build Coastguard Workerendif() 1856*da0073e9SAndroid Build Coastguard Workerendif() 1857