我想知道在CUDA上多GPU(let say n)GPU中计算稀疏矩阵向量乘积y = Ax的最快方法是什么。多GPU上的稀疏矩阵矢量产品
我的幼稚方法是将矢量x和y分成n个块,每个GPU上有1块。然后还分裂矩阵A在较小的N^2块A_ij和计算
y_i = \sum_j A_{i,j} x_j, // GPU j stores A_{i,j} and x_j, result is copied
// to and summed up on GPU i
上不同的GPU J = 1..n的与假设cuSPARSE
。这会工作吗?采用统一内存架构,原则上所有GPU都应能够访问全局内存。
GPU之间的内存传输是否会非常慢?我不希望大幅加速,但我想知道是否会比在单个GPU上进行矩阵向量乘法更慢。
我不认为这个问题有一个普遍的答案,它是广泛的。对分布式存储器系统(包括GPU)的稀疏矩阵向量产品进行了大量的研究。你可能会比阅读这样的问题更好,因为[SO] – talonmies
你说得对。我想我所寻找的是一个便宜/简单的实现(重复使用调用cuSPARSE),在多个GPU上执行ok-ish。 – yon