我想知道在 CUDA 架构上完全可并行化的方法。我已经实现了 Jacobi 和 Conjugate Gradient 方法,现在我正在考虑 Bi-Conjugate Gradient 方法。我正在使用 cublas 库来简化一些基本的代数运算。有人说 Gauss-Seidel 是半可并行的。我是 CUDA 的新手,所以我无法理解 Cholesky 分解或高斯消除论文中的一些问题,例如:
我无法理解新算法,所以我说我必须使用经典的数值算法(我无法“创建”那种算法),比如。
关键是,是否存在关于这些算法并行化的任何“理论”?因为雅可比并行化和共轭梯度方法对我来说很容易,所以算法内部有一些 saxpy 和 gemv 操作。
例如,在 Cholesky 的情况下,内部循环取决于第一个,我们如何解决这个问题?
for k = 1 to n
...
for j = k + 1 to n
PS:我一直在 C++ 上开发算法,从那里我开始并行化过程(这意味着“发现”如何并行化的过程)