async-tensorrt

Crates.ioasync-tensorrt
lib.rsasync-tensorrt
version0.9.0
sourcesrc
created_at2023-06-12 11:43:38.466811
updated_at2024-11-04 10:19:16.956915
descriptionAsync TensorRT for Rust.
homepage
repositoryhttps://github.com/oddity-ai/async-tensorrt
max_upload_size
id888115
size132,568
Gerwin van der Lugt (gerwin3)

documentation

README

async-tensorrt

Asynchronous wrapper for TensorRT.

version license docs

ℹ️ Introduction

async-tensorrt is an async wrapper for TensorRT.

🛠 S️️tatus

This project is still a work-in-progress, and will contain bugs. Some parts of the API have not been flushed out yet. Use with caution.

📦 Setup

Make sure you have the necessary dependencies installed:

  • CUDA toolkit 11 or later.
  • TensorRT 8 or later.

Then, add the following to your dependencies in Cargo.toml:

async-tensorrt = "0.8"

⚠️ Safety warning

This crate is intentionally unsafe. Due to the limitations of how async Rust currently works, usage of the async interface of this crate can cause undefined behavior in some rare cases. It is up to the user of this crate to prevent this from happening by following these rules:

  • No futures produced by functions in this crate may be leaked (either by std::mem::forget or otherwise).
  • Use a well-behaved runtime (one that will not forget your future) like Tokio or async-std.

Internally, the Future type in this crate schedules a CUDA call on a separate runtime thread. To make the API as ergonomic as possible, the lifetime bounds of the closure (that is sent to the runtime) are tied to the future object. To enforce this bound, the future will block and wait if it is dropped. This mechanism relies on the future being driven to completion, and not forgotten. This is not necessarily guaranteed. Unsafety may arise if either the runtime gives up on or forgets the future, or the caller manually polls the future, then forgets it.

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Commit count: 28

cargo fmt