7个不稳定版本 (3个重大变更)
0.4.0 | 2023年8月10日 |
---|---|
0.3.0 | 2023年8月8日 |
0.2.0 | 2023年8月8日 |
0.1.3 | 2023年6月15日 |
#1849 in 异步
120KB
2K SLoC
async-cuda-core
异步CUDA流和缓冲区。
ℹ️ 简介
async-cuda-core
是一个用于异步与GPU交互的实验性库。由于GPU只是另一个I/O设备(从你的程序的角度来看),异步模型实际上非常适合。在 async-cuda-core
中实现的方式是,所有操作都在一个驱动GPU的单个运行时线程上调度。该库的接口强制要求在必要时进行同步(并且同步本身也是异步的)。
🛠 状态
该项目仍在进行中,可能存在错误。API的一些部分尚未完善。请谨慎使用。
📦 设置
确保已安装必要的依赖项
- CUDA工具包11或更高版本。
然后,将以下内容添加到你的 Cargo.toml
依赖项中
async-cuda-core = "0.1"
⚠️ 安全警告
这个crate是 故意不安全的。由于当前异步Rust的局限性,使用此crate的异步接口在某些罕见情况下可能导致未定义的行为。防止这种情况发生的责任在于用户,他们必须遵循以下规则
- 此crate中函数产生的任何futures都不能泄漏(无论是通过
std::mem::forget
还是其他方式)。 - 使用行为良好的运行时(例如不会忘记你的future的Tokio或async-std)。
内部,此crate中的 Future
类型在单独的运行时线程上调度CUDA调用。为了使API尽可能方便,将闭包(发送到运行时的)的生命周期限制绑定到future对象。为了强制执行此限制,如果future被丢弃,它将阻塞并等待。此机制依赖于future被驱动完成,而不是忘记。这并不一定能得到保证。如果运行时放弃或忘记future,或者调用者手动轮询future然后忘记它,则可能产生不安全性。
许可证
以下任一许可下授权
- Apache许可证,版本2.0(LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT许可证(LICENSE-MIT 或 http://opensource.org/licenses/MIT)
由您选择。
贡献
除非您明确说明,否则您提交的任何有意包含在作品中的贡献,根据Apache-2.0许可证定义,应如上双重许可,不附加任何额外条款或条件。
依赖项
~1–2.4MB
~44K SLoC