我必须使用预测校正器方案求解2D泊松方程 . 该方程必须在 n*m
非均匀网格上求解 . 预测校正器方案意味着通过在步骤 k
和 delta
值对求解求和来获得步骤 k+1
处的解决方案 k+1
. delta
值是通过求解线性方程组得到的,类似于:
A(x ^ k)* delta = b(x ^ k)
通过应用有限差分方法,矩阵 A
具有 5
非零对角线:主要对角线,直接在上方和下方的对角线,以及在上方和下方的两个对角线(由其他对角线的 n-1
零对角线分隔) . 由于不均匀, A
显然是非对称的 . 此外, A
的主对角线和矢量 b
将根据旧解决方案进行更改 . 现在,我想使用并行算法解决这个问题,因为为大网格找到 delta
可能真的很贵 . 有任何想法吗?至于现在,我正在尝试Jacobi方法 .
我相信我有两条可能的路径:我可以坚持直接和顺序方法或使用迭代方法 . 如果我选择后者,那么如果我想利用并行性,我必须使用Jacobi的方法 . 你知道其他并行方法吗?如果我选择前者,你知道是否有一个算法利用了我确切地说 5
非零对角线的事实?托马斯的块矩阵算法怎么样?
1 回答
我建议考虑CUDA来解决这类问题 .
下面我将报告一个在笛卡尔网格中使用Jacobi方法求解泊松方程的示例代码 . 虽然计算网格与您感兴趣的计算网格不同,但这样的示例可以为您(以及其他用户)提供有关如何使用CUDA来解决此类问题的想法 .
运行这样一个示例所需的
Utilities.cu
和Utilities.cuh
文件保存在this github页面,这里省略 .