39 个版本
0.15.1 | 2023年1月24日 |
---|---|
0.14.3 | 2022年9月3日 |
0.14.2 | 2022年5月6日 |
0.13.5 | 2022年3月11日 |
0.1.1 | 2021年1月18日 |
#1789 in 算法
用于 2 个包 (通过 tc-tensor)
185KB
4.5K SLoC
afarray
在 Rust 中处理 ArrayFire 数组的便捷方法,兼容 number-general.
使用示例
use std::iter::FromIterator;
use afarray::Array;
use number_general::Number;
let a = [1, 2, 3];
let b = [5];
let product = &Array::from(&a[..]) * &Array::from(&b[..]);
assert_eq!(product, Array::from_iter(vec![5, 10, 15]));
assert_eq!(product.sum(), Number::from(30))
请注意,您必须安装 ArrayFire 才能构建此包。安装说明请参阅 http://arrayfire.org/docs/installing.htm.
您可以在 https://crates.io/crates/arrayfire 上找到从 crates.io 构建 Rust arrayfire
包的详细说明。
lib.rs
:
提供了一种泛型的一维 Array
,它包装了 arrayfire::Array
并支持所有 number_general::NumberType
变体。`Array` 和 `ArrayExt` 支持 Add
、Sub
、Mul
、Div
和 Rem
等基本数学运算,在支持 CUDA 或 OpenCL 的系统上提供硬件加速。`ArrayExt<bool>` 支持常见的逻辑运算 and
、not
、or
和 xor
。
可以使用 `Coords` 和 `Offsets` 实现多维数组功能,它们提供了一维 `Array` 或 `ArrayExt` 作为 n 维张量的索引方法。
`Array` 支持无类型提示的序列化和反序列化。`ArrayExt<T>` 支持 `T: Serialize` 的序列化和 `T: Deserialize` 的反序列化。
示例用法
let a = [1, 2, 3];
let b = [5];
let product = &Array::from(&a[..]) * &Array::from(&b[..]);
assert_eq!(product, Array::from_iter(vec![5, 10, 15]));
assert_eq!(product.sum(), Number::from(30))
该包依赖于ArrayFire版本3.8。您需要按照https://arrayfire.org/docs/installing.htm中的说明单独安装ArrayFire,才能构建此包。
您可以在https://crates.io/crates/arrayfire找到构建Rust arrayfire
包的详细说明。
依赖项
约4.5MB
约92K SLoC