1 个稳定版本
3.8.1 | 2023 年 8 月 12 日 |
---|
#491 在 并发 中
82 每月下载量
在 9 包 中使用
635KB
11K SLoC
ArrayFire Rust 绑定
ArrayFire 是一个具有易于使用 API 的高性能并行计算库。它使用户能够编写可在 CUDA、OpenCL 和 CPU 设备之间移植的科学计算代码。此项目为 ArrayFire 库提供 Rust 绑定。以下表格显示了 rust 绑定与 ArrayFire 的兼容性。如果您发现任何错误,请在此 处 报告。
arrayfire-rust | ArrayFire |
---|---|
M.m.p1 | M.m.p2 |
只需要,主版本(M)和次版本(m)号需要匹配。 p1 和 p2 分别是 arrayfire-rust
和 ArrayFire
的补丁/修复更新,它们不需要匹配。
支持的平台
Linux、Windows 和 OSX。需要 Rust 1.31 或更高版本。
从 Crates.io 使用
要使用来自 crates.io 的 ArrayFire Rust 绑定,首先需要满足以下要求。
- 根据您的操作系统 下载并安装 ArrayFire 二进制文件。根据您在 Linux 上的安装方法,步骤(2)和(3)可能不是必需的。如果是这种情况,请直接进入步骤(4)。
- 将环境变量
AF_PATH
设置为指向 ArrayFire 安装根目录。 - 确保将库文件路径添加到您的路径环境变量中。
- 在Linux上:执行以下命令
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$AF_PATH/lib64
- 在OSX上:执行以下命令
export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:$AF_PATH/lib
- 在Windows上:将
%AF_PATH%\lib
添加到您的PATH环境变量中。
- 在Linux上:执行以下命令
- 将
arrayfire = "3.8"
添加到您项目Cargo.toml文件的依赖部分。请确保将版本更改为最新版本。
完成步骤(4)后,您应该能够在Rust项目中使用ArrayFire。如果您发现任何错误,请在这里报告。
从源代码构建
编辑build.conf以修改构建标志。结构是一个简单的JSON blob。目前Rust不允许从CLI传递键值对。要使用现有的ArrayFire安装,修改前三个JSON值。您可以使用以下两种方式之一安装ArrayFire。
要构建rust包装库中可用的arrayfire子模块,您必须执行以下操作。
git submodule update --init --recursive
cargo build // use --all to build all crates in the workspace
这是构建Rust包装的推荐方式,因为子模块指向Rust包装已测试的最兼容版本的ArrayFire。您可以在下面找到ArrayFire依赖项。
示例
let num_rows: u64 = 5;
let num_cols: u64 = 3;
let dims = Dim4::new(&[num_rows, num_cols, 1, 1]);
let a = randu::<f32>(dims);
af_print!("Create a 5-by-3 matrix of random floats on the GPU", a);
示例输出
~/p/arrayfire_rust> cargo run --example helloworld
...
Create a 5-by-3 matrix of random floats on the GPU
[5 3 1 1]
0.7402 0.4464 0.7762
0.9210 0.6673 0.2948
0.0390 0.1099 0.7140
0.9690 0.4702 0.3585
0.9251 0.5132 0.6814
...
故障排除
即使注意了环境变量,构建命令在失败时出现未定义引用错误,我们建议执行cargo clean
并重新运行cargo build
或cargo test
。
您还可以使用我们书籍中提到的某些环境变量,例如AF_PRINT_ERRORS
,在控制台打印更详细的错误消息。
致谢
ArrayFire库由ArrayFire LLC的开发人员编写,并得到了几位个人的贡献。ArrayFire LLC的开发人员得到了几个赠款和机构的部分财务支持。以下列出希望获得公开认可的人员
赠款
本材料基于DARPA SBIR项目办公室在合同编号W31P4Q-14-C-0012和W31P4Q-15-C-0008下支持的工作。本材料中表达的意见、发现、结论或建议是作者的意见,不一定反映DARPA SBIR项目办公室的观点。
依赖关系
~1.4–2.4MB
~52K SLoC