【发布时间】:2019-08-14 14:44:08
【问题描述】:
我有 n 个(非常大的)独立线性系统(Ax = b_i)。它们都有相同的 A,但 b_i 对于 (i = 1, ..., n) 是不同的。我想在 CUDA 中并行解决这 n 个系统。
我在想,在主机中对 A 进行 LU 分解然后将新的 A 复制到 GPU 的常量内存中可能是最有效的(因为即使我在设备中进行 LU,也只有一个线程应该这样做it 和其他线程将处于空闲状态。此外,常量内存更快)。有没有更好的办法?
另一个问题是,虽然所有线程都在使用相同的算法同时解决它们的系统,但它们都在同时访问相同的内存位置 (A[i]),这不是合并的。我该如何优化呢?
【问题讨论】:
-
“有没有更好的方法?” CUSOLVER 库(包括 CUDA 示例代码中描述的不太明显的设备方法)提供了处理此类问题的方法。与其担心通过编写自己的代码会产生的低级考虑(例如合并),不如研究使用库的方法。
标签: cuda gpu linear-algebra equation-solving linear-equation