Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add rust docs #54

Merged
merged 68 commits into from
Feb 16, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
68 commits
Select commit Hold shift + click to select a range
78280bf
fix build err inbuild with minimal_build conjuncting disable_exceptio…
wejoncy Feb 3, 2023
7b75ebd
Bump http-cache-semantics from 4.1.0 to 4.1.1 in /js/web (#14535)
dependabot[bot] Feb 3, 2023
1059cf6
[ROCm] Fix ROCm build issue caused by REMOVE_ITEM incorrect path (#1…
PeixuanZuo Feb 3, 2023
a6c5ba0
Stable Diffusion CUDA Optimizations (#14428)
tianleiwu Feb 3, 2023
c6c1103
Fix sharing scalar bug (#14544)
pengwa Feb 3, 2023
7eca424
link mpi when either use_mpi or use_nccl enabled (#14467)
pengwa Feb 3, 2023
a5eb616
Enable ability to control whether or not to quantize the bias (#14549)
baijumeswani Feb 3, 2023
638f21b
Upgrade doxygen to fix C API docs build issue (#13950)
natke Feb 3, 2023
999e5bf
Add SLN support for t5 model with beam search (#14429)
wangyems Feb 3, 2023
c1a0fc5
[ROCm][MIGraphX EP]Add back in support for gfx1030 (#14565)
TedThemistokleous Feb 4, 2023
3d75187
[ORTModule] ATen Support for upsample_bilinear (#14519)
centwang Feb 4, 2023
4bb95d7
Change the return type of softmax function to Status (#14559)
PeixuanZuo Feb 6, 2023
2068402
do not use raw pointer for CpuBuffersInfo::buffers (#14574)
jslhcl Feb 6, 2023
b8fb932
[DML EP] Fix ScatterElements registration (#14560)
PatriceVignola Feb 6, 2023
6f2dd10
IdentityBuilder should add Delimit for each input (#14592)
jchen351 Feb 6, 2023
a5dab85
Bump jszip from 3.7.1 to 3.8.0 in /js/web (#14536)
dependabot[bot] Feb 7, 2023
d632f9a
[ROCm] Enable Sampling Op UT on AMD (#14581)
ytaous Feb 7, 2023
cf8bad7
Fix CI failure: temporarily disable real model tests from onnx repo (…
jcwchen Feb 7, 2023
f88a464
try VS 2022 in windowsAI pipeline (#14608)
mszhanyi Feb 7, 2023
742658d
Stable Diffusion CUDA optimizations Part 2 (#14597)
tianleiwu Feb 7, 2023
8de885f
reduce cuda library binary size (#14555)
yufenglee Feb 7, 2023
585f43e
Remove Identical Children Consolidation from default transformer uiti…
jchen351 Feb 7, 2023
b6bec54
Revert mimalloc from v2.0.9 to v2.0.3 (#14603)
RandySheriffH Feb 7, 2023
b539c36
Some kernel changes for TULR (#14517)
wangyems Feb 7, 2023
8f34c8c
Introduce collective ops to ort inference build (#14399)
souptc Feb 7, 2023
cd7098f
fix snpe build (#14616)
HectorSVC Feb 7, 2023
e9ab56f
Adding RunOptions synchronization behaviour to C/C++ API (#14088)
gedoensmax Feb 8, 2023
8ed3dfe
Revert "try VS 2022 in windowsAI pipeline (#14608)" (#14619)
mszhanyi Feb 8, 2023
0b52a88
[Readme] Update table for build pipelines (#14618)
faxu Feb 8, 2023
ba8a00f
[TVM EP] Support zero copying TVM EP output tensor to ONNX Runtime ou…
vvchernov Feb 8, 2023
10ab252
Enable parallel output reordering in MlasReorderOutputNchw() (#13643)
sakogan Feb 8, 2023
767619c
Rework C API to remove new/delete warnings (#14572)
yuslepukhin Feb 8, 2023
0a6b220
Move TRT include_directories to outside scope (#14622)
kevinch-nv Feb 8, 2023
cfda876
Remove torch package from requirements.txt of stable diffusion models…
tianleiwu Feb 8, 2023
30ec8b0
Test and fix optimizers LayerNormFusion, BiasSoftmaxFusion, Transpose…
xadupre Feb 8, 2023
96b95a2
Add rust bindings (#12606)
boydjohnson Feb 8, 2023
875a779
[DORT] Update import path (#14605)
wschin Feb 9, 2023
b53038b
Fix softmax block forward with small element size (#14475)
PeixuanZuo Feb 9, 2023
c5b485d
[prefast:Warning]: C26451 (#14628)
wejoncy Feb 9, 2023
23f0e44
Fix SAL annotation in private DML EP interface (#14639)
jstoecker Feb 9, 2023
02bba3e
Switch to a static local variable to avoid global constexpr warning (…
RyanUnderhill Feb 9, 2023
94bc0fe
Skip all training opset model tests (#14636)
baijumeswani Feb 9, 2023
9a9d45f
Add instructions for previewing docs changes (#12528)
natke Feb 10, 2023
9bd022b
Add TuningContext for TunableOp (#14557)
cloudhan Feb 10, 2023
0de4bc7
add symmetric quant in softmax (#14640)
chenfucn Feb 10, 2023
ba00f3a
fix problem of reduplicate input names (#14163)
guyang3532 Feb 10, 2023
12d9117
Add extra include to fix build w/ CUDA 12 (#14659)
mc-nv Feb 12, 2023
326cf2f
[ROCm] add Softmax Tunable Op (#14541)
PeixuanZuo Feb 13, 2023
22de279
Update typing hints to support python 3.8 for training apis (#14649)
baijumeswani Feb 13, 2023
50fa151
remove device_id parameter out of ExecutionProvider::GetAllocator() (…
jslhcl Feb 13, 2023
6e10088
Update OrtEnv class documentation (#14650)
yuslepukhin Feb 14, 2023
ce9a716
Fix DML release build (#14661)
PatriceVignola Feb 14, 2023
7e9f543
Use miopenGetConvolutionSpatialDim if ROCm5.5 (#14483)
zstreet87 Feb 14, 2023
3703397
[MIGraphX EP] Add support for Mod OP (#14647)
TedThemistokleous Feb 14, 2023
2a4c9a5
[T5 optimization] fuse rel_pos_bias and remove extended mask (#14645)
wangyems Feb 14, 2023
6eeeecf
Remove erroneous function cast (#14673)
yuslepukhin Feb 14, 2023
f638c5a
Stable Diffusion CUDA Optimizations Part 3 (#14646)
tianleiwu Feb 14, 2023
a216c9a
Offline tuning (#14558)
cloudhan Feb 15, 2023
d49cea0
[ROCm] Support for gpt2-based model inferencing (#14675)
ytaous Feb 15, 2023
b1abb8c
skip col2im_pads test (#14685)
mszhanyi Feb 15, 2023
733ca85
Cfu fp16 (#14538)
chenfucn Feb 15, 2023
5605c3d
Make some variables constexpr in orttraining/orttraining/training_ops…
edgchen1 Feb 15, 2023
eb2ac72
Stable Diffusion CUDA Optimizations Part 4 (#14680)
tianleiwu Feb 15, 2023
68db1b6
add noexcept to `InitApi()` and `GetApi()` (#13869)
diablodale Feb 16, 2023
601aab2
[Testing] Arrange parity utilities for onnxruntime parity tests to se…
TedThemistokleous Feb 16, 2023
0f9d243
[ROCm] Add WarpWise Softmax into SoftmaxTunableOp (#14612)
PeixuanZuo Feb 16, 2023
6f99fb9
Stable Diffusion CUDA Optimizations Part 5 (#14706)
tianleiwu Feb 16, 2023
3d7625d
Add Rust docs generation
natke Feb 16, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
16 changes: 10 additions & 6 deletions .github/workflows/publish-c-apidocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,10 @@ on:
push:
branches:
- main
paths:
- include/onnxruntime/core/session

workflow_dispatch:

jobs:
publish:
Expand All @@ -13,18 +17,18 @@ jobs:
- name: Install doxygen and dependencies
run: |
sudo apt update
sudo apt-get install libclang-9-dev
sudo apt-get install libclang-cpp9
wget https://www.doxygen.nl/files/doxygen-1.9.2.linux.bin.tar.gz
tar xvzf doxygen-1.9.2.linux.bin.tar.gz
sudo apt-get install libclang-dev
sudo apt-get install libclang-cpp14
wget https://www.doxygen.nl/files/doxygen-1.9.6.linux.bin.tar.gz
tar xvzf doxygen-1.9.6.linux.bin.tar.gz
- name: Set commit ID
id: vars
run: echo "::set-output name=sha_short::$(git rev-parse --short HEAD)"
- name: Run doxygen
run: |
mkdir -p build/doxygen
cd docs/c_cxx
../../doxygen-1.9.2/bin/doxygen
../../doxygen-1.9.6/bin/doxygen
- uses: actions/checkout@v2
with:
ref: gh-pages
Expand All @@ -36,7 +40,7 @@ jobs:
- name: Create Pull Request
uses: peter-evans/create-pull-request@v3
with:
branch: gh-pages-pr
branch: gh-pages-pr-c-docs
base: gh-pages
title: '[Automated]: Update C/C++ API docs'
commit-message: 'Update C/C++ API docs to commit ${{ steps.vars.outputs.sha_short }}'
Expand Down
43 changes: 43 additions & 0 deletions .github/workflows/publish-rust-apidocs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
name: Update Rust API Docs
on:
push:
branches:
- main
paths:
- rust
workflow_dispatch:


jobs:
publish:
name: Generate Rust docs
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Install tools
run: |
sudo apt-get update
sudo apt-get install rustc
- name: Run rust docs generation
run: |
cd rust
cargo doc --no-deps
- name: Set commit ID
id: vars
run: echo "::set-output name=sha_short::$(git rev-parse --short HEAD)"
- uses: actions/checkout@v2
with:
ref: gh-pages
clean: false
- name: Move API docs into target area
run: |
rm -rf docs/api/rust
mv rust/target/doc docs/api/rust
- name: Create Pull Request
uses: peter-evans/create-pull-request@v3
with:
branch: gh-pages-rustdocs-pr
base: gh-pages
title: '[Automated]: Update Rust API docs'
commit-message: 'Update Rust API docs to commit ${{ steps.vars.outputs.sha_short }}'
add-paths: docs/api/rust
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -57,3 +57,7 @@ onnxruntime/python/version_info.py
# clangd
.cache/
compile_commands.json
# Rust specific
rust/**/target
rust/**/Cargo.lock
rust/onnxruntime/synset.txt
2 changes: 2 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,8 @@ The html docs are generated from markdown using Jekyll and published using GitHu

To update the docs, create a Pull Request against the [gh-pages](https://github.com/microsoft/onnxruntime/tree/gh-pages) branch of the [ONNX Runtime repo](https://github.com/microsoft/onnxruntime).

To preview your changes, you can push to the gh-pages branch in your fork and this will publish a staged version of your changes to <github user name>.github.io/onnxruntime/docs.

Once your PR is approved and merged, your changes will be automatically published to https://onnxruntime.ai/docs.

Note: technical reference docs for developers of ONNX Runtime source code can be found [here](https://github.com/microsoft/onnxruntime/docs)
Expand Down
17 changes: 9 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,14 +23,15 @@


## Build Pipeline Status
|System|CPU|GPU|EPs|
|---|---|---|---|
|Windows|[![Build Status](https://dev.azure.com/onnxruntime/onnxruntime/_apis/build/status/Windows%20CPU%20CI%20Pipeline?label=Windows+CPU)](https://dev.azure.com/onnxruntime/onnxruntime/_build/latest?definitionId=9)|[![Build Status](https://dev.azure.com/onnxruntime/onnxruntime/_apis/build/status/Windows%20GPU%20CI%20Pipeline?label=Windows+GPU)](https://dev.azure.com/onnxruntime/onnxruntime/_build/latest?definitionId=10)|[![Build Status](https://dev.azure.com/onnxruntime/onnxruntime/_apis/build/status/Windows%20GPU%20TensorRT%20CI%20Pipeline?label=Windows+GPU+TensorRT)](https://dev.azure.com/onnxruntime/onnxruntime/_build/latest?definitionId=47)|
|Linux|[![Build Status](https://dev.azure.com/onnxruntime/onnxruntime/_apis/build/status/Linux%20CPU%20CI%20Pipeline?label=Linux+CPU)](https://dev.azure.com/onnxruntime/onnxruntime/_build/latest?definitionId=11)<br>[![Build Status](https://dev.azure.com/onnxruntime/onnxruntime/_apis/build/status/Linux%20CPU%20Minimal%20Build%20E2E%20CI%20Pipeline?label=Linux+CPU+Minimal+Build)](https://dev.azure.com/onnxruntime/onnxruntime/_build/latest?definitionId=64)<br>[![Build Status](https://dev.azure.com/onnxruntime/onnxruntime/_apis/build/status/Linux%20CPU%20x64%20NoContribops%20CI%20Pipeline?label=Linux+CPU+x64+No+Contrib+Ops)](https://dev.azure.com/onnxruntime/onnxruntime/_build/latest?definitionId=110)<br>[![Build Status](https://dev.azure.com/onnxruntime/onnxruntime/_apis/build/status/centos7_cpu?label=Linux+CentOS7)](https://dev.azure.com/onnxruntime/onnxruntime/_build/latest?definitionId=78)<br>[![Build Status](https://dev.azure.com/onnxruntime/onnxruntime/_apis/build/status/orttraining-linux-ci-pipeline?label=Linux+CPU+Training)](https://dev.azure.com/onnxruntime/onnxruntime/_build/latest?definitionId=86)|[![Build Status](https://dev.azure.com/onnxruntime/onnxruntime/_apis/build/status/Linux%20GPU%20CI%20Pipeline?label=Linux+GPU)](https://dev.azure.com/onnxruntime/onnxruntime/_build/latest?definitionId=12)<br>[![Build Status](https://dev.azure.com/onnxruntime/onnxruntime/_apis/build/status/Linux%20GPU%20TensorRT%20CI%20Pipeline?label=Linux+GPU+TensorRT)](https://dev.azure.com/onnxruntime/onnxruntime/_build/latest?definitionId=45)<br>[![Build Status](https://dev.azure.com/onnxruntime/onnxruntime/_apis/build/status/orttraining-distributed?label=Distributed+Training)](https://dev.azure.com/onnxruntime/onnxruntime/_build/latest?definitionId=140)<br>[![Build Status](https://dev.azure.com/onnxruntime/onnxruntime/_apis/build/status/orttraining-linux-gpu-ci-pipeline?label=Linux+GPU+Training)](https://dev.azure.com/onnxruntime/onnxruntime/_build/latest?definitionId=84)|[![Build Status](https://dev.azure.com/onnxruntime/onnxruntime/_apis/build/status/Linux%20OpenVINO%20CI%20Pipeline?label=Linux+OpenVINO)](https://dev.azure.com/onnxruntime/onnxruntime/_build/latest?definitionId=55)|
|Mac|[![Build Status](https://dev.azure.com/onnxruntime/onnxruntime/_apis/build/status/MacOS%20CI%20Pipeline?label=MacOS+CPU)](https://dev.azure.com/onnxruntime/onnxruntime/_build/latest?definitionId=13)<br>[![Build Status](https://dev.azure.com/onnxruntime/onnxruntime/_apis/build/status/MacOS%20NoContribops%20CI%20Pipeline?label=MacOS+NoContribops)](https://dev.azure.com/onnxruntime/onnxruntime/_build/latest?definitionId=65)|||
|Android|||[![Build Status](https://dev.azure.com/onnxruntime/onnxruntime/_apis/build/status/Android%20CI%20Pipeline?label=Android)](https://dev.azure.com/onnxruntime/onnxruntime/_build/latest?definitionId=53)|
|iOS|||[![Build Status](https://dev.azure.com/onnxruntime/onnxruntime/_apis/build/status/iOS%20CI%20Pipeline?label=iOS)](https://dev.azure.com/onnxruntime/onnxruntime/_build/latest?definitionId=134)|
|WebAssembly|||[![Build Status](https://dev.azure.com/onnxruntime/onnxruntime/_apis/build/status/Windows%20WebAssembly%20CI%20Pipeline?label=WASM)](https://dev.azure.com/onnxruntime/onnxruntime/_build/latest?definitionId=161)|
|System|Inference|Training|
|---|---|---|
|Windows|[![Build Status](https://dev.azure.com/onnxruntime/onnxruntime/_apis/build/status/Windows%20CPU%20CI%20Pipeline?label=Windows+CPU)](https://dev.azure.com/onnxruntime/onnxruntime/_build/latest?definitionId=9)<br>[![Build Status](https://dev.azure.com/onnxruntime/onnxruntime/_apis/build/status/Windows%20GPU%20CI%20Pipeline?label=Windows+GPU)](https://dev.azure.com/onnxruntime/onnxruntime/_build/latest?definitionId=10)<br>[![Build Status](https://dev.azure.com/onnxruntime/onnxruntime/_apis/build/status/Windows%20GPU%20TensorRT%20CI%20Pipeline?label=Windows+GPU+TensorRT)](https://dev.azure.com/onnxruntime/onnxruntime/_build/latest?definitionId=47)||
|Linux|[![Build Status](https://dev.azure.com/onnxruntime/onnxruntime/_apis/build/status/Linux%20CPU%20CI%20Pipeline?label=Linux+CPU)](https://dev.azure.com/onnxruntime/onnxruntime/_build/latest?definitionId=11)<br>[![Build Status](https://dev.azure.com/onnxruntime/onnxruntime/_apis/build/status/Linux%20CPU%20Minimal%20Build%20E2E%20CI%20Pipeline?label=Linux+CPU+Minimal+Build)](https://dev.azure.com/onnxruntime/onnxruntime/_build/latest?definitionId=64)<br>[![Build Status](https://dev.azure.com/onnxruntime/onnxruntime/_apis/build/status/Linux%20GPU%20CI%20Pipeline?label=Linux+GPU)](https://dev.azure.com/onnxruntime/onnxruntime/_build/latest?definitionId=12)<br>[![Build Status](https://dev.azure.com/onnxruntime/onnxruntime/_apis/build/status/Linux%20GPU%20TensorRT%20CI%20Pipeline?label=Linux+GPU+TensorRT)](https://dev.azure.com/onnxruntime/onnxruntime/_build/latest?definitionId=45)<br>[![Build Status](https://dev.azure.com/onnxruntime/onnxruntime/_apis/build/status/Linux%20OpenVINO%20CI%20Pipeline?label=Linux+OpenVINO)](https://dev.azure.com/onnxruntime/onnxruntime/_build/latest?definitionId=55)|[![Build Status](https://dev.azure.com/onnxruntime/onnxruntime/_apis/build/status/orttraining-linux-ci-pipeline?label=Linux+CPU+Training)](https://dev.azure.com/onnxruntime/onnxruntime/_build/latest?definitionId=86)<br>[![Build Status](https://dev.azure.com/onnxruntime/onnxruntime/_apis/build/status/orttraining-linux-gpu-ci-pipeline?label=Linux+GPU+Training)](https://dev.azure.com/onnxruntime/onnxruntime/_build/latest?definitionId=84)<br>[![Build Status](https://dev.azure.com/onnxruntime/onnxruntime/_apis/build/status/orttraining/orttraining-ortmodule-distributed?label=Training+Distributed)](https://dev.azure.com/onnxruntime/onnxruntime/_build/latest?definitionId=148)|
|Mac|[![Build Status](https://dev.azure.com/onnxruntime/onnxruntime/_apis/build/status/MacOS%20CI%20Pipeline?label=MacOS+CPU)](https://dev.azure.com/onnxruntime/onnxruntime/_build/latest?definitionId=13)||
|Android|[![Build Status](https://dev.azure.com/onnxruntime/onnxruntime/_apis/build/status/Android%20CI%20Pipeline?label=Android)](https://dev.azure.com/onnxruntime/onnxruntime/_build/latest?definitionId=53)||
|iOS|[![Build Status](https://dev.azure.com/onnxruntime/onnxruntime/_apis/build/status/iOS%20CI%20Pipeline?label=iOS)](https://dev.azure.com/onnxruntime/onnxruntime/_build/latest?definitionId=134)||
|Web|[![Build Status](https://dev.azure.com/onnxruntime/onnxruntime/_apis/build/status/ONNX%20Runtime%20Web%20CI%20Pipeline?label=Web)](https://dev.azure.com/onnxruntime/onnxruntime/_build/latest?definitionId=161)||
|Other|[![Build Status](https://dev.azure.com/onnxruntime/onnxruntime/_apis/build/status/onnxruntime-binary-size-checks-ci-pipeline?repoName=microsoft%2Fonnxruntime&label=Binary+Size+Check)](https://dev.azure.com/onnxruntime/onnxruntime/_build/latest?definitionId=187&repoName=microsoft%2Fonnxruntime)<br>[![Build Status](https://dev.azure.com/onnxruntime/onnxruntime/_apis/build/status/onnxruntime-python-checks-ci-pipeline?label=Python+Checks)](https://dev.azure.com/onnxruntime/onnxruntime/_build/latest?definitionId=164)||


## Data/Telemetry
Expand Down
28 changes: 0 additions & 28 deletions ThirdPartyNotices.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5239,34 +5239,6 @@ PERFORMANCE OF THIS SOFTWARE.

_____

microsoft/vcpkg, https://github.com/microsoft/vcpkg

Copyright (c) Microsoft Corporation

All rights reserved.

MIT License

Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
of the Software, and to permit persons to whom the Software is furnished to do
so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

_____

openssl/openssl, https://github.com/openssl/openssl

Apache License
Expand Down
12 changes: 1 addition & 11 deletions cgmanifests/generated/cgmanifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -282,7 +282,7 @@
"component": {
"type": "git",
"git": {
"commitHash": "28cf67e5b64c704cad993c71f29a24e781bee544",
"commitHash": "f412df7a2b64421e1f1d61fde6055a6ea288e8f5",
"repositoryUrl": "https://github.com/microsoft/mimalloc.git"
},
"comments": "mimalloc"
Expand Down Expand Up @@ -408,16 +408,6 @@
"comments": "cutlass"
}
},
{
"component": {
"type": "git",
"git": {
"commitHash": "6f7ffeb18f99796233b958aaaf14ec7bd4fb64b2",
"repositoryUrl": "https://github.com/microsoft/vcpkg.git"
},
"comments": "vcpkg"
}
},
{
"component": {
"type": "git",
Expand Down
Loading