7个版本 (2个稳定版)
2.0.2 | 2024年6月18日 |
---|---|
2.0.1 | 2024年6月5日 |
0.1.5 | 2023年11月6日 |
0.1.4 | 2023年10月29日 |
0.1.0 | 2023年9月5日 |
#183 in 数学
每月下载量:433
被 3 crate使用
46KB
964 行
RayBNN_Sparse
基于CUDA、OpenCL和oneAPI的GPU、CPU和FPGA稀疏矩阵库
支持CSR、COO、CSC和块稀疏矩阵
需要Arrayfire和Arrayfire Rust
支持f16、f32、f64、Complexf16、Complexf32、Complexf64
安装Arrayfire
在https://arrayfire.com/binaries/安装Arrayfire 3.9.0的二进制文件
或从源码构建https://github.com/arrayfire/arrayfire/wiki/Getting-ArrayFire
添加到您的Cargo.toml
arrayfire = { version = "3.8.1", package = "arrayfire_fork" }
num = "0.4.1"
num-traits = "0.2.16"
half = { version = "2.3.1" , features = ["num-traits"] }
RayBNN_Sparse = "2.0.2"
示例列表
将COO转换为CSR稀疏矩阵
let mut WRowIdxCSR = RayBNN_Sparse::Util::Convert::COO_to_CSR(&WRowIdxCOO,7);
将CSR转换为COO稀疏矩阵
let mut WRowIdxCOO = RayBNN_Sparse::Util::Convert::CSR_to_COO(&WRowIdxCSR);
在COO矩阵中搜索值
let valsel = RayBNN_Sparse::Util::Search::COO_find(&WRowIdxCOO,&idxsel);
批量搜索COO矩阵中的值
let valsel = RayBNN_Sparse::Util::Search::COO_batch_find(&WRowIdxCOO,&idxsel,4);
获取全局索引
let global_idx = RayBNN_Sparse::Util::Convert::get_global_weight_idx(
2000,
&WRowIdxCOO,
&WColIdx
);
获取全局索引2
let global_idx = RayBNN_Sparse::Util::Convert::get_global_weight_idx2(
2000,
&WRowIdxCOO,
&WColIdx
);
清除加权邻接矩阵的输入
RayBNN_Sparse::Util::Remove::clear_input::<f32>(
&mut WValues,
&mut WRowIdxCOO,
&mut WColIdx,
3
);
清除加权邻接矩阵的输出
RayBNN_Sparse::Util::Remove::clear_output::<f32>(
&mut WValues,
&mut WRowIdxCOO,
&mut WColIdx,
7-2
);
清除加权邻接矩阵中隐藏神经元的输入
RayBNN_Sparse::Util::Remove::clear_input_to_hidden::<f64>(
&mut WValues,
&mut WRowIdxCOO,
&mut WColIdx,
3
);
删除加权邻接矩阵中最小的权重
RayBNN_Sparse::Util::Remove::delete_smallest_weights::<f32>(
&mut WValues,
&mut WRowIdxCOO,
&mut WColIdx,
3
);
以随机概率删除加权邻接矩阵中最小的权重
RayBNN_Sparse::Util::Remove::delete_weights_with_prob::<f64>(
&mut WValues,
&mut WRowIdxCOO,
&mut WColIdx,
3
);
重新映射加权邻接矩阵中的行
let valsel = RayBNN_Sparse::Util::Convert::remap_rows(&dictionary, &idx,1000);
块矩阵乘法
RayBNN_Sparse::Matrix::Block::matmul::<f64>(
&input_start,
&input_end,
&block_start,
&block_end,
&input,
&block
);
转置块矩阵乘法
RayBNN_Sparse::Matrix::Block::trans_matmul::<f64>(
&input_start,
&input_end,
&block_start,
&block_end,
&input,
&block
);
并行查找数组
let result = RayBNN_Sparse::Util::Search::parallel_lookup(
0,
1,
&idx_arr,
&test_arr,
);
依赖关系
~7MB
~139K SLoC