12. mcSPARSE重新排序参考
12.1. mcsparse<t>csrcolor()
mcsparseStatus_t
mcsparseScsrcolor(mcsparseHandle_t handle,
int m,
int nnz,
const mcsparseMatDescr_t descrA,
const float* csrValA,
const int* csrRowPtrA,
const int* csrColIndA,
const float* fractionToColor,
int* ncolors,
int* coloring,
int* reordering,
mcsparseColorInfo_t info)
mcsparseStatus_t
mcsparseDcsrcolor(mcsparseHandle_t handle,
int m,
int nnz,
const mcsparseMatDescr_t descrA,
const double* csrValA,
const int* csrRowPtrA,
const int* csrColIndA,
const double* fractionToColor,
int* ncolors,
int* coloring,
int* reordering,
mcsparseColorInfo_t info)
mcsparseStatus_t
mcsparseCcsrcolor(mcsparseHandle_t handle,
int m,
int nnz,
const mcsparseMatDescr_t descrA,
const mcComplex* csrValA,
const int* csrRowPtrA,
const int* csrColIndA,
const mcComplex* fractionToColor,
int* ncolors,
int* coloring,
int* reordering,
mcsparseColorInfo_t info)
mcsparseStatus_t
mcsparseZcsrcolor(mcsparseHandle_t handle,
int m,
int nnz,
const mcsparseMatDescr_t descrA,
const mcDoubleComplex* csrValA,
const int* csrRowPtrA,
const int* csrColIndA,
const mcDoubleComplex* fractionToColor,
int* ncolors,
int* coloring,
int* reordering,
mcsparseColorInfo_t info)
此函数对CSR格式存储的矩阵 A 中的关联邻接图进行着色。 着色是将颜色(整数)分配给节点的过程,使相邻的节点具有不同的颜色。 在这个例程中,使用了近似着色算法,并在一定比例的节点被着色后停止。 其余的节点被分配不同的颜色(从之前使用的最后一个整数开始的递增整数序列)。 最后两个辅助程序可用于提取得到的颜色数量、其分配和相关的重新排序。 重新排序使得被分配相同颜色的节点相邻排列在一起。
传递给这个程序的矩阵 A 必须以一般矩阵的形式存储,并且具有对称的稀疏模式。 如果矩阵是非对称的,用户应该将A+A^T作为参数传递给这个程序。
此函数需要内部分配的临时额外存储空间。
如果流式有序内存分配器可用,则该例程支持异步执行。
输入
handle处理mcSPARSE库上下文的句柄。
m矩阵
A的行数。nnz矩阵
A的非零元素个数。descrA矩阵A的描述符,支持的矩阵类型为
MCSPARSE_MATRIX_TYPE_GENERAL。 此外,支持的索引基数为MCSPARSE_INDEX_BASE_ZERO和MCSPARSE_INDEX_BASE_ONE。csrValA整数数组,包含 矩阵
A中nnz个非零元素的列索引。csrRowPtrA包含m+1个元素, 其中每个元素 表示每一行的起始位置和最后一行 的结束位置加一。
csrColIndA矩阵A的非零元素的
nnz个列索引 的整数数组。fractionToColor节点被着色的比例,取值范围为 [0.0, 1.0],例如0.8表示将着色80%的 节点。
info包含传递给着色算法的信息的数据结 构。
输出
ncolors使用的不同颜色数量(最多为矩阵的大小,但很可能比它 小得多)。
coloring得到的着色排列结果。
reordering得到的重新排序排列(如果为NULL,则保持不变)。
有关返回状态的描述,请参见 4.2 mcsparseStatus_t。