openmp - OpenMP 目标中的循环顺序执行
问题描述
我正在尝试使用 OpenMP 并行化以下循环target
以在 GPU 上运行。我看到的问题是我找不到在k
GPU 上按顺序执行循环的方法。在OpenACC
将是类似的东西!$acc loop seq
。在 OpenMP 卸载模式下是否有类似的方法可以做到这一点?
do k = 2, nelem
do j = 1, ny
do i = 1, nx
v(i, j, k) = v(i,j,k-1) + kk*(N(i,j,k)-c2)**c3
N(i, j, k) = N(i, j, k)*( 1.0D0 - rpm*c(i,j,k)+v(i,j,k) )
end do
end do
end do
我试图做类似的事情
!$omp target
do k = 2, nelem
!$omp teams distribute parallel do collapse(2)
do j = 1, ny
do i = 1, nx
v(i, j, k) = v(i,j,k-1) + kk*(N(i,j,k)-c2)**c3
N(i, j, k) = N(i, j, k)*( 1.0D0 - rpm*c(i,j,k)+v(i,j,k) )
end do
end do
!$omp end teams distribute parallel do
end do
!$omp end target
但有些事情是不对的。
解决方案
推荐阅读
- python - BertForNextSentencePrediction - 将 logits 转换为布尔值?
- pandas - 连接到 wunderground API 时出错
- python - 单独线程上的 wxPython MainLoop 和 Quartz CGEvent 事件触发非法指令错误
- scala - 使用 akka-stream-alpakka 从 s3 下载 pdf 文件并将其存储为字节数组
- shell - docker-compose 文件中的脚本化参数
- autodesk-forge - 如何在我的 Autodesk Forge 查看器平面图中包含不同的图像
- .net-core - 将 Paypal 与 .Net Core 3 集成
- hazelcast - 客户端重新连接后 Hazelcast 侦听器不起作用
- php - 如果发生异常,防止 PHP 回显
- python - 在 API 中自动递增时遇到问题