我想知道在多个(假设为 n 个)GPU 上的 CUDA 中计算稀疏矩阵向量乘积 y = Ax 的最快方法是什么。
我天真的方法是将向量 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之间的内存传输会非常慢吗?我不希望有很大的加速,但我想知道它是否会比在 1 个单 GPU 上进行矩阵向量乘法要慢。