16 个稳定版本
3.8.0 | 2021 年 1 月 10 日 |
---|---|
3.7.2 | 2020 年 10 月 6 日 |
3.7.1 |
|
3.7.0 | 2020 年 3 月 14 日 |
3.2.0-rc0 | 2015 年 11 月 14 日 |
在 并发 中排名第 79
每月下载量 410
用于 18 个 Crates(17 个直接使用)
630KB
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 安装根目录。 - 请确保将 lib 文件的路径添加到您的路径环境变量中。
- 在Linux上:执行
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$AF_PATH/lib64
- 在OSX上:执行
export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:$AF_PATH/lib64
- 在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–1.8MB
~40K SLoC