使用 nvGraph 中的 cuSPARSE 作为连接矩阵?
Using cuSPARSE in nvGraph as the connection matrix?
标题几乎说明了一切,我在网上找不到任何关于此的文档。我有兴趣实现一些面向图形的算法,并且我的连接矩阵变得相当庞大。有没有办法使用 cuSPARSE 来消除连接矩阵中的大量冗余? (因为每个顶点实际上最多连接到其他 5 个顶点)。
我已经实现了图形分区来分割和减小我的连接矩阵的大小,但这给我留下了大约 256 x 256 的矩阵,其中大约一半是零。 (例如:无连接)
nvGRAPH
是 a new CUDA library 在 CUDA 8RC 工具包中可用。由于CUDA 8RC是候选发布版本,不是正式发布版本,它的文档只有PDF格式,没有正式上线,这些PDF文档是在你安装CUDA 8 RC工具包的时候安装的。
与这个新库相关的特定文档是 nvGRAPH_Library.pdf
,其位置将根据您是在 windows 还是 linux 上安装 CUDA 8RC 工具包和选项而有所不同您 select 在安装过程中。
Is there a way to use cuSPARSE to remove the large amounts of redundancy in my connection matrix?
事实上,仅 指定图形拓扑的方法(我认为这等同于您的 "connection matrix")是通过 compressed sparse method。您使用的实际方法(CSC 或 CSR)在 nvGRAPH
configuration/initialization 期间指定,使用 nvgraphTopologyType_t
枚举:
2.2. nvGRAPH graph topology types
Graphs toplogy types. Defines storage format. Some algorithms can work only with
specific topology types, see algorithms descriptions for the list of supported topologies.
typedef enum
{
NVGRAPH_CSR_32 = 0,
NVGRAPH_CSC_32 = 1,
} nvgraphTopologyType_t;
Topology types
NVGRAPH_CSR_32 Compressed Sparse Rows format (row major format). Used
in SrSPMV algorithm. Use nvgraphCSRTopologyX_t topology
structure for this format.
NVGRAPH_CSC_32 Compressed Sparse Column format (column major format).
Used in SSSP, WidestPath and Pagerank algorithms. Use
nvgraphCSCTopologyX_t topology structure for this format.
这个特定的枚举类型通常会在初始图形配置期间传递给 nvGRAPH
:
// Set graph connectivity and properties (transfers)
nvgraphSetGraphStructure(handle, graph, (void*)CSC_input,NVGRAPH_CSC_32);
更完整的代码samples/examples在第3章20开始的nvGRAPH
文档PDF文档中给出,CUDA 8RC示例代码中提供了新的nvGRAPH
示例代码安装如 nvgraph_Pagerank
、nvgraph_SemiRingSpMV
和 nvgraph_SSSP
(单源最短路径)。
NVIDIA 的常规做法是在工具包进入生产发布状态时公开这些文档(例如 here)。
编辑:随着 CUDA 8 的发布,上面引用的这些文档现在是 publicly available。
标题几乎说明了一切,我在网上找不到任何关于此的文档。我有兴趣实现一些面向图形的算法,并且我的连接矩阵变得相当庞大。有没有办法使用 cuSPARSE 来消除连接矩阵中的大量冗余? (因为每个顶点实际上最多连接到其他 5 个顶点)。
我已经实现了图形分区来分割和减小我的连接矩阵的大小,但这给我留下了大约 256 x 256 的矩阵,其中大约一半是零。 (例如:无连接)
nvGRAPH
是 a new CUDA library 在 CUDA 8RC 工具包中可用。由于CUDA 8RC是候选发布版本,不是正式发布版本,它的文档只有PDF格式,没有正式上线,这些PDF文档是在你安装CUDA 8 RC工具包的时候安装的。
与这个新库相关的特定文档是 nvGRAPH_Library.pdf
,其位置将根据您是在 windows 还是 linux 上安装 CUDA 8RC 工具包和选项而有所不同您 select 在安装过程中。
Is there a way to use cuSPARSE to remove the large amounts of redundancy in my connection matrix?
事实上,仅 指定图形拓扑的方法(我认为这等同于您的 "connection matrix")是通过 compressed sparse method。您使用的实际方法(CSC 或 CSR)在 nvGRAPH
configuration/initialization 期间指定,使用 nvgraphTopologyType_t
枚举:
2.2. nvGRAPH graph topology types
Graphs toplogy types. Defines storage format. Some algorithms can work only with
specific topology types, see algorithms descriptions for the list of supported topologies.
typedef enum
{
NVGRAPH_CSR_32 = 0,
NVGRAPH_CSC_32 = 1,
} nvgraphTopologyType_t;
Topology types
NVGRAPH_CSR_32 Compressed Sparse Rows format (row major format). Used
in SrSPMV algorithm. Use nvgraphCSRTopologyX_t topology
structure for this format.
NVGRAPH_CSC_32 Compressed Sparse Column format (column major format).
Used in SSSP, WidestPath and Pagerank algorithms. Use
nvgraphCSCTopologyX_t topology structure for this format.
这个特定的枚举类型通常会在初始图形配置期间传递给 nvGRAPH
:
// Set graph connectivity and properties (transfers)
nvgraphSetGraphStructure(handle, graph, (void*)CSC_input,NVGRAPH_CSC_32);
更完整的代码samples/examples在第3章20开始的nvGRAPH
文档PDF文档中给出,CUDA 8RC示例代码中提供了新的nvGRAPH
示例代码安装如 nvgraph_Pagerank
、nvgraph_SemiRingSpMV
和 nvgraph_SSSP
(单源最短路径)。
NVIDIA 的常规做法是在工具包进入生产发布状态时公开这些文档(例如 here)。
编辑:随着 CUDA 8 的发布,上面引用的这些文档现在是 publicly available。