216 строки
6.0 KiB
CMake
216 строки
6.0 KiB
CMake
# Copyright (c) Microsoft Corporation. All rights reserved.
|
|
# Licensed under the MIT License.
|
|
|
|
# Reduced ops build helpers
|
|
|
|
# In a reduced ops build, the reduction is performed by updating source files.
|
|
# Rather than modifying the source files directly, updated versions will be
|
|
# saved to another location in the build directory: ${op_reduction_root}.
|
|
set(op_reduction_root "${CMAKE_BINARY_DIR}/op_reduction.generated")
|
|
|
|
# This helper function replaces the relevant original source files with their
|
|
# updated, reduced ops versions in `all_srcs`.
|
|
function(substitute_op_reduction_srcs all_srcs)
|
|
# files that are potentially updated in a reduced ops build
|
|
set(original_srcs
|
|
"${ONNXRUNTIME_ROOT}/contrib_ops/cpu/cpu_contrib_kernels.cc"
|
|
"${ONNXRUNTIME_ROOT}/contrib_ops/cuda/cuda_contrib_kernels.cc"
|
|
"${ONNXRUNTIME_ROOT}/core/providers/cpu/cpu_execution_provider.cc"
|
|
"${ONNXRUNTIME_ROOT}/core/providers/cuda/cuda_execution_provider.cc"
|
|
"${ONNXRUNTIME_ROOT}/core/providers/op_kernel_type_control_overrides.inc"
|
|
"${ORTTRAINING_SOURCE_DIR}/training_ops/cpu/cpu_training_kernels.cc"
|
|
"${ORTTRAINING_SOURCE_DIR}/training_ops/cuda/cuda_training_kernels.cc"
|
|
)
|
|
|
|
set(replacement_srcs)
|
|
|
|
foreach(original_src ${original_srcs})
|
|
string(FIND "${${all_srcs}}" "${original_src}" idx)
|
|
if(idx EQUAL "-1")
|
|
continue()
|
|
endif()
|
|
|
|
file(RELATIVE_PATH src_relative_path "${REPO_ROOT}" "${original_src}")
|
|
set(replacement_src "${op_reduction_root}/${src_relative_path}")
|
|
|
|
message("File '${original_src}' substituted with reduced op version '${replacement_src}'.")
|
|
|
|
string(REPLACE "${original_src}" "${replacement_src}" ${all_srcs} "${${all_srcs}}")
|
|
|
|
list(APPEND replacement_srcs "${replacement_src}")
|
|
endforeach()
|
|
|
|
if(replacement_srcs)
|
|
source_group(TREE "${op_reduction_root}" PREFIX "op_reduction.generated" FILES ${replacement_srcs})
|
|
endif()
|
|
|
|
set(${all_srcs} "${${all_srcs}}" PARENT_SCOPE)
|
|
endfunction()
|
|
|
|
# This helper function adds reduced ops build-specific include directories to
|
|
# `target`.
|
|
function(add_op_reduction_include_dirs target)
|
|
set(op_reduction_include_dirs "${op_reduction_root}/onnxruntime")
|
|
if (onnxruntime_ENABLE_TRAINING_OPS)
|
|
list(APPEND op_reduction_include_dirs "${op_reduction_root}/orttraining")
|
|
endif()
|
|
# add include directories BEFORE so they are searched first, giving op reduction file paths precedence
|
|
target_include_directories(${target} BEFORE PRIVATE ${op_reduction_include_dirs})
|
|
endfunction()
|
|
|
|
|
|
if(onnxruntime_USE_VITISAI)
|
|
set(PROVIDERS_VITISAI onnxruntime_providers_vitisai)
|
|
endif()
|
|
if(onnxruntime_USE_CUDA)
|
|
set(PROVIDERS_CUDA onnxruntime_providers_cuda)
|
|
endif()
|
|
if(onnxruntime_USE_COREML)
|
|
set(PROVIDERS_COREML onnxruntime_providers_coreml coreml_proto)
|
|
endif()
|
|
if(onnxruntime_USE_NNAPI_BUILTIN)
|
|
set(PROVIDERS_NNAPI onnxruntime_providers_nnapi)
|
|
endif()
|
|
if(onnxruntime_USE_JSEP)
|
|
set(PROVIDERS_JS onnxruntime_providers_js)
|
|
endif()
|
|
if(onnxruntime_USE_QNN)
|
|
set(PROVIDERS_QNN onnxruntime_providers_qnn)
|
|
endif()
|
|
if(onnxruntime_USE_RKNPU)
|
|
set(PROVIDERS_RKNPU onnxruntime_providers_rknpu)
|
|
endif()
|
|
if(onnxruntime_USE_VSINPU)
|
|
set(PROVIDERS_VSINPU onnxruntime_providers_vsinpu)
|
|
endif()
|
|
if(onnxruntime_USE_DML)
|
|
set(PROVIDERS_DML onnxruntime_providers_dml)
|
|
endif()
|
|
if(onnxruntime_USE_MIGRAPHX)
|
|
set(PROVIDERS_MIGRAPHX onnxruntime_providers_migraphx)
|
|
endif()
|
|
if(onnxruntime_USE_WINML)
|
|
set(PROVIDERS_WINML onnxruntime_providers_winml)
|
|
endif()
|
|
if(onnxruntime_USE_ACL)
|
|
set(PROVIDERS_ACL onnxruntime_providers_acl)
|
|
endif()
|
|
if(onnxruntime_USE_ARMNN)
|
|
set(PROVIDERS_ARMNN onnxruntime_providers_armnn)
|
|
endif()
|
|
if(onnxruntime_USE_ROCM)
|
|
set(PROVIDERS_ROCM onnxruntime_providers_rocm)
|
|
endif()
|
|
if (onnxruntime_USE_TVM)
|
|
set(PROVIDERS_TVM onnxruntime_providers_tvm)
|
|
endif()
|
|
if (onnxruntime_USE_XNNPACK)
|
|
set(PROVIDERS_XNNPACK onnxruntime_providers_xnnpack)
|
|
endif()
|
|
if(onnxruntime_USE_WEBNN)
|
|
set(PROVIDERS_WEBNN onnxruntime_providers_webnn)
|
|
endif()
|
|
if(onnxruntime_USE_WEBGPU)
|
|
set(PROVIDERS_WEBGPU onnxruntime_providers_webgpu)
|
|
endif()
|
|
if (onnxruntime_USE_CANN)
|
|
set(PROVIDERS_CANN onnxruntime_providers_cann)
|
|
endif()
|
|
if (onnxruntime_USE_AZURE)
|
|
set(PROVIDERS_AZURE onnxruntime_providers_azure)
|
|
endif()
|
|
|
|
|
|
if(onnxruntime_USE_SNPE)
|
|
include(onnxruntime_snpe_provider.cmake)
|
|
endif()
|
|
|
|
include(onnxruntime_providers_cpu.cmake)
|
|
if (onnxruntime_USE_CUDA)
|
|
include(onnxruntime_providers_cuda.cmake)
|
|
endif()
|
|
|
|
if (onnxruntime_USE_DNNL)
|
|
include(onnxruntime_providers_dnnl.cmake)
|
|
endif()
|
|
|
|
if (onnxruntime_USE_TENSORRT)
|
|
include(onnxruntime_providers_tensorrt.cmake)
|
|
endif()
|
|
|
|
if (onnxruntime_USE_VITISAI)
|
|
include(onnxruntime_providers_vitisai.cmake)
|
|
endif()
|
|
|
|
if (onnxruntime_USE_OPENVINO)
|
|
include(onnxruntime_providers_openvino.cmake)
|
|
endif()
|
|
|
|
if (onnxruntime_USE_COREML)
|
|
include(onnxruntime_providers_coreml.cmake)
|
|
endif()
|
|
|
|
if (onnxruntime_USE_WEBNN)
|
|
include(onnxruntime_providers_webnn.cmake)
|
|
endif()
|
|
|
|
if (onnxruntime_USE_WEBGPU)
|
|
include(onnxruntime_providers_webgpu.cmake)
|
|
endif()
|
|
|
|
if (onnxruntime_USE_NNAPI_BUILTIN)
|
|
include(onnxruntime_providers_nnapi.cmake)
|
|
endif()
|
|
|
|
if (onnxruntime_USE_JSEP)
|
|
include(onnxruntime_providers_js.cmake)
|
|
endif()
|
|
|
|
if (onnxruntime_USE_QNN)
|
|
include(onnxruntime_providers_qnn.cmake)
|
|
endif()
|
|
|
|
if (onnxruntime_USE_RKNPU)
|
|
include(onnxruntime_providers_rknpu.cmake)
|
|
endif()
|
|
|
|
if (onnxruntime_USE_DML)
|
|
include(onnxruntime_providers_dml.cmake)
|
|
endif()
|
|
|
|
if (onnxruntime_USE_MIGRAPHX)
|
|
include(onnxruntime_providers_migraphx.cmake)
|
|
endif()
|
|
|
|
if (onnxruntime_USE_ACL)
|
|
include(onnxruntime_providers_acl.cmake)
|
|
endif()
|
|
|
|
if (onnxruntime_USE_ARMNN)
|
|
include(onnxruntime_providers_armnn.cmake)
|
|
endif()
|
|
|
|
if (onnxruntime_USE_ROCM)
|
|
include(onnxruntime_providers_rocm.cmake)
|
|
endif()
|
|
|
|
if (onnxruntime_USE_TVM)
|
|
include(onnxruntime_providers_tvm.cmake)
|
|
endif()
|
|
|
|
if (onnxruntime_USE_VSINPU)
|
|
include(onnxruntime_providers_vsinpu.cmake)
|
|
endif()
|
|
|
|
if (onnxruntime_USE_XNNPACK)
|
|
include(onnxruntime_providers_xnnpack.cmake)
|
|
endif()
|
|
|
|
if (onnxruntime_USE_CANN)
|
|
include(onnxruntime_providers_cann.cmake)
|
|
endif()
|
|
|
|
if (onnxruntime_USE_AZURE)
|
|
include(onnxruntime_providers_azure.cmake)
|
|
endif()
|