export AOTI_TORCH_EXPORT on Windows. (#140030)

Fixes #139954

reproduce UT:
```cmd
pytest test/inductor/test_torchinductor_codegen_dynamic_shapes.py -k test_device_assert_dynamic_shapes_cpu
```
Issue:
<img width="856" alt="image" src="https://github.com/user-attachments/assets/5fc501a9-54e5-45ac-9fb3-509ec11a7abe">

After fixing:
![Image](https://github.com/user-attachments/assets/883846fb-8e92-4b9c-9400-daab32382a3a)

Reland:
1. Declare export on Windows explicitly.
2. Support cpu, cuda and xpu devices.

Pull Request resolved: https://github.com/pytorch/pytorch/pull/140030
Approved by: https://github.com/jgong5, https://github.com/desertfire
This commit is contained in:
Xu Han
2025-01-03 05:41:05 +00:00
committed by PyTorch MergeBot
parent 48a05ee773
commit e141cb9c34
4 changed files with 12 additions and 2 deletions

View File

@ -1101,6 +1101,9 @@ if(NOT MSVC)
append_cxx_flag_if_supported("-Wno-error=redundant-move" CMAKE_CXX_FLAGS)
endif()
else()
# Define export functions for AOTI.
add_compile_definitions(EXPORT_AOTI_FUNCTIONS)
# skip unwanted includes from windows.h
add_compile_definitions(WIN32_LEAN_AND_MEAN)
# Windows SDK broke compatibility since version 25131, but introduced this

View File

@ -779,6 +779,7 @@ endif()
if(NOT BUILD_LIBTORCHLESS)
add_library(torch_cpu ${Caffe2_CPU_SRCS})
# target_compile_definitions(torch_cpu PRIVATE -DEXPORT_AOTI_FUNCTIONS)
if(HAVE_SOVERSION)
set_target_properties(torch_cpu PROPERTIES
VERSION ${TORCH_VERSION} SOVERSION ${TORCH_SOVERSION})
@ -958,6 +959,7 @@ elseif(USE_CUDA)
set(CUDA_LINK_LIBRARIES_KEYWORD)
torch_compile_options(torch_cuda) # see cmake/public/utils.cmake
target_compile_definitions(torch_cuda PRIVATE USE_CUDA)
# target_compile_definitions(torch_cuda PRIVATE -DEXPORT_AOTI_FUNCTIONS)
if(USE_CUFILE)
target_link_libraries(torch_cuda PRIVATE torch::cufile)
@ -1049,6 +1051,7 @@ if(USE_XPU)
add_library(torch_xpu ${Caffe2_XPU_SRCS})
torch_compile_options(torch_xpu) # see cmake/public/utils.cmake
target_compile_definitions(torch_xpu PRIVATE USE_XPU)
# target_compile_definitions(torch_xpu PRIVATE -DEXPORT_AOTI_FUNCTIONS)
if(WIN32)
target_compile_options(torch_xpu PRIVATE /permissive-)
endif()

View File

@ -312,6 +312,7 @@ endif()
add_library(torch_python SHARED ${TORCH_PYTHON_SRCS})
torch_compile_options(torch_python) # see cmake/public/utils.cmake
target_compile_definitions(torch_python PRIVATE -DEXPORT_AOTI_FUNCTIONS)
if(APPLE)
target_compile_options(torch_python PRIVATE
$<$<COMPILE_LANGUAGE:CXX>: -fvisibility=default>)

View File

@ -44,8 +44,11 @@
// to symbol clashes at link time if libtorch is included in a DLL and binary
// that depends on the DLL. As a short term fix, we don't export the symbols.
// In the long term, this will need to be addressed when Windows is supported.
// #define AOTI_TORCH_EXPORT __declspec(dllexport)
#define AOTI_TORCH_EXPORT
#ifdef EXPORT_AOTI_FUNCTIONS
#define AOTI_TORCH_EXPORT __declspec(dllexport)
#else
#define AOTI_TORCH_EXPORT __declspec(dllimport)
#endif
#else // !_WIN32
#define AOTI_TORCH_EXPORT
#endif // _WIN32