39个版本
0.10.0 | 2024年3月31日 |
---|---|
0.9.5 | 2023年12月22日 |
0.9.4 | 2023年11月5日 |
0.9.2 | 2023年7月30日 |
0.1.3 | 2020年12月31日 |
#50 in 图形API
2,056每月下载量
在31个包中使用(通过opencl3)
390KB
8K SLoC
cl3
Khronos OpenCL API的Rust适配器。
描述
基于opencl-sys OpenCL FFI绑定的Khronos OpenCL 3.0 C API的函数式、安全Rust接口。
它是opencl3包的基础,该包提供了一种更简单、基于对象的OpenCL 3.0 API模型。
OpenCL 3.0 是一个统一规范,对之前版本的OpenCL功能增加很少。
它规定所有 OpenCL 1.2 功能是 强制性的,而所有OpenCL 2.x和3.0功能现在是可选的。
OpenCL还有扩展,允许其他功能,如OpenGL和DirectX互操作性,请参阅 OpenCL扩展。此库包含FFI绑定以使用OpenCL扩展。
设计
此包应用了 适配器模式,将OpenCL C API函数转换为返回包含C函数所需结果的Rust函数,或OpenCL错误代码的Result。唯一的例外是 svm_free
,它只提供对 clSVMFree
C API函数的安全包装。
大多数模块都以其在cl.h中对应的"API"部分命名。它们包含Rust适配器函数,用于那些部分中定义的OpenCL API C函数及其相关类型和常量。
更多信息请参阅Rust 文档。
OpenCL 版本和扩展的 API 由 Rust 特性如 "CL_VERSION_2_0" 和 "cl_khr_gl_sharing" 控制。要启用 OpenCL 版本,必须启用该版本的特性以及 所有 前一个版本的 OpenCL 特性,例如对于 "CL_VERSION_2_0";"CL_VERSION_1_1" 和 "CL_VERSION_1_2" 也必须启用。
默认特性为 "CL_VERSION_1_1" 和 "CL_VERSION_1_2"。
Rust 会对由启用的 OpenCL 版本废弃的 OpenCL API 函数发出弃用警告,例如,当启用 "CL_VERSION_2_0" 时,clCreateCommandQueue
被弃用。
使用
确保已安装 OpenCL 可安装客户端驱动程序(ICD)和相应的 OpenCL 硬件驱动程序,请参阅 OpenCL 安装。
cl3
默认支持 OpenCL 1.2 和 2.0 ICD 加载器。如果您有 OpenCL 2.0 ICD 加载器,请在您的项目 Cargo.toml
中添加以下内容
[dependencies]
cl3 = "0.9"
如果您的 OpenCL ICD 加载器支持更高版本的 OpenCL,则向 cl3 添加相应的特性,例如,对于 OpenCL 2.1 ICD 加载器,请在您的项目 Cargo.toml
中添加以下内容而不是
[dependencies.cl3]
version = "0.9"
features = ["CL_VERSION_1_1", "CL_VERSION_1_2", "CL_VERSION_2_0", "CL_VERSION_2_1"]
可以通过添加其特性来启用 OpenCL 扩展,例如。
[dependencies.cl3]
version = "0.9"
features = ["cl_khr_gl_sharing", "cl_khr_dx9_media_sharing"]
无论您使用哪个版本的 OpenCL ICD 加载器,请将以下内容添加到您的 crate 根目录(lib.rs
或 main.rs
)中
extern crate cl3;
测试
该包包含单元、文档和集成测试。
测试运行平台和设备信息函数(等等),因此它们可以提供有关系统 OpenCL 功能的有用信息。
建议以单线程模式运行测试,因为其中一些在多线程运行时可能会相互干扰,例如。
cargo test -- --test-threads=1 --show-output
集成测试被标记为 ignore
,因此请使用以下命令运行它们
cargo test -- --test-threads=1 --show-output --ignored
示例
测试提供了如何使用该包的示例,例如:请参阅 platform、device、context 和 integration_test。
贡献
如果您想通过代码或文档进行贡献,请从 贡献指南 开始。如果您有任何问题,请随时提出。只是请遵守我们的 行为准则。
许可
根据 Khronos Group OpenCL,许可为 Apache License,Version 2.0。
您可以在以下位置获得许可证的副本:https://apache.ac.cn/licenses/LICENSE-2.0
除非您明确说明,否则您有意提交以供包含在您的工作中的任何贡献,根据 Apache-2.0 许可证定义,应按上述方式许可,不附加任何额外条款或条件。
OpenCL 和 OpenCL 标志是 Apple Inc. 的商标,由 Khronos Group 许可使用。
依赖关系
~0.6–1.1MB
~26K SLoC