{"id":13809647,"url":"https://github.com/oddity-ai/async-cuda","last_synced_at":"2025-07-14T10:31:35.630Z","repository":{"id":174661366,"uuid":"652561950","full_name":"oddity-ai/async-cuda","owner":"oddity-ai","description":"Asynchronous CUDA for Rust.","archived":false,"fork":false,"pushed_at":"2024-11-04T10:16:59.000Z","size":132,"stargazers_count":33,"open_issues_count":0,"forks_count":6,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-06-30T08:57:47.121Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/oddity-ai.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE-APACHE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-06-12T10:22:11.000Z","updated_at":"2025-05-16T06:48:22.000Z","dependencies_parsed_at":null,"dependency_job_id":"72a3003f-9631-4eb9-85a4-ff2efe5aeb20","html_url":"https://github.com/oddity-ai/async-cuda","commit_stats":{"total_commits":45,"total_committers":2,"mean_commits":22.5,"dds":"0.022222222222222254","last_synced_commit":"9a0b8e9c12b07176e5d39fa2615ef09bb350c2f3"},"previous_names":["oddity-ai/async-cuda"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/oddity-ai/async-cuda","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oddity-ai%2Fasync-cuda","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oddity-ai%2Fasync-cuda/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oddity-ai%2Fasync-cuda/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oddity-ai%2Fasync-cuda/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/oddity-ai","download_url":"https://codeload.github.com/oddity-ai/async-cuda/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oddity-ai%2Fasync-cuda/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265280621,"owners_count":23739851,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-04T02:00:33.559Z","updated_at":"2025-07-14T10:31:35.240Z","avatar_url":"https://github.com/oddity-ai.png","language":"Rust","funding_links":[],"categories":["Frameworks","GPU Programming","GPU Computing"],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e\n  \u003ccode\u003easync-cuda\u003c/code\u003e\n\u003c/h1\u003e\n\u003cp align=\"center\"\u003eAsynchronous CUDA for Rust.\u003c/p\u003e\n\u003cdiv align=\"center\"\u003e\n\n[![version](https://img.shields.io/crates/v/async-cuda)](https://crates.io/crates/async-cuda)\n[![license](https://img.shields.io/crates/l/async-cuda)](#license)\n[![docs](https://img.shields.io/docsrs/async-cuda)](https://docs.rs/async-cuda)\n\n\u003c/div\u003e\n\n## ℹ️ Introduction\n\n`async-cuda` is an experimental library for interacting with the GPU asynchronously. Since the GPU\nis just another I/O device (from the point of view of your program), the async model actually fits\nsurprisingly well. The way it is implemented in `async-cuda` is that all operations are scheduled on\na single runtime thread that drives the GPU. The interface of this library enforces that\nsynchronization happens when it is necessary (and synchronization itself is also asynchronous).\n\nOn top of common CUDA primitives, this library also includes async wrappers for\n[NVIDIA's NPP library](https://developer.nvidia.com/npp).\n\nThe async wrappers for TensorRT have been moved to a separate repository here:\n[`async-tensorrt`](https://github.com/oddity-ai/async-tensorrt).\n\n## 🛠 S️️tatus\n\nThis project is still a work-in-progress, and will contain bugs. Some parts of the API have not\nbeen flushed out yet. Use with caution.\n\n## 📦 Setup\n\nMake sure you have the necessary dependencies installed:\n\n* CUDA toolkit 11 or later.\n\nThen, add the following to your dependencies in `Cargo.toml`:\n\n```toml\nasync-cuda = \"0.6\"\n```\n\nTo enable the NPP functions:\n\n```toml\nasync-cuda = { version = \"0.6\", features = [\"npp\"] }\n```\n\n## ⚠️ Safety warning\n\nThis crate is **intentionally unsafe**. Due to the limitations of how async Rust currently works,\nusage of the async interface of this crate can cause undefined behavior in some rare cases. It is up\nto the user of this crate to prevent this from happening by following these rules:\n\n* No futures produced by functions in this crate may be leaked (either by `std::mem::forget` or\n  otherwise).\n* Use a well-behaved runtime (one that will not forget your future) like Tokio or async-std.\n\nInternally, the `Future` type in this crate schedules a CUDA call on a separate runtime thread. To\nmake the API as ergonomic as possible, the lifetime bounds of the closure (that is sent to the\nruntime) are tied to the future object. To enforce this bound, the future will block and wait if it\nis dropped. This mechanism relies on the future being driven to completion, and not forgotten. This\nis not necessarily guaranteed. Unsafety may arise if either the runtime gives up on or forgets the\nfuture, or the caller manually polls the future, then forgets it.\n\n## License\n\nLicensed under either of\n\n * Apache License, Version 2.0\n   ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)\n * MIT license\n   ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)\n\nat your option.\n\n## Contribution\n\nUnless you explicitly state otherwise, any contribution intentionally submitted\nfor inclusion in the work by you, as defined in the Apache-2.0 license, shall be\ndual licensed as above, without any additional terms or conditions.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foddity-ai%2Fasync-cuda","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foddity-ai%2Fasync-cuda","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foddity-ai%2Fasync-cuda/lists"}