实际上是静电场中的超松弛迭代法要改为CUDA下的并行控制,我简要的表述下:
给出了一个矩阵,矩阵的边界都已经给定了值,内部点数值任意,
迭代公式:(i,j)第n+1次值=(i,j)第n次值+ratio*[(i-1,j)第n+1次值+(i,j-1)第n+1次值+(i+1,j)第n次值+(i,j+1)第n次值-4*(i,j)第n次值],其中ratio是需要输入的常数
当第n次迭代和第n+1次迭代数据之差小于一定误差值就结束迭代
也就是说每次每点的迭代需要涉及到三行三列的数据,而且每次迭代还需要控制周围点的顺序
感觉这种不大适合用CUDA并行来控制,请问各位有没有比较好的思路,请赐教,谢谢
shared + texture来做
你的这个每一次要有固定的执行顺序,我觉得不大适合CUDA去做。如果能把算法改成(i,j)第n+1次的值,不需要相邻点第n+1次的值就好了