mirror of
https://github.com/saymrwulf/onnxruntime.git
synced 2026-05-23 22:13:38 +00:00
1. Update manylinux build scripts. This will add [PEP600](https://www.python.org/dev/peps/pep-0600/)(manylinux2 tags) support. numpy has adopted this new feature, we should do the same. The old build script files were copied from https://github.com/pypa/manylinux, but they has been deleted and replaced in the upstream repo. The manylinux repo doesn't have a manylinux2014 branch anymore. So I'm removing the obsolete code, sync the files with the latest master. 2. Update GPU CUDA version from 11.0 to 11.1(after a discussion with PMs). 3. Delete tools/ci_build/github/linux/docker/Dockerfile.manylinux2014_cuda10_2. (Merged the content to tools/ci_build/github/linux/docker/Dockerfile.manylinux2014_cuda11) 4. Modernize the cmake code of how to locate python devel files. It was suggested in https://github.com/onnx/onnx/pull/1631 . 5. Remove `onnxruntime_MSVC_STATIC_RUNTIME` and `onnxruntime_GCC_STATIC_CPP_RUNTIME` build options. Now cmake has builtin support for it. Starting from cmake 3.15, we can use `CMAKE_MSVC_RUNTIME_LIBRARY` cmake variable to choose which MSVC runtime library we want to use. 6. Update Ubuntu docker images that used in our CI build from Ubuntu 18.04 to Ubuntu 20.04. 7. Update GCC version in CUDA 11.1 pipelines from 8.x to 9.3.1 8. Split Linux GPU CI pipeline to two jobs: build the code on a CPU machine then run the tests on another GPU machines. In the past we didn't test our python packages. We only tested the pre-packed files. So we didn't catch the rpath issue in CI build. 9. Add a CentOS machine pool and test our Linux GPU build on real CentOS machines. 10. Rework ARM64 Linux GPU python packaging pipeline. Previously it uses cross-compiling therefore we must static link to C Runtime. But now have pluggable EP API and it doesn't support static link. So I changed to use qemu emulation instead. Now the build is 10x slower than before. But it is more extensible.
128 lines
4.9 KiB
CMake
128 lines
4.9 KiB
CMake
# Copyright (c) Microsoft Corporation. All rights reserved.
|
|
# Licensed under the MIT License.
|
|
|
|
file(GLOB_RECURSE onnxruntime_graph_src CONFIGURE_DEPENDS
|
|
"${ONNXRUNTIME_INCLUDE_DIR}/core/graph/*.h"
|
|
"${ONNXRUNTIME_ROOT}/core/graph/*.h"
|
|
"${ONNXRUNTIME_ROOT}/core/graph/*.cc"
|
|
)
|
|
|
|
# create empty list for any excludes
|
|
set(onnxruntime_graph_src_exclude_patterns)
|
|
|
|
if (onnxruntime_MINIMAL_BUILD)
|
|
# remove schema registration support
|
|
list(APPEND onnxruntime_graph_src_exclude_patterns
|
|
"${ONNXRUNTIME_INCLUDE_DIR}/core/graph/schema_registry.h"
|
|
"${ONNXRUNTIME_ROOT}/core/graph/schema_registry.cc"
|
|
"${ONNXRUNTIME_ROOT}/core/graph/contrib_ops/*defs.h"
|
|
"${ONNXRUNTIME_ROOT}/core/graph/contrib_ops/*defs.cc"
|
|
"${ONNXRUNTIME_ROOT}/core/graph/contrib_ops/onnx_function_util.h"
|
|
"${ONNXRUNTIME_ROOT}/core/graph/contrib_ops/onnx_function_util.cc"
|
|
)
|
|
|
|
# no Function support initially
|
|
list(APPEND onnxruntime_graph_src_exclude_patterns
|
|
"${ONNXRUNTIME_ROOT}/core/graph/function*"
|
|
)
|
|
|
|
# no optimizer support initially
|
|
list(APPEND onnxruntime_graph_src_exclude_patterns
|
|
"${ONNXRUNTIME_ROOT}/core/graph/graph_utils.*"
|
|
)
|
|
endif()
|
|
|
|
if (onnxruntime_DISABLE_CONTRIB_OPS)
|
|
list(APPEND onnxruntime_graph_src_exclude_patterns
|
|
"${ONNXRUNTIME_ROOT}/core/graph/contrib_ops/*.h"
|
|
"${ONNXRUNTIME_ROOT}/core/graph/contrib_ops/*.cc"
|
|
)
|
|
endif()
|
|
|
|
if(NOT onnxruntime_USE_FEATURIZERS)
|
|
list(APPEND onnxruntime_graph_src_exclude_patterns
|
|
"${ONNXRUNTIME_ROOT}/core/graph/featurizers_ops/*.h"
|
|
"${ONNXRUNTIME_ROOT}/core/graph/featurizers_ops/*.cc"
|
|
)
|
|
endif()
|
|
|
|
if(NOT onnxruntime_USE_DML)
|
|
list(APPEND onnxruntime_graph_src_exclude_patterns
|
|
"${ONNXRUNTIME_ROOT}/core/graph/dml_ops/*.h"
|
|
"${ONNXRUNTIME_ROOT}/core/graph/dml_ops/*.cc"
|
|
)
|
|
endif()
|
|
|
|
file(GLOB onnxruntime_graph_src_exclude ${onnxruntime_graph_src_exclude_patterns})
|
|
list(REMOVE_ITEM onnxruntime_graph_src ${onnxruntime_graph_src_exclude})
|
|
|
|
file(GLOB_RECURSE onnxruntime_ir_defs_src CONFIGURE_DEPENDS
|
|
"${ONNXRUNTIME_ROOT}/core/defs/*.cc"
|
|
)
|
|
|
|
if (onnxruntime_ENABLE_TRAINING_OPS AND NOT onnxruntime_ENABLE_TRAINING)
|
|
set(orttraining_graph_src
|
|
"${ORTTRAINING_SOURCE_DIR}/core/graph/training_op_defs.cc"
|
|
"${ORTTRAINING_SOURCE_DIR}/core/graph/training_op_defs.h"
|
|
)
|
|
endif()
|
|
if (onnxruntime_ENABLE_TRAINING)
|
|
file(GLOB_RECURSE orttraining_graph_src CONFIGURE_DEPENDS
|
|
"${ORTTRAINING_SOURCE_DIR}/core/graph/*.h"
|
|
"${ORTTRAINING_SOURCE_DIR}/core/graph/*.cc"
|
|
)
|
|
endif()
|
|
|
|
set(onnxruntime_graph_lib_src ${onnxruntime_graph_src} ${onnxruntime_ir_defs_src})
|
|
if (onnxruntime_ENABLE_TRAINING OR onnxruntime_ENABLE_TRAINING_OPS)
|
|
list(APPEND onnxruntime_graph_lib_src ${orttraining_graph_src})
|
|
endif()
|
|
|
|
onnxruntime_add_static_library(onnxruntime_graph ${onnxruntime_graph_lib_src})
|
|
add_dependencies(onnxruntime_graph onnx_proto flatbuffers)
|
|
onnxruntime_add_include_to_target(onnxruntime_graph onnxruntime_common onnx onnx_proto ${PROTOBUF_LIB} flatbuffers)
|
|
|
|
if (onnxruntime_ENABLE_TRAINING)
|
|
#TODO: the graph library should focus on ONNX IR, it shouldn't depend on math libraries like MKLML/OpenBlas
|
|
target_include_directories(onnxruntime_graph PRIVATE ${MKLML_INCLUDE_DIR})
|
|
endif()
|
|
|
|
target_include_directories(onnxruntime_graph PRIVATE ${ONNXRUNTIME_ROOT})
|
|
|
|
if (onnxruntime_ENABLE_TRAINING OR onnxruntime_ENABLE_TRAINING_OPS)
|
|
target_include_directories(onnxruntime_graph PRIVATE ${ORTTRAINING_ROOT})
|
|
|
|
if (onnxruntime_USE_NCCL)
|
|
target_include_directories(onnxruntime_graph PRIVATE ${NCCL_INCLUDE_DIRS})
|
|
endif()
|
|
endif()
|
|
|
|
set_target_properties(onnxruntime_graph PROPERTIES FOLDER "ONNXRuntime")
|
|
set_target_properties(onnxruntime_graph PROPERTIES LINKER_LANGUAGE CXX)
|
|
install(DIRECTORY ${PROJECT_SOURCE_DIR}/../include/onnxruntime/core/graph DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/onnxruntime/core)
|
|
source_group(TREE ${REPO_ROOT} FILES ${onnxruntime_graph_src} ${onnxruntime_ir_defs_src})
|
|
if (onnxruntime_ENABLE_TRAINING OR onnxruntime_ENABLE_TRAINING_OPS)
|
|
source_group(TREE ${ORTTRAINING_ROOT} FILES ${orttraining_graph_src})
|
|
endif()
|
|
|
|
if (onnxruntime_BUILD_MS_EXPERIMENTAL_OPS)
|
|
target_compile_definitions(onnxruntime_graph PRIVATE BUILD_MS_EXPERIMENTAL_OPS=1)
|
|
endif()
|
|
|
|
if (WIN32)
|
|
set(onnxruntime_graph_static_library_flags
|
|
-IGNORE:4221 # LNK4221: This object file does not define any previously undefined public symbols, so it will not be used by any link operation that consumes this library
|
|
)
|
|
|
|
set_target_properties(onnxruntime_graph PROPERTIES
|
|
STATIC_LIBRARY_FLAGS "${onnxruntime_graph_static_library_flags}")
|
|
|
|
if (NOT onnxruntime_DISABLE_EXCEPTIONS)
|
|
target_compile_options(onnxruntime_graph PRIVATE
|
|
/EHsc # exception handling - C++ may throw, extern "C" will not
|
|
)
|
|
endif()
|
|
|
|
# Add Code Analysis properties to enable C++ Core checks. Have to do it via a props file include.
|
|
set_target_properties(onnxruntime_graph PROPERTIES VS_USER_PROPS ${PROJECT_SOURCE_DIR}/EnableVisualStudioCodeAnalysis.props)
|
|
endif()
|