Nick Fitzgerald
5ad82de3c5
|
4 years ago | |
---|---|---|
.. | ||
src | 4 years ago | |
.gitignore | 4 years ago | |
Cargo.lock | 4 years ago | |
Cargo.toml | 4 years ago | |
LICENSE | 4 years ago | |
README.md | 4 years ago |
README.md
wasi-nn Rust Bindings
This crate contains API bindings for wasi-nn system calls in Rust. It is similar in purpose to the wasi bindings but this crate provides access to the optional neural network functionality from WebAssembly.
NOTE: These bindings are experimental (use at your own risk) and subject to upstream changes in the wasi-nn specification.
NOTE: In the future this crate may be (should be) moved to its own repository, like the wasi bindings.
Use
Depend on this crate in your Cargo.toml
:
[dependencies]
wasi-nn = "0.1.0"
Use the wasi-nn APIs in your application:
use wasi_nn;
unsafe {
wasi_nn::load(
&[&xml.into_bytes(), &weights],
wasi_nn::GRAPH_ENCODING_OPENVINO,
wasi_nn::EXECUTION_TARGET_CPU,
)
.unwrap()
}
Compile the application to WebAssembly:
cargo build --target=wasm32-wasi
Run the generated Wasm in a runtime supporting wasi-nn. Currently Wasmtime has experimental support using the Wasmtime APIs; see main.rs for an example of how this is accomplished.
Generation
This crate contains code (src/generated.rs
) generated by
witx-bindgen
.
To regenerate this code, run witx-bindgen
against the wasi-nn
WITX file:
.../crates/witx-bindgen$ cargo run .../wasi-nn/phases/ephemeral/witx/wasi_ephemeral_nn.witx
License
This project is licensed under the Apache 2.0 license. See LICENSE for more details.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this project by you, as defined in the Apache-2.0 license, shall be licensed as above, without any additional terms or conditions.