在GitHub上找到我
 全部 课程 文件夹 功能 变量  
公共方法|公众成员|所有成员的列表
cusp::hyb_matrix<IndexType,ValueType,MemorySpace>类模板引用

详细描述

模板<类型名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。
//包括hyb_matrix头文件
整数main()
{
//为具有8个非零的(4,3)矩阵分配存储
//ELL部分有5个非零,每行存储2个非零
//COO部分有3个非零
//初始化A以表示以下矩阵
// [10 20 30 40]
// [ 0 50 0 0]
// [60 0 70 80]
//A分为以下ELL和COO部分
// [10 20 30 40] [10 20 0 0] [ 0 0 30 40]
// [ 0 50 0 0] = [ 0 50 0 0] + [ 0 0 0 0]
// [60 0 70 80] [60 0 70 0] [ 0 0 0 80]
//初始化ELL部件
//X用于填充矩阵ELL部分中未使用的条目
//第一排
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;//移到最左边的位置
//初始化COO部分
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;
//打印ELL部分
尖点::打印(A.ell);
//打印COO部分
尖点::打印(A.coo);
//打印聚合
尖点::打印(A) ;
}
另请参见
单元格矩阵
坐标矩阵
示例:
液压铜.

第行的定义142文件的hyb_矩阵.h.

#包括<hyb_矩阵.h>

尖点的继承图::hyb_matrix<IndexType,ValueType,MemorySpace>:

公共方法

 hyb矩阵(无效)
 
 hyb矩阵(IndexType num_rows、IndexType num_cols、IndexType num_ell_entries、Index Type num_coo_entries、Index类型num_entries_per_row、IndexTypealignment=32)
 
模板<typename MatrixType>
 hyb矩阵(常量矩阵类型和矩阵)
 
无效调整大小(IndexType num_rows、IndexType num_cols、IndexType num_ell_entries、IndexType num_coo_entries、IndexType num_entries_per_row、IndexType alignment=32)
 
空隙互换(hyb矩阵&矩阵)
 
模板<typename MatrixType>
hyb矩阵操作员=(常量矩阵类型和矩阵)
 

公众成员

单元格矩阵类型厄尔
 
coo矩阵类型首席运营官
 

建造商和破坏者文件

模板<类型名IndexType,类型名ValueType,类MemorySpace>
尖点::hyb矩阵<索引类型、值类型、内存空间>::hyb矩阵 ( 空隙 )
内联

构造一个空hyb矩阵.

第行的定义186文件的hyb_矩阵.h.

模板<类型名IndexType,类型名ValueType,类MemorySpace>
尖点::hyb矩阵<索引类型、值类型、内存空间>::hyb矩阵 ( 索引类型 行数(_R),
索引类型 列数(_COL),
索引类型 num_ell_entries数,
索引类型 coo_entries个,
索引类型 当前条目数,
索引类型 对齐=32 
)
内联

构造一个hyb矩阵具有特定形状并分为ELL和COO部分。

参数
行数(_R)行数。
列数(_COL)列数。
num_ell_entries数ELL部分中非零矩阵项的数量。
coo_entries个ELL部分中非零矩阵项的数目。
当前条目数ELL部分中每行的最大非零数。
对齐用于对齐ELL数据结构的填充量(默认值32)。

第行的定义197文件的hyb_矩阵.h.

模板<类型名IndexType,类型名ValueType,类MemorySpace>
模板<typename MatrixType>
尖点::hyb矩阵<索引类型、值类型、内存空间>::hyb矩阵 ( 常量矩阵类型& 矩阵)

构造一个hyb矩阵来自另一个矩阵。

参数
矩阵另一个稀疏或密集矩阵。

成员功能文档

模板<类型名IndexType,类型名ValueType,类MemorySpace>
模板<typename MatrixType>
hyb矩阵&尖点::hyb矩阵<索引类型、值类型、内存空间>::运算符= ( 常量矩阵类型& 矩阵)

从另一个矩阵赋值。

参数
矩阵另一个稀疏或密集矩阵。
模板<typename IndexType,typename ValueType,类MemorySpace>
空隙尖端::hyb_matrix<IndexType、ValueType、MemorySpace>::resize ( 索引类型 行数(_R),
索引类型 列数(_COL),
索引类型 num_ell_entries数,
索引类型 coo_entries个,
索引类型 编号_条目_行,
索引类型 对齐=32 
)
内联

调整矩阵维度和底层存储的大小

第行的定义215文件的hyb_矩阵.h.

模板<类型名IndexType,类型名ValueType,类MemorySpace>
空隙尖点::hyb矩阵<IndexType、ValueType、MemorySpace>::swap ( hyb矩阵<IndexType、ValueType、MemorySpace>& 矩阵)
内联

交换两个的内容hyb矩阵物体。

参数
矩阵另一个hyb矩阵具有相同的IndexType和ValueType。

第行的定义228文件的hyb_矩阵.h.

成员数据文档

模板<类型名IndexType,类型名ValueType,类MemorySpace>
coo矩阵类型尖点::hyb矩阵<索引类型、值类型、内存空间>::coo

存储ell_矩阵部分。

第行的定义182文件的hyb_矩阵.h.

模板<类型名IndexType,类型名ValueType,类MemorySpace>
单元格矩阵类型尖点::hyb矩阵<索引类型、值类型、内存空间>::ell

存储单元格矩阵部分。

第行的定义178第个,共个文件hyb_矩阵.h.