ONNX Runtime: cross-platform, high performance ML inferencing and training accelerator
Find a file
Tiago Koji Castro Shibata 934bb52cfb Merged PR 5805461: Add ARM64X forwarder libs
Add ARM64X implementation libs, to be forwarded to by the ARM64X lib.

From Ben Niu:

For system dlls that are built outside of windows repo and ingested through vpacks or binary check-ins, we always start by trying to port them to ARM64X. However, due to immature support for ARM64X build from Visual Studio 2019, it could be quite uphill to port dlls to ARM64X.

When that happens, we have an alternative without porting the dll to ARM64X. The alternative solution is, we build an ARM64X pure forwarder from windows repo, for example, onnxruntime.dll. That forwarder does nothing but forwards all the ARM64 API calls to a native ARM64 onnxruntime_arm64.dll, and all the x64 APIs to native x64 onnxruntime_amd64.dll. Please see here for an example: 29ae6ca516

At load time, applications still loads the ARM64X forwarder onnxruntime.dll. In an ARM64 process, that forwarder dll will further load the native ARM64 onnxruntime_arm64.dll; otherwise, the x64 onnxruntime_amd64.dll will be loaded, both the ARM64 and x64 dlls are happy.

The onnxruntime_arm64.dll and onnxruntime_amd64.dll are essentially aliases of their native counterparts, but we cannot directly rename existing native dlls in windows build. The reason is about PDB binplacing. If you simply rename a dll, the PDB name embedded in the dll is still unchanged. So you can imagine that if we just rename the native dlls in ARM64 windows build, there will be two renamed native dlls, onnxruntime_arm64.dll and onnxruntime_amd64.dll, sharing the same PDB name onnxruntime.pdb. When binplacing happens (basically moving dll and pdb from os\obj to os\bin), one PDB will overwrite the other. As a result, we either lose the PDB for the ARM64 dll, or the x64 dll.

That’s why we are asking to change the build pipeline to execute the link commands two extra times to produce onnxruntime_arm64/amd64.dll with different pdb names. You don’t need to do the compilation twice, but just the link. See here for an example: https://microsoft.visualstudio.com/DefaultCollection/Xbox/_git/Xbox.ShaderCompiler.WinTools/pullrequest/5291717

Related work items: #31925159
2021-03-17 18:43:21 +00:00
.github Don't mark issues that are marked as enhancement as stale (#6134) 2020-12-14 18:57:40 -08:00
cgmanifests Upgrade TensorRT to v7.2.2 (#6452) 2021-02-18 04:30:47 -08:00
cmake Capitalize DLL name 2021-03-17 11:01:14 -07:00
csharp Update packaging pipelines(#6664) 2021-02-17 09:53:36 -08:00
dockerfiles Setup perf in docker and add features (#6582) 2021-02-25 09:31:03 -08:00
docs Update docs/ONNX_Runtime_for_Mobile_Platforms.md with info about op type reduction. (#6747) 2021-02-23 10:25:23 -08:00
include/onnxruntime/core [CoreML EP] Add options to enable CoreML EP only on hardware with Apple Neural Engine (#6765) 2021-02-22 18:55:27 -08:00
java [Java] Adds extra providers (#6770) 2021-02-24 10:25:05 -08:00
nodejs Removed BUILD.md from master as source now lives in gh-pages (#6709) 2021-02-19 11:34:21 -08:00
onnxruntime Merged PR 5691446: QLinear Graph Support 2021-03-10 20:46:40 +00:00
orttraining Merge remote-tracking branch 'upstream/master' into dmldev_temp 2021-02-25 12:02:34 -08:00
package/rpm Bumping up version to 1.7 (#6736) 2021-02-17 19:07:38 -08:00
samples Removed BUILD.md from master as source now lives in gh-pages (#6709) 2021-02-19 11:34:21 -08:00
server Remove nGraph Execution Provider (#5858) 2020-11-19 16:47:55 -08:00
tools Setup perf in docker and add features (#6582) 2021-02-25 09:31:03 -08:00
winml Minor WinML model test skip name change 2021-02-17 14:27:58 -08:00
.clang-format
.clang-tidy
.dockerignore Update dockerfiles (#5929) 2020-11-25 15:38:22 -08:00
.flake8 Add ability to track per operator types in reduced build config. (#6428) 2021-01-29 07:59:51 +10:00
.gitattributes
.gitignore Add robust dependency check for Python package (#6436) 2021-02-21 15:11:28 -08:00
.gitmodules Upgrade TensorRT to v7.2.2 (#6452) 2021-02-18 04:30:47 -08:00
build.amd64.1411.bat
build.bat
build.sh Add iOS test pipeline and a sample app. (#5298) 2020-09-29 13:53:11 -07:00
CODEOWNERS Update code owners for pytorch frontend team (#6329) 2021-02-02 11:09:10 -08:00
CONTRIBUTING.md Removed BUILD.md from master as source now lives in gh-pages (#6709) 2021-02-19 11:34:21 -08:00
LICENSE Remove year from license (#6658) 2021-02-12 00:25:56 -08:00
NuGet.config Delete nuget extra configs (#6477) 2021-01-27 20:25:45 -08:00
ort.wprp
packages.config Update DirectML 1.4.1 to 1.4.2 for ORT 1.7 (#6780) 2021-02-23 10:52:10 -08:00
README.md Add direct link to build instructions on readme (#6729) 2021-02-19 10:56:50 -08:00
requirements-dev.txt Add ability to track per operator types in reduced build config. (#6428) 2021-01-29 07:59:51 +10:00
requirements-doc.txt
requirements.txt Remove cerberus from wheel package (#4919) 2020-08-26 09:00:03 -07:00
setup.py Add Python 3.9 to pypi metadata 2021-02-12 20:00:17 -08:00
ThirdPartyNotices.txt Merge CPU packaging pipelines (#6480) 2021-02-04 08:38:56 -08:00
VERSION_NUMBER Bumping up version to 1.7 (#6736) 2021-02-17 19:07:38 -08:00

ONNX Runtime is a cross-platform inference and training machine-learning accelerator compatible with deep learning frameworks, PyTorch and TensorFlow/Keras, as well as classical machine learning libraries such as scikit-learn, and more.

ONNX Runtime uses the portable ONNX computation graph format, backed by execution providers optimized for operating systems, drivers and hardware.

Common use cases for ONNX Runtime:

  • Improve inference performance for a wide variety of ML models
  • Reduce time and cost of training large models
  • Train in Python but deploy into a C#/C++/Java app
  • Run with optimized performance on different hardware and operating systems
  • Support models created in several different frameworks

ONNX Runtime inference APIs are stable and production-ready since the 1.0 release in October 2019 and can enable faster customer experiences and lower costs.

ONNX Runtime training feature was introduced in May 2020 in preview. This feature supports acceleration of PyTorch training on multi-node NVIDIA GPUs for transformer models. Additional updates for this feature are coming soon.

Get Started

http://onnxruntime.ai/

Build Pipeline Status

System CPU GPU EPs
Windows Build Status Build Status Build Status
Linux Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Mac Build Status
Build Status
Android Build Status
iOS Build Status

Data/Telemetry

This project may collect usage data and send it to Microsoft to help improve our products and services. See the privacy statement for more details.

Contributions and Feedback

We welcome contributions! Please see the contribution guidelines.

For feature requests or bug reports, please file a GitHub Issue.

For general discussion or questions, please use Github Discussions.

Code of Conduct

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.

License

This project is licensed under the MIT License.