mirror of
https://github.com/pytorch/pytorch.git
synced 2025-10-20 21:14:14 +08:00
Summary: Kineto traces use microsecond level granularity because of chrome tracing defaults to that precision. Fix by adding preprocessor flag to TARGETS and BUCK files. Also remove any unnecessary ns to us conversions made in the profiler itself. This diff contains profiler changes only. Libkineto changes found in D54964435. Test Plan: Check JSON and chrome tracing to make sure values are as expected. Tracing with flags enabled should have ns precision. Tracings without flags should be same as master. Zoomer: https://www.internalfb.com/intern/zoomer/?profiling_run_fbid=796886748550189 Ran key_averages() to make sure FunctionEvent code working as expected: -- ------------ ------------ Name Self CPU % Self CPU CPU total % CPU total CPU time avg Self CUDA Self CUDA % CUDA total CUDA time avg # of Calls ProfilerStep* 0.74% 3.976ms 64.40% 346.613ms 69.323ms 0.000us 0.00% 61.710ms 12.342ms 5 Optimizer.zero_grad#SGD.zero_grad 0.76% 4.109ms 0.76% 4.109ms 821.743us 0.000us 0.00% 0.000us 0.000us 5 ## forward ## 6.89% 37.057ms 27.19% 146.320ms 29.264ms 0.000us 0.00% 58.708ms 11.742ms 5 aten::conv2d 0.22% 1.176ms 7.74% 41.658ms 157.199us 0.000us 0.00% 27.550ms 103.962us 265 aten::convolution 0.79% 4.273ms 7.52% 40.482ms 152.762us 0.000us 0.00% 27.550ms 103.962us 265 aten::_convolution 0.69% 3.688ms 6.73% 36.209ms 136.637us 0.000us 0.00% 27.550ms 103.962us 265 aten::cudnn_convolution 6.04% 32.520ms 6.04% 32.520ms 122.719us 27.550ms 8.44% 27.550ms 103.962us 265 aten::add_ 2.42% 13.045ms 2.42% 13.045ms 30.694us 12.700ms 3.89% 12.700ms 29.882us 425 aten::batch_norm 0.19% 1.027ms 8.12% 43.717ms 164.971us 0.000us 0.00% 16.744ms 63.185us 265 aten::_batch_norm_impl_index 0.31% 1.646ms 7.93% 42.691ms 161.096us 0.000us 0.00% 16.744ms 63.185us 265 ------------------------------------------------------- ------------ ------------ ------------ ------------ ------------ ------------ ------------ ------------ ------------ ------------ Differential Revision: D55925068 Pull Request resolved: https://github.com/pytorch/pytorch/pull/123650 Approved by: https://github.com/aaronenyeshi
163 lines
5.5 KiB
CMake
163 lines
5.5 KiB
CMake
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 -DTMP_LIBKINETO_NANOSECOND")
|
|
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(NOT MSVC)
|
|
target_compile_options(test_jit PRIVATE $<$<COMPILE_LANGUAGE:CXX>:-Wno-unused-variable>)
|
|
endif()
|
|
|
|
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()
|