模板<类型名IndexType,类型名ValueType,类MemorySpace>
类cusp::hyb_matrix<索引类型,值类型,内存空间>
混合(HYB)表示稀疏矩阵。
- 模板参数
-
索引类型 | 用于矩阵索引的类型(例如。整数 ). |
值类型 | 用于矩阵值的类型(例如。浮动 ). |
内存空间 | 内存空间(例如。尖端::主机内存 或尖点::设备内存 ) |
- 概述
- 这个
hyb矩阵
是单元格矩阵
和坐标矩阵
格式。具体来说hyb矩阵
format将矩阵分为两部分,一部分以ELL格式存储,另一部分以COO格式存储。
虽然ELL格式非常适合向量和SIMD体系结构,但当每个矩阵行的非零数变化时,其效率会迅速下降。相反,COO格式的存储效率对每行非零的分布是不变的,而分段约简的使用也使其性能在很大程度上保持不变。为了获得两者的优点,我们将它们组合成一种混合ELL/COO格式。
HYB格式的目的是在ELL数据结构中存储每行的典型非零数,并在COO格式中存储异常行的其余条目。
- 注释
- 这个
单元格矩阵
条目必须按列索引排序。
- 这个
单元格矩阵
每行中的条目应向左移动。
- 这个
坐标矩阵
条目必须按行索引排序。
- 矩阵不应包含重复条目。
- 例子
- 下面的代码片段演示了如何创建
hyb矩阵
在实践中,我们通常不会直接构建HYB格式,而是从更简单的格式(如COO、CSR)转换为HYB。
整数main()
{
A.ell.column_indices(0,0)=0;艾尔。值(0,0) = 10;
A.ell.column_indices(0,1)=1;艾尔。值(0,1) = 20;
A.ell.column_indices(1,0)=1;艾尔。值(1,0) = 50;
A.ell.column_indices(1,1)=X;艾尔。值(1,1) = 0;
A.ell.column_indices(2,0)=0;艾尔。值(2,0) = 60;
A.ell.column_indices(2,1)=2;艾尔。值(2,1) = 70;
A.coo.row_indices[0]=0;A.coo.column_indices[0]=2;A.库奥。值[0] = 30;
A.coo.row_indices[1]=0;A.coo.column_indices[1]=3;A.库奥。值[1] = 40;
A.coo.row_indices[2]=2;A.coo.column_indices[2]=3;A.库奥。值[2] = 80;
}
- 另请参见
单元格矩阵
-
坐标矩阵
- 示例:
- 液压铜.
第行的定义142文件的hyb_矩阵.h.