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,$,$,--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 $<$:-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 $ DESTINATION bin OPTIONAL) endif() endif()