onnxruntime
139 строк · 8.0 Кб
1# Copyright (c) Microsoft Corporation. All rights reserved.
2# Licensed under the MIT License.
3
4set(onnxruntime_optimizer_src_patterns)
5
6if (onnxruntime_MINIMAL_BUILD)
7# we include a couple of files so a library is produced and we minimize other changes to the build setup.
8# if the transformer base class is unused it will be excluded from the final binary size
9list(APPEND onnxruntime_optimizer_src_patterns
10"${ONNXRUNTIME_INCLUDE_DIR}/core/optimizer/graph_transformer.h"
11"${ONNXRUNTIME_ROOT}/core/optimizer/graph_transformer.cc"
12)
13
14if (onnxruntime_EXTENDED_MINIMAL_BUILD)
15list(APPEND onnxruntime_optimizer_src_patterns
16"${ONNXRUNTIME_INCLUDE_DIR}/core/optimizer/graph_transformer_utils.h"
17"${ONNXRUNTIME_ROOT}/core/optimizer/conv_activation_fusion.cc"
18"${ONNXRUNTIME_ROOT}/core/optimizer/conv_activation_fusion.h"
19"${ONNXRUNTIME_ROOT}/core/optimizer/graph_transformer_utils.cc"
20"${ONNXRUNTIME_ROOT}/core/optimizer/initializer.cc"
21"${ONNXRUNTIME_ROOT}/core/optimizer/initializer.h"
22"${ONNXRUNTIME_ROOT}/core/optimizer/matmul_nbits_fusion.cc"
23"${ONNXRUNTIME_ROOT}/core/optimizer/matmul_nbits_fusion.h"
24"${ONNXRUNTIME_ROOT}/core/optimizer/nhwc_transformer.cc"
25"${ONNXRUNTIME_ROOT}/core/optimizer/nhwc_transformer.h"
26"${ONNXRUNTIME_ROOT}/core/optimizer/qdq_transformer/qdq_final_cleanup.cc"
27"${ONNXRUNTIME_ROOT}/core/optimizer/qdq_transformer/qdq_final_cleanup.h"
28"${ONNXRUNTIME_ROOT}/core/optimizer/qdq_transformer/qdq_util.cc"
29"${ONNXRUNTIME_ROOT}/core/optimizer/qdq_transformer/qdq_util.h"
30"${ONNXRUNTIME_ROOT}/core/optimizer/qdq_transformer/selectors_actions/qdq_actions.cc"
31"${ONNXRUNTIME_ROOT}/core/optimizer/qdq_transformer/selectors_actions/qdq_actions.h"
32"${ONNXRUNTIME_ROOT}/core/optimizer/qdq_transformer/selectors_actions/qdq_selector_action_transformer.cc"
33"${ONNXRUNTIME_ROOT}/core/optimizer/qdq_transformer/selectors_actions/qdq_selector_action_transformer.h"
34"${ONNXRUNTIME_ROOT}/core/optimizer/qdq_transformer/selectors_actions/qdq_selectors.cc"
35"${ONNXRUNTIME_ROOT}/core/optimizer/qdq_transformer/selectors_actions/qdq_selectors.h"
36"${ONNXRUNTIME_ROOT}/core/optimizer/qdq_transformer/selectors_actions/shared/utils.cc"
37"${ONNXRUNTIME_ROOT}/core/optimizer/qdq_transformer/selectors_actions/shared/utils.h"
38"${ONNXRUNTIME_ROOT}/core/optimizer/selectors_actions/actions.cc"
39"${ONNXRUNTIME_ROOT}/core/optimizer/selectors_actions/actions.h"
40"${ONNXRUNTIME_ROOT}/core/optimizer/selectors_actions/helpers.cc"
41"${ONNXRUNTIME_ROOT}/core/optimizer/selectors_actions/helpers.cc"
42"${ONNXRUNTIME_ROOT}/core/optimizer/selectors_actions/helpers.h"
43"${ONNXRUNTIME_ROOT}/core/optimizer/selectors_actions/helpers.h"
44"${ONNXRUNTIME_ROOT}/core/optimizer/selectors_actions/selector_action_transformer_apply_contexts.h"
45"${ONNXRUNTIME_ROOT}/core/optimizer/selectors_actions/selector_action_transformer.cc"
46"${ONNXRUNTIME_ROOT}/core/optimizer/selectors_actions/selector_action_transformer.h"
47# files required for layout transformation
48"${ONNXRUNTIME_ROOT}/core/optimizer/layout_transformation/layout_transformation.h"
49"${ONNXRUNTIME_ROOT}/core/optimizer/layout_transformation/layout_transformation.cc"
50"${ONNXRUNTIME_ROOT}/core/optimizer/layout_transformation/layout_transformation_potentially_added_ops.h"
51# files required for transpose optimization post-layout transformation
52"${ONNXRUNTIME_ROOT}/core/optimizer/transpose_optimization/optimizer_api.h"
53"${ONNXRUNTIME_ROOT}/core/optimizer/transpose_optimization/onnx_transpose_optimization.h"
54"${ONNXRUNTIME_ROOT}/core/optimizer/transpose_optimization/onnx_transpose_optimization.cc"
55"${ONNXRUNTIME_ROOT}/core/optimizer/transpose_optimization/ort_optimizer_api_impl.cc"
56"${ONNXRUNTIME_ROOT}/core/optimizer/transpose_optimization/ort_optimizer_utils.h"
57"${ONNXRUNTIME_ROOT}/core/optimizer/transpose_optimization/ort_transpose_optimization.h"
58"${ONNXRUNTIME_ROOT}/core/optimizer/transpose_optimization/ort_transpose_optimization.cc"
59"${ONNXRUNTIME_ROOT}/core/optimizer/utils.cc"
60"${ONNXRUNTIME_ROOT}/core/optimizer/utils.h"
61)
62endif()
63else()
64list(APPEND onnxruntime_optimizer_src_patterns
65"${ONNXRUNTIME_INCLUDE_DIR}/core/optimizer/*.h"
66"${ONNXRUNTIME_ROOT}/core/optimizer/*.h"
67"${ONNXRUNTIME_ROOT}/core/optimizer/*.cc"
68"${ONNXRUNTIME_ROOT}/core/optimizer/compute_optimizer/*.h"
69"${ONNXRUNTIME_ROOT}/core/optimizer/compute_optimizer/*.cc"
70"${ONNXRUNTIME_ROOT}/core/optimizer/layout_transformation/*.h"
71"${ONNXRUNTIME_ROOT}/core/optimizer/layout_transformation/*.cc"
72"${ONNXRUNTIME_ROOT}/core/optimizer/qdq_transformer/*.h"
73"${ONNXRUNTIME_ROOT}/core/optimizer/qdq_transformer/*.cc"
74"${ONNXRUNTIME_ROOT}/core/optimizer/qdq_transformer/selectors_actions/*.h"
75"${ONNXRUNTIME_ROOT}/core/optimizer/qdq_transformer/selectors_actions/*.cc"
76"${ONNXRUNTIME_ROOT}/core/optimizer/qdq_transformer/selectors_actions/shared/utils.h"
77"${ONNXRUNTIME_ROOT}/core/optimizer/qdq_transformer/selectors_actions/shared/utils.cc"
78"${ONNXRUNTIME_ROOT}/core/optimizer/selectors_actions/*.h"
79"${ONNXRUNTIME_ROOT}/core/optimizer/selectors_actions/*.cc"
80"${ONNXRUNTIME_ROOT}/core/optimizer/transpose_optimization/*.h"
81"${ONNXRUNTIME_ROOT}/core/optimizer/transpose_optimization/*.cc"
82)
83endif()
84
85if (onnxruntime_ENABLE_TRAINING)
86list(APPEND onnxruntime_optimizer_src_patterns
87"${ORTTRAINING_SOURCE_DIR}/core/optimizer/*.h"
88"${ORTTRAINING_SOURCE_DIR}/core/optimizer/*.cc"
89"${ORTTRAINING_SOURCE_DIR}/core/optimizer/compute_optimizer/*.h"
90"${ORTTRAINING_SOURCE_DIR}/core/optimizer/compute_optimizer/*.cc"
91"${ORTTRAINING_SOURCE_DIR}/core/optimizer/memory_optimizer/*.h"
92"${ORTTRAINING_SOURCE_DIR}/core/optimizer/memory_optimizer/*.cc"
93)
94endif()
95
96file(GLOB onnxruntime_optimizer_srcs CONFIGURE_DEPENDS ${onnxruntime_optimizer_src_patterns})
97
98source_group(TREE ${REPO_ROOT} FILES ${onnxruntime_optimizer_srcs})
99
100if (onnxruntime_EXTERNAL_TRANSFORMER_SRC_PATH)
101set(onnxruntime_external_transformer_src_patterns)
102list(APPEND onnxruntime_external_transformer_src_patterns
103"${onnxruntime_EXTERNAL_TRANSFORMER_SRC_PATH}/*.cc"
104"${onnxruntime_EXTERNAL_TRANSFORMER_SRC_PATH}/*.cpp"
105)
106file(GLOB onnxruntime_external_transformer_src ${onnxruntime_external_transformer_src_patterns})
107list(APPEND onnxruntime_optimizer_srcs ${onnxruntime_external_transformer_src})
108endif()
109
110onnxruntime_add_static_library(onnxruntime_optimizer ${onnxruntime_optimizer_srcs})
111
112onnxruntime_add_include_to_target(onnxruntime_optimizer onnxruntime_common onnxruntime_framework onnx onnx_proto ${PROTOBUF_LIB} flatbuffers::flatbuffers Boost::mp11 safeint_interface)
113target_include_directories(onnxruntime_optimizer PRIVATE ${ONNXRUNTIME_ROOT})
114if (onnxruntime_ENABLE_TRAINING)
115target_include_directories(onnxruntime_optimizer PRIVATE ${ORTTRAINING_ROOT})
116onnxruntime_add_include_to_target(onnxruntime_optimizer nlohmann_json::nlohmann_json)
117if (onnxruntime_ENABLE_TRAINING_TORCH_INTEROP)
118onnxruntime_add_include_to_target(onnxruntime_optimizer Python::Module)
119endif()
120endif()
121if (onnxruntime_ENABLE_TRITON)
122target_link_libraries(onnxruntime_optimizer PRIVATE nlohmann_json::nlohmann_json)
123onnxruntime_add_include_to_target(onnxruntime_optimizer Python::Module)
124endif()
125add_dependencies(onnxruntime_optimizer ${onnxruntime_EXTERNAL_DEPENDENCIES})
126set_target_properties(onnxruntime_optimizer PROPERTIES FOLDER "ONNXRuntime")
127
128if (NOT onnxruntime_BUILD_SHARED_LIB)
129install(DIRECTORY ${PROJECT_SOURCE_DIR}/../include/onnxruntime/core/optimizer DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/onnxruntime/core)
130install(TARGETS onnxruntime_optimizer
131ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
132LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
133RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
134FRAMEWORK DESTINATION ${CMAKE_INSTALL_BINDIR})
135endif()
136
137if (onnxruntime_USE_ROCM)
138add_dependencies(onnxruntime_optimizer generate_hipified_files)
139endif()
140