mirror of
https://github.com/saymrwulf/onnxruntime.git
synced 2026-05-16 21:00:14 +00:00
* Simple integration into CMake build system * Adds vcpkg as a submodule and updates build.py to install hosting dependencies * Don't create vcpkg executable if already created * Fixes how CMake finds toolchain file and quick changes to build.py * Removes setting the CMAKE_TOOLCHAIN_FILE in build.py * Adds Boost Beast echo server and Boost program_options * Fixes spacing problem with program_options * Adds Microsoft headers to all the beast server headers * Removes CXX 14 from CMake file * Adds TODO to create configuration class * Run clang-format on main * Better exception handling of program_options * Remove vckpg submodule via ssh * Add vcpkg as https * Adds onnxruntime namespace to call classes * Fixed places where namespaces were anonymous * Adds a TODO to use the logger * Moves all setting namespace shortnames outside of onnxruntime namespace * Add onnxruntime session options to force app to link with it * Set CMAKE_TOOLCHAIN_FILE in build.py * Remove whitespace * Adds initial ONNX Hosting tests (#5) * Add initial test which is failing linking with no main * Adds test_main to get hosting tests working * Deletes useless add_executable line * Merge changes from upstream * Enable CI build in Vienna environment * make hosting_run*.sh executable * Add boost path in unittest * Add boost to TEST_INC_DIR * Add component detection task in ci yaml * Get tests and hosting to compile with re2 (#7) * Add finding boost packages before using it in unit tests * Add predict.proto and build * Ignore unused parameters in generated code * Removes std::regex in favor of re2 (#8) * Removes std::regex in favor of re2 * Adds back find_package in unit tests and fixes regexes * Adds more negative test cases * Adding more protos * Fix google protobuf file path in the cmake file * Ignore unused parameters for pb generated code * Updates onnx submodule (#10) * Remove duplicated lib in link * Follow Google style guide (#11) * Google style names * Adds more * Adds an additional namespace * Fixes header guards to match filepaths * Consume protobuf * Unit Test setup * Json deserialization simple test cases * Split hosting app to lib and exe for testability * Add more cases * Clean up * Add more comments * Update namespace and format the cmake files * Update cmake/external/onnx to checkout 1ec81bc6d49ccae23cd7801515feaadd13082903 * Separate h and cc in http folder * Clean up hosting application cmake file * Enable logging and proper initialize the session * Update const position for GetSession() * Take latest onnx and onnx-tensorrt * Creates configuration header file for program_options (#15) * Sets up PredictRequest callback (#16) * Init version, porting from prototype, e2e works * More executor implementation * Adds function on application startup (#17) * Attempts to pass HostingEnvironment as a shared_ptr * Removes logging and environment from all http classes * Passes http details to OnStart function * Using full protobuf for hosting app build * MLValue2TensorProto * Revert back changes in inference_session.cc * Refactor logger access and predict handler * Create an error handling callback (#19) * Creates error callback * Logs error and returns back as JSON * Catches exceptions in user functions * Refactor executor and add some test cases * Fix build warning * Add onnx as a dependency and in includes to hosting app (#20) * Converter for specific types and more UTs * More unit tests * Update onnx submodule * Fix string data test * Clean up code * Cleanup code * Refactor logging to use unique id per request and take logging level from user (#21) * Removes capturing env by reference in main * Uses uuid for logging ids * Take logging_level as a program argument * Pass logging_level to default_logging_manager * Change name of logger to HostingApp * Log if request id is null * Update GetHttpStatusCode signature * Fix random result issue and camel-case names * Rollback accidentally changed pybin_state.cc * Rollback pybind_state.cc * Generate protobuf status from onnxruntime status * Fix function name in error message * Clean up comments * Support protobuf byte array as input * Refactor predict handler and add unit tests * Add one more test * update cmake/external/onnx * Accept more protobuf MIME types * Update onnx-tensorrt * Add build instruction and usage doc * Address PR comments * Install g++-7 in the Ubuntu 16.04 build image for vcpkg * Fix onnx-tensorrt version * Check return value during initialization * Fix infinite loop when http port is in use (#29) * Simplify Executor.cc by breaking up Run method (#27) * Move request id to Executor constructor * Refactor the logger to respect user verbosity level * Use Arena allocator instead of device * Creates initial executor tests * Merge upstream master (#31) * Remove all possible shared_ptrs (#30) * Changes GetLogger to unique_ptr * Reserve BFloat raw data vector size * Change HostingEnvironment to being passed by lvalue and rvalue references * Change routes to getting passed by const references * Enable full protobuf if building hosting (#32) * Building hosting application no longer needs use_full_protobuf flag * Improve hosting application docs * Move server core into separate folder (#34) * Turn hosting project off by default (#38) * Remove vcpkg as a submodule and download/install Boost from source (#39) * Remove vcpkg * Use CMake script to download and build Boost as part of the project * Remove std::move for const references * Remove error_code.proto * Change wording of executable help description * Better GenerateProtobufStatus description * Remove error_code protobuf from CMake files * Use all outputs if no filter is given * Pass MLValue by const reference in MLValueToTensorProto * Rename variables to argc and argv * Revert "Use all outputs if no filter is given" This reverts commit 7554190ab8e50ba6947648c2f3e2a3d4d9606ce0. * Remove all header guards in favor of #pragma once * Reserve size for output vector and optimize for-loop * Use static libs by default for Boost * Improves documentation for GenerateResponseInJson function * Start Result enum at 0 instead of 1 * Remove g++ from Ubuntu's install.sh * Update cmake files * Give explanation for Result enum type * Remove all program options shortcuts except for -h * Add comments for predict.proto * Fix JSON for error codes * Add notice on hosting application docs that it's in beta * Change HostingEnvironment back to a shared_ptr * Handle empty output_filter field * Fix build break * Refactor unit tests location and groups * First end-to-end test * Add missing log * Missing req id and client req id in error response * Add one test case to validate failed resp header * Add build flag for hosting app end to end tests * Update pipeline setup to run e2e test for CI build * Model Zoo data preparation and tests * Add protobuf tests * Remove mention of needing g++-7 in BUILD.md * Make GetAppLogger const * Make using_raw_data_ match the styling of other fields * Avoid copy of strings when initializing model * Escape JSON strings correctly for error messages (#44) * Escape JSON strings correctly * Add test examples with lots of carriage returns * Add result validation * Remove temporary path * Optimize model zoo test execution * Improve reliability of test cases * Generate _pb2.py during the build time * README for integration tests * Pass environment by pointer instead of shared_ptr to executor (#49) * More Integration tests * Remove generated files * Make session private and use a getter instead (#53) * logging_level to log_level for CLI * Single model prediction shortcut * Health endpoint * Integration tests * Rename to onnxruntime server * Build ONNX Server application on Windows (#57) * Gets Boost compiling on Windows * Fix integer conversion and comparison problems * Use size_t in converter_tests instead of int * Fix hosting integration tests on Windows * Removes checks for port because it's an unsigned short * Fixes comparison between signed and unsigned data types * Pip install protobuf and numpy * Missing test data from the rename change * Fix server app path (#58) * Pass shared_ptr by const reference to avoid ref count increase (#59) * Download test model during test setup * Make download into test_util * Rename ci pipeline for onnx runtime server * Support up to 10MiB http request (#61) * Changes minimum request size to 10MB to support all models in ONNX Model Zoo
100 lines
3.1 KiB
CMake
100 lines
3.1 KiB
CMake
# Copyright (c) Microsoft Corporation. All rights reserved.
|
|
# Licensed under the MIT License.
|
|
|
|
set(BOOST_REQUESTED_VERSION 1.69.0 CACHE STRING "")
|
|
set(BOOST_SHA1 8f32d4617390d1c2d16f26a27ab60d97807b35440d45891fa340fc2648b04406 CACHE STRING "")
|
|
set(BOOST_USE_STATIC_LIBS true CACHE BOOL "")
|
|
|
|
set(BOOST_COMPONENTS program_options system thread)
|
|
|
|
# These components are only needed for Windows
|
|
if(WIN32)
|
|
list(APPEND BOOST_COMPONENTS date_time regex)
|
|
endif()
|
|
|
|
# MSVC doesn't set these variables
|
|
if(WIN32)
|
|
set(CMAKE_STATIC_LIBRARY_PREFIX lib)
|
|
set(CMAKE_SHARED_LIBRARY_PREFIX lib)
|
|
endif()
|
|
|
|
# Set lib prefixes and suffixes for linking
|
|
if(BOOST_USE_STATIC_LIBS)
|
|
set(LIBRARY_PREFIX ${CMAKE_STATIC_LIBRARY_PREFIX})
|
|
set(LIBRARY_SUFFIX ${CMAKE_STATIC_LIBRARY_SUFFIX})
|
|
else()
|
|
set(LIBRARY_PREFIX ${CMAKE_SHARED_LIBRARY_PREFIX})
|
|
set(LIBRARY_SUFFIX ${CMAKE_SHARED_LIBRARY_SUFFIX})
|
|
endif()
|
|
|
|
# Create list of components in Boost format
|
|
foreach(component ${BOOST_COMPONENTS})
|
|
list(APPEND BOOST_COMPONENTS_FOR_BUILD --with-${component})
|
|
endforeach()
|
|
|
|
set(BOOST_ROOT_DIR ${CMAKE_BINARY_DIR}/boost CACHE PATH "")
|
|
|
|
# TODO: let user give their own Boost installation
|
|
macro(DOWNLOAD_BOOST)
|
|
if(NOT BOOST_REQUESTED_VERSION)
|
|
message(FATAL_ERROR "BOOST_REQUESTED_VERSION is not defined.")
|
|
endif()
|
|
|
|
string(REPLACE "." "_" BOOST_REQUESTED_VERSION_UNDERSCORE ${BOOST_REQUESTED_VERSION})
|
|
|
|
set(BOOST_MAYBE_STATIC)
|
|
if(BOOST_USE_STATIC_LIBS)
|
|
set(BOOST_MAYBE_STATIC "link=static")
|
|
endif()
|
|
|
|
set(VARIANT "release")
|
|
if(CMAKE_BUILD_TYPE MATCHES Debug)
|
|
set(VARIANT "debug")
|
|
endif()
|
|
|
|
set(WINDOWS_B2_OPTIONS)
|
|
set(WINDOWS_LIB_NAME_SCHEME)
|
|
if(WIN32)
|
|
set(BOOTSTRAP_FILE_TYPE "bat")
|
|
set(WINDOWS_B2_OPTIONS "toolset=msvc-14.1" "architecture=x86" "address-model=64")
|
|
set(WINDOWS_LIB_NAME_SCHEME "-vc141-mt-gd-x64-1_69")
|
|
else()
|
|
set(BOOTSTRAP_FILE_TYPE "sh")
|
|
endif()
|
|
|
|
message(STATUS "Adding Boost components")
|
|
include(ExternalProject)
|
|
ExternalProject_Add(
|
|
Boost
|
|
URL http://dl.bintray.com/boostorg/release/${BOOST_REQUESTED_VERSION}/source/boost_${BOOST_REQUESTED_VERSION_UNDERSCORE}.tar.bz2
|
|
URL_HASH SHA256=${BOOST_SHA1}
|
|
DOWNLOAD_DIR ${BOOST_ROOT_DIR}
|
|
SOURCE_DIR ${BOOST_ROOT_DIR}
|
|
UPDATE_COMMAND ""
|
|
CONFIGURE_COMMAND ./bootstrap.${BOOTSTRAP_FILE_TYPE} --prefix=${BOOST_ROOT_DIR}
|
|
BUILD_COMMAND ./b2 install ${BOOST_MAYBE_STATIC} --prefix=${BOOST_ROOT_DIR} variant=${VARIANT} ${WINDOWS_B2_OPTIONS} ${BOOST_COMPONENTS_FOR_BUILD}
|
|
BUILD_IN_SOURCE true
|
|
INSTALL_COMMAND ""
|
|
INSTALL_DIR ${BOOST_ROOT_DIR}
|
|
)
|
|
|
|
# Set include folders
|
|
ExternalProject_Get_Property(Boost INSTALL_DIR)
|
|
set(Boost_INCLUDE_DIR ${INSTALL_DIR}/include)
|
|
if(WIN32)
|
|
set(Boost_INCLUDE_DIR ${INSTALL_DIR}/include/boost-1_69)
|
|
endif()
|
|
|
|
# Set libraries to link
|
|
macro(libraries_to_fullpath varname)
|
|
set(${varname})
|
|
foreach(component ${BOOST_COMPONENTS})
|
|
list(APPEND ${varname} ${INSTALL_DIR}/lib/${LIBRARY_PREFIX}boost_${component}${WINDOWS_LIB_NAME_SCHEME}${LIBRARY_SUFFIX})
|
|
endforeach()
|
|
endmacro()
|
|
|
|
libraries_to_fullpath(Boost_LIBRARIES)
|
|
mark_as_advanced(Boost_LIBRARIES Boost_INCLUDE_DIR)
|
|
endmacro()
|
|
|
|
DOWNLOAD_BOOST()
|