2 个版本

0.1.0-alpha.12020年2月23日
0.1.0-alpha2020年1月5日

#679并发

Apache-2.0

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