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_ZEROMCSPARSE_INDEX_BASE_ONE

    csrValA

    整数数组,包含 矩阵 Annz 个非零元素的列索引。

    csrRowPtrA

    包含m+1个元素, 其中每个元素 表示每一行的起始位置和最后一行 的结束位置加一。

    csrColIndA

    矩阵A的非零元素的 nnz 个列索引 的整数数组。

    fractionToColor

    节点被着色的比例,取值范围为 [0.0, 1.0],例如0.8表示将着色80%的 节点。

    info

    包含传递给着色算法的信息的数据结 构。

    输出

    ncolors

    使用的不同颜色数量(最多为矩阵的大小,但很可能比它 小得多)。

    coloring

    得到的着色排列结果。

    reordering

    得到的重新排序排列(如果为NULL,则保持不变)。

有关返回状态的描述,请参见 4.2 mcsparseStatus_t