xref: /aosp_15_r20/external/pytorch/aten/CMakeLists.txt (revision da0073e96a02ea20f0ac840b70461e3646d07c45)
1if(NOT INTERN_BUILD_ATEN_OPS)
2  return()
3endif()
4
5# Find modules
6if(NOT INTERN_BUILD_MOBILE)
7  list(APPEND CMAKE_MODULE_PATH /usr/lib/x86_64-linux-gnu/)
8  list(APPEND CMAKE_LIBRARY_PATH /usr/lib/x86_64-linux-gnu/ /usr/lib/aarch64-linux-gnu/)
9endif()
10
11list(APPEND CMAKE_MODULE_PATH
12  ${CMAKE_CURRENT_SOURCE_DIR}/../cmake/Modules
13  ${CMAKE_CURRENT_SOURCE_DIR}/../cmake/public
14  ${CMAKE_CURRENT_SOURCE_DIR}/../cmake/Modules_CUDA_fix)
15
16cmake_policy(SET CMP0012 NEW)
17
18#############################################
19
20set(ATen_CPU_SRCS)
21set(ATen_XPU_SRCS)
22set(ATen_XPU_INCLUDE)
23set(ATen_CPU_TEST_SRCS)
24set(ATen_CPU_INCLUDE)
25set(ATen_THIRD_PARTY_INCLUDE)
26set(ATen_CUDA_CPP_SRCS)
27set(ATen_CUDA_CU_SRCS)
28set(ATen_CUDA_LINALG_SRCS)
29set(ATen_CUDA_SRCS_W_SORT_BY_KEY)
30set(ATen_CUDA_TEST_SRCS)
31set(ATen_CUDA_INCLUDE)
32set(ATen_NVRTC_STUB_SRCS)
33set(ATen_HIP_SRCS)
34set(ATen_HIP_SRCS_W_SORT_BY_KEY)
35set(ATen_HIP_TEST_SRCS)
36set(ATen_HIP_INCLUDE)
37set(ATen_MPS_SRCS)
38set(ATen_MPS_TEST_SRCS)
39set(ATen_XPU_SRCS)
40set(ATen_XPU_INCLUDE)
41set(ATen_XPU_TEST_SRCS)
42set(ATen_VULKAN_TEST_SRCS)
43set(ATen_CPU_DEPENDENCY_LIBS)
44set(ATen_XPU_DEPENDENCY_LIBS)
45set(ATen_CUDA_DEPENDENCY_LIBS)
46set(ATen_HIP_DEPENDENCY_LIBS)
47set(ATen_PUBLIC_CUDA_DEPENDENCY_LIBS)
48set(ATen_PUBLIC_HIP_DEPENDENCY_LIBS)
49set(ATEN_INSTALL_BIN_SUBDIR "bin" CACHE PATH "ATen install binary subdirectory")
50set(ATEN_INSTALL_LIB_SUBDIR "lib" CACHE PATH "ATen install library subdirectory")
51set(ATEN_INSTALL_INCLUDE_SUBDIR "include" CACHE PATH "ATen install include subdirectory")
52set(MEM_EFF_ATTENTION_CUDA_SOURCES)
53
54set(TH_LINK_STYLE STATIC)
55set(TH_CPU_INCLUDE
56  ${CMAKE_CURRENT_SOURCE_DIR}/src
57  ${CMAKE_CURRENT_BINARY_DIR}/src
58  ${CMAKE_BINARY_DIR}/aten/src)
59list(APPEND ATen_CPU_INCLUDE ${TH_CPU_INCLUDE})
60
61if(USE_VULKAN)
62  list(APPEND ATen_CPU_INCLUDE ${CMAKE_BINARY_DIR}/vulkan ${CMAKE_CURRENT_SOURCE_DIR}/../third_party/VulkanMemoryAllocator)
63endif()
64
65# Find the HIP package, set the HIP paths, load the HIP CMake.
66if(USE_ROCM)
67  include(LoadHIP)
68  if(NOT PYTORCH_FOUND_HIP)
69    set(USE_ROCM OFF)
70  endif()
71endif()
72
73# Both CUDA and ROCM are enabled and found. Report an error.
74if(USE_CUDA AND USE_ROCM)
75  message(FATAL_ERROR "Both CUDA and ROCm are enabled and found. PyTorch can only be built with either of them. Please turn one off by using either USE_CUDA=OFF or USE_ROCM=OFF.")
76endif()
77
78if(USE_ROCM)
79  # TODO: AT_HIP_ENABLED (change this once we represent HIP as HIP in
80  # ATen proper)
81  set(AT_CUDA_ENABLED 1)
82  add_subdirectory(src/THH)
83  message("ROCm is enabled.")
84elseif(USE_CUDA)
85  set(AT_CUDA_ENABLED 1)
86  add_subdirectory(src/THC)
87else()
88  message("disabling CUDA because USE_CUDA is set false")
89  set(AT_CUDA_ENABLED 0)
90endif()
91
92if(NOT USE_NNPACK)
93  set(AT_NNPACK_ENABLED 0)
94else()
95  set(AT_NNPACK_ENABLED 1)
96endif()
97
98if(NOT USE_CUSPARSELT)
99  set(AT_CUSPARSELT_ENABLED 0)
100else()
101  set(AT_CUSPARSELT_ENABLED 1)
102endif()
103
104list(APPEND ATen_CPU_INCLUDE
105  ${CMAKE_CURRENT_SOURCE_DIR}/src)
106add_subdirectory(src/ATen)
107
108# Pass source, includes, and libs to parent
109set(ATen_CPU_SRCS ${ATen_CPU_SRCS} PARENT_SCOPE)
110set(ATen_CORE_SRCS ${ATen_CORE_SRCS} PARENT_SCOPE)
111set(ATen_XPU_SRCS ${ATen_XPU_SRCS} PARENT_SCOPE)
112set(ATen_XPU_INCLUDE ${ATen_XPU_INCLUDE} PARENT_SCOPE)
113set(ATen_CUDA_CU_SRCS ${ATen_CUDA_CU_SRCS} PARENT_SCOPE)
114set(ATen_CUDA_CPP_SRCS ${ATen_CUDA_CPP_SRCS} PARENT_SCOPE)
115set(ATen_CUDA_LINALG_SRCS ${ATen_CUDA_LINALG_SRCS} PARENT_SCOPE)
116set(ATen_CUDA_SRCS_W_SORT_BY_KEY ${ATen_CUDA_SRCS_W_SORT_BY_KEY} PARENT_SCOPE)
117set(ATen_CUDA_CU_SRCS_W_SORT_BY_KEY ${ATen_CUDA_CU_SRCS_W_SORT_BY_KEY} PARENT_SCOPE)
118set(ATen_HIP_SRCS ${ATen_HIP_SRCS} PARENT_SCOPE)
119set(ATen_MPS_SRCS ${ATen_MPS_SRCS} PARENT_SCOPE)
120set(ATen_MPS_TEST_SRCS ${ATen_MPS_TEST_SRCS} PARENT_SCOPE)
121set(ATen_HIP_SRCS_W_SORT_BY_KEY ${ATen_HIP_SRCS_W_SORT_BY_KEY} PARENT_SCOPE)
122set(ATen_XPU_SRCS ${ATen_XPU_SRCS} PARENT_SCOPE)
123set(ATen_XPU_TEST_SRCS ${ATen_XPU_TEST_SRCS} PARENT_SCOPE)
124set(ATen_NVRTC_STUB_SRCS ${ATen_NVRTC_STUB_SRCS} PARENT_SCOPE)
125set(ATen_CPU_TEST_SRCS ${ATen_CPU_TEST_SRCS} PARENT_SCOPE)
126set(ATen_CUDA_TEST_SRCS ${ATen_CUDA_TEST_SRCS} PARENT_SCOPE)
127set(ATen_HIP_TEST_SRCS ${ATen_HIP_TEST_SRCS} PARENT_SCOPE)
128set(ATen_VULKAN_TEST_SRCS ${ATen_VULKAN_TEST_SRCS} PARENT_SCOPE)
129set(ATen_MOBILE_BENCHMARK_SRCS ${ATen_MOBILE_BENCHMARK_SRCS} PARENT_SCOPE)
130set(ATen_MOBILE_TEST_SRCS ${ATen_MOBILE_TEST_SRCS} PARENT_SCOPE)
131set(ATen_VEC_TEST_SRCS ${ATen_VEC_TEST_SRCS} PARENT_SCOPE)
132set(ATen_CPU_INCLUDE ${ATen_CPU_INCLUDE} PARENT_SCOPE)
133set(ATen_CUDA_INCLUDE ${ATen_CUDA_INCLUDE} PARENT_SCOPE)
134set(ATen_HIP_INCLUDE ${ATen_HIP_INCLUDE} PARENT_SCOPE)
135set(ATen_XPU_INCLUDE ${ATen_XPU_INCLUDE} PARENT_SCOPE)
136set(ATen_THIRD_PARTY_INCLUDE ${ATen_THIRD_PARTY_INCLUDE} PARENT_SCOPE)
137set(ATen_CPU_DEPENDENCY_LIBS ${ATen_CPU_DEPENDENCY_LIBS} PARENT_SCOPE)
138set(ATen_XPU_DEPENDENCY_LIBS ${ATen_XPU_DEPENDENCY_LIBS} PARENT_SCOPE)
139set(ATen_CUDA_DEPENDENCY_LIBS ${ATen_CUDA_DEPENDENCY_LIBS} PARENT_SCOPE)
140set(ATen_HIP_DEPENDENCY_LIBS ${ATen_HIP_DEPENDENCY_LIBS} PARENT_SCOPE)
141set(ATen_CORE_TEST_SRCS ${ATen_CORE_TEST_SRCS} PARENT_SCOPE)
142set(FLASH_ATTENTION_CUDA_SOURCES ${FLASH_ATTENTION_CUDA_SOURCES} PARENT_SCOPE)
143set(MEM_EFF_ATTENTION_CUDA_SOURCES ${MEM_EFF_ATTENTION_CUDA_SOURCES} PARENT_SCOPE)
144set(ATen_ATTENTION_KERNEL_SRCS ${ATen_ATTENTION_KERNEL_SRCS} PARENT_SCOPE)
145