#cuda #gpu #async #npp #nvidia

async-cuda-npp

异步NVIDIA性能原语库

6个版本 (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日

#1149 in 异步

Download history 4/week @ 2024-03-09 5/week @ 2024-03-16 2/week @ 2024-03-30

每月75次下载

MIT/Apache

200KB
4K SLoC

async-cuda-npp

为NVIDIA二维图像和信号性能原语库提供的异步包装器。

version license docs

ℹ️ 简介

async-cuda-nppNVIDIA的NPP库 的异步包装器。它是 async-cuda 库系列 的一部分。

🛠 状态

此项目仍在开发中,可能存在错误。API的一些部分尚未完善。请谨慎使用。

📦 设置

确保已安装必要的依赖项

  • CUDA工具包11或更高版本(NPP是CUDA工具包的一部分)。

然后,将以下内容添加到 Cargo.toml 中的依赖项

async-cuda-npp = "0.1"

⚠️ 安全警告

此crate故意不安全。由于异步Rust当前的工作限制,此crate的异步接口在某些罕见情况下可能导致未定义的行为。用户需要遵循以下规则来防止这种情况发生

  • 此crate中的函数产生的任何futures都不能泄漏(无论是通过 std::mem::forget 还是其他方式)。
  • 使用行为良好的运行时(不会忘记你的future,如Tokio或async-std)。

内部,本包中的 Future 类型在一个单独的运行时线程上调度 CUDA 调用。为了使 API 尽可能方便使用,闭包(即发送到运行时的闭包)的生命周期限制与未来对象绑定。为了强制执行此限制,如果未来对象被丢弃,则未来对象会阻塞并等待。此机制依赖于未来对象被驱动到完成,而不是被遗忘。这并不一定得到保证。如果运行时放弃或遗忘未来对象,或者调用者手动轮询未来对象然后遗忘它,则可能会出现不安全的情况。

许可证

根据以下任一许可证授权:

任选其一。

贡献

除非您明确声明,否则根据 Apache-2.0 许可证定义的,您有意提交的任何贡献,包括在本工作中的应用,均应以上述方式双许可,不附加任何额外条款或条件。

依赖关系

~1–2MB
~39K SLoC