arXivDaily arXiv每日学术速递 周一至周五更新
北美退伍军人节(Veterans Day),12 日无更新
arXiv 1610.07902cs.DC
收藏

一种高效的并行稀疏矩阵-稀疏向量乘法算法

A work-efficient parallel sparse matrix-sparse vector multiplication algorithm

Ariful Azad, Aydin Buluc

摘要:

我们设计并开发了一个工作效率高的多线程算法稀疏矩阵稀疏向量乘法(SpMSpV)的矩阵,输入向量和输出向量都是稀疏的。SpMSpV是新兴的GraphBLAS标准中的重要原语,并且是许多图算法的主力,包括广度优先搜索,二分图匹配和最大独立集。随着线程数的增加,现有的多线程SpMSpV算法可能会花费更多的时间来访问稀疏矩阵数据结构,而不是做算术。我们的共享内存并行SpMSpV算法的工作效率的意义上说,它的总工作是成比例的算术运算所需的数量。关键的见解是避免每个线程单独扫描矩阵列的列表。我们的算法是简单的实现和现有的基于列的稀疏矩阵格式。它在具有异构稀疏模式的不同矩阵和向量上表现良好。该算法的高性能实现在24核Intel Ivy Bridge处理器上实现了高达15倍的加速,在64核Intel KNL众核处理器上实现了高达49倍的加速。与现有算法的实现相比,我们的算法的性能在各种不同的输入类型上都是持续的,包括表示无标度和高直径图的矩阵。

英文摘要:

We design and develop a work-efficient multithreaded algorithm for sparse matrix-sparse vector multiplication (SpMSpV) where the matrix, the input vector, and the output vector are all sparse. SpMSpV is an important primitive in the emerging GraphBLAS standard and is the workhorse of many graph algorithms including breadth-first search, bipartite graph matching, and maximal independent set. As thread counts increase, existing multithreaded SpMSpV algorithms can spend more time accessing the sparse matrix data structure than doing arithmetic. Our shared-memory parallel SpMSpV algorithm is work efficient in the sense its total work is proportional to the number of arithmetic operations required. The key insight is to avoid each thread individually scan the list of matrix columns. Our algorithm is simple to implement and operates on existing column-based sparse matrix formats. It performs well on diverse matrices and vectors with heterogeneous sparsity patterns. A high-performance implementation of the algorithm attains up to 15x speedup on a 24-core Intel Ivy Bridge processor and up to 49x speedup on a 64-core Intel KNL manycore processor. In contrast to implementations of existing algorithms, the performance of our algorithm is sustained on a variety of different input types include matrices representing scale-free and high-diameter graphs.

机构、总结、中文摘要均由AI分析而来,可能存在错误,请以论文正文为准。

↑