2 个版本
0.1.0-alpha.1 | 2020年2月23日 |
---|---|
0.1.0-alpha | 2020年1月5日 |
#679 在 并发
155KB
3K SLoC
dynamic_ocl
实验性 Rust OpenCL 绑定,注重简洁和安全。目前处于非常早期的开发阶段,需要 Rust 1.41+(撰写时的 beta 工具链)。
特性
- 最小开销
- 支持 OpenCL 版本高达 2.2
- 提供对 OpenCL C API 的直接绑定,以及更高级、更安全、更易于使用的绑定
- 可以使用功能标志禁用高级绑定以避免膨胀(如果需要的话)
- 在运行时动态加载 OpenCL 库,允许编译具有可选 OpenCL 支持的单个二进制文件,并简化交叉编译。
- 类型设计时考虑了安全性,利用 Rust 的类型系统来防止各种运行时错误,包括
- 内核参数类型不匹配
- 非法缓冲区访问(例如尝试从
HOST_NO_ACCESS
缓冲区中读取) - 使用不安全类型与缓冲区(例如 OpenCL 内核可能创建的具有无效位模式的类型)
lib.rs
:
OpenCL 的动态绑定
此库提供了对系统 OpenCL 库的动态绑定,允许您在不要求链接依赖项的情况下将可选的 OpenCL 支持添加到应用程序中。提供了两种 API - 原始、不安全的、一对一绑定到 OpenCL C API,以及更高级、更安全、更方便的 Rust API。
安全 Rust API 仅在设置了 safe
功能标志时提供,默认情况下是启用的。如果您只想使用不安全的原始绑定,您可以通过在项目清单中设置 default_features = false
来禁用功能标志。
依赖关系
~2.5MB
~52K SLoC