blob: f0510d9c81f204e8b8b85135a8f02010c8943ace [file] [log] [blame]
set(JIT_TEST_ROOT ${TORCH_ROOT}/test/cpp/jit)
# Build separate libraries the define custom classes/operators used from our Python tests.
# These are intended to be used with torch.ops.load_library() in our Python test suite.
add_library(torchbind_test SHARED
${JIT_TEST_ROOT}/test_custom_class_registrations.h
${JIT_TEST_ROOT}/test_custom_class_registrations.cpp
)
target_link_libraries(torchbind_test torch)
add_library(jitbackend_test SHARED ${JIT_TEST_ROOT}/test_backend_lib.cpp)
target_link_libraries(jitbackend_test torch)
set(BACKEND_WITH_COMPILER_SRCS
${JIT_TEST_ROOT}/test_backend_compiler_lib.cpp
${JIT_TEST_ROOT}/test_backend_compiler_preprocess.cpp
)
if(USE_KINETO)
# Testing edge profiler for backend use
# profiler_edge should only be aded when USE_KINETO flag is on
list(APPEND BACKEND_WITH_COMPILER_SRCS
${TORCH_SRC_DIR}/csrc/jit/mobile/profiler_edge.cpp)
endif()
add_library(backend_with_compiler SHARED
${BACKEND_WITH_COMPILER_SRCS}
)
if(USE_KINETO)
set_target_properties(backend_with_compiler PROPERTIES COMPILE_FLAGS
"-DUSE_KINETO")
endif()
target_link_libraries(backend_with_compiler torch)
if(INSTALL_TEST)
install(TARGETS torchbind_test DESTINATION lib)
install(TARGETS jitbackend_test DESTINATION lib)
install(TARGETS backend_with_compiler DESTINATION lib)
endif()
# Build the cpp gtest binary containing the cpp-only tests.
set(JIT_TEST_SRCS
${JIT_TEST_ROOT}/test_add_if_then_else.cpp
${JIT_TEST_ROOT}/test_alias_analysis.cpp
${JIT_TEST_ROOT}/test_argument_spec.cpp
${JIT_TEST_ROOT}/test_autodiff.cpp
${JIT_TEST_ROOT}/test_load_upgraders.cpp
${JIT_TEST_ROOT}/test_op_replacement.cpp
${JIT_TEST_ROOT}/test_upgrader_utils.cpp
${JIT_TEST_ROOT}/test_backend.cpp
${JIT_TEST_ROOT}/test_class_import.cpp
${JIT_TEST_ROOT}/test_class_parser.cpp
${JIT_TEST_ROOT}/test_class_type.cpp
${JIT_TEST_ROOT}/test_code_template.cpp
${JIT_TEST_ROOT}/test_concat_opt.cpp
${JIT_TEST_ROOT}/test_constant_pooling.cpp
${JIT_TEST_ROOT}/test_cleanup_passes.cpp
${JIT_TEST_ROOT}/test_create_autodiff_subgraphs.cpp
${JIT_TEST_ROOT}/test_custom_class.cpp
${JIT_TEST_ROOT}/test_custom_class_registrations.h
${JIT_TEST_ROOT}/test_custom_class_registrations.cpp
${JIT_TEST_ROOT}/test_custom_operators.cpp
${JIT_TEST_ROOT}/test_dce.cpp
${JIT_TEST_ROOT}/test_fuser.cpp
${JIT_TEST_ROOT}/test_graph_executor.cpp
${JIT_TEST_ROOT}/test_graph_iterator.cpp
${JIT_TEST_ROOT}/test_cs_debug_info_serialization.cpp
${JIT_TEST_ROOT}/test_inliner.cpp
${JIT_TEST_ROOT}/test_interface.cpp
${JIT_TEST_ROOT}/test_interpreter.cpp
${JIT_TEST_ROOT}/test_ir.cpp
${JIT_TEST_ROOT}/test_irparser.cpp
${JIT_TEST_ROOT}/test_jit_type.cpp
${JIT_TEST_ROOT}/test_lite_interpreter.cpp
${JIT_TEST_ROOT}/test_lite_interpreter_direct.cpp
${JIT_TEST_ROOT}/test_lite_trainer.cpp
${JIT_TEST_ROOT}/test_memory_dag.cpp
${JIT_TEST_ROOT}/test_misc.cpp
${JIT_TEST_ROOT}/test_mobile_type_parser.cpp
${JIT_TEST_ROOT}/test_module_api.cpp
${JIT_TEST_ROOT}/test_peephole_optimize.cpp
${JIT_TEST_ROOT}/test_qualified_name.cpp
${JIT_TEST_ROOT}/test_save_load.cpp
${JIT_TEST_ROOT}/test_schema_info.cpp
${JIT_TEST_ROOT}/test_schema_matching.cpp
${JIT_TEST_ROOT}/test_stack_opt.cpp
${JIT_TEST_ROOT}/test_subgraph_matcher.cpp
${JIT_TEST_ROOT}/test_subgraph_rewriter.cpp
${JIT_TEST_ROOT}/test_subgraph_utils.cpp
${JIT_TEST_ROOT}/test_union.cpp
${JIT_TEST_ROOT}/test_utils.cpp
${JIT_TEST_ROOT}/test_script_profile.cpp
${JIT_TEST_ROOT}/test_shape_analysis.cpp
${JIT_TEST_ROOT}/test_jit_logging_levels.cpp
${JIT_TEST_ROOT}/test_file_format.cpp
${JIT_TEST_ROOT}/test_flatbuffer.cpp
)
add_executable(test_jit
${TORCH_ROOT}/test/cpp/common/main.cpp
${JIT_TEST_SRCS}
)
# We also build with UBSAN flag in build_asan.h
if(USE_ASAN)
target_compile_options(test_jit PRIVATE "-fsanitize=undefined")
target_link_libraries(test_jit PRIVATE "-fsanitize=undefined")
endif()
target_link_libraries(
test_jit PRIVATE flatbuffers)
# TODO temporary until we can delete the old gtest polyfills.
target_compile_definitions(test_jit PRIVATE USE_GTEST)
if(USE_SYSTEM_ONNX)
target_link_libraries(test_jit PRIVATE onnx_proto onnx)
endif()
if(USE_MKLDNN)
target_link_libraries(test_jit PRIVATE caffe2::mkldnn)
endif()
set(JIT_TEST_DEPENDENCIES torch gtest jitbackend_test backend_with_compiler)
if(MSVC)
list(APPEND JIT_TEST_DEPENDENCIES onnx_library)
endif(MSVC)
target_link_libraries(test_jit PRIVATE ${JIT_TEST_DEPENDENCIES})
target_include_directories(test_jit PRIVATE ${ATen_CPU_INCLUDE})
if(LINUX)
#Update to target_link_options when CMake version can be upgraded
target_link_libraries(test_jit PRIVATE "-Wl,--no-as-needed,$<TARGET_FILE:jitbackend_test>,$<TARGET_FILE:backend_with_compiler>,--as-needed")
endif()
if(USE_CUDA)
target_compile_definitions(test_jit PRIVATE USE_CUDA)
# Suppress sign compare checks for NVFUSER JIT tests
if(NOT MSVC)
target_compile_options(test_jit PRIVATE $<$<COMPILE_LANGUAGE:CXX>:-Wno-sign-compare>)
endif()
elseif(USE_ROCM)
target_link_libraries(test_jit PRIVATE
${ROCM_HIPRTC_LIB}
${PYTORCH_HIP_LIBRARIES}
${TORCH_CUDA_LIBRARIES})
target_compile_definitions(test_jit PRIVATE USE_ROCM)
endif()
if(INSTALL_TEST)
install(TARGETS test_jit DESTINATION bin)
# Install PDB files for MSVC builds
if(MSVC AND BUILD_SHARED_LIBS)
install(FILES $<TARGET_PDB_FILE:test_jit> DESTINATION bin OPTIONAL)
endif()
endif()