小编Kyl*_*yer的帖子

OpenACC 红黑 Gauss-Seidel 比 CPU 慢

我为拉普拉斯方程(一个简单的加热板问题)在我的红黑 Gauss-Seidel 求解器中添加了 OpenACC 指令,但是 GPU 加速的代码并不比 CPU 快,即使对于大问题也是如此。

我还编写了一个 CUDA 版本,它比两者都快得多(对于 512x512,与 CPU 和 OpenACC 的 25 秒相比,大约为 2 秒)。

谁能想到造成这种差异的原因?我意识到 CUDA 提供了最大的潜在速度,但 OpenACC 应该为更大的问题提供比 CPU 更好的东西(例如这里演示的同类问题的 Jacobi 求解器)。

这是相关代码(完整的工作源在这里):

#pragma acc data copyin(aP[0:size], aW[0:size], aE[0:size], aS[0:size], aN[0:size], b[0:size]) copy(temp_red[0:size_temp], temp_black[0:size_temp])
// red-black Gauss-Seidel with SOR iteration loop
for (iter = 1; iter <= it_max; ++iter) {
  Real norm_L2 = 0.0;

  // update red cells
  #pragma omp parallel for shared(aP, aW, aE, aS, aN, temp_black, …
Run Code Online (Sandbox Code Playgroud)

gpu openacc

5
推荐指数
1
解决办法
1358
查看次数

标签 统计

gpu ×1

openacc ×1