【发布时间】:2015-03-10 11:33:27
【问题描述】:
我一直在网上搜索,但我对这个话题仍然很困惑。谁能更清楚地解释这一点?我来自航空航天工程背景(不是计算机科学背景),所以当我在网上阅读有关 OpenMP/CUDA/等的信息时。和多线程我不太了解所说的内容。
我目前正在尝试并行化一个用 FORTRAN 编写的内部 CFD 软件。这些是我的疑问:
OpenMP 使用来自 CPU 的多个线程来共享工作负载。可以用来让 GPU 也完成一些工作吗?
我读过关于 OpenACC 的文章。是不是和 OpenMP 类似(好用)?
我也读过关于 CUDA 和内核的文章,但我在并行编程方面没有太多经验,而且我对内核是什么一无所知。
- 对于 FORTRAN(如果 OpenMP 不这样做且 OpenACC 不便携),是否有一种简单且可移植的方式与 GPU 共享我的工作负载?
你能给我一个“傻瓜式”的答案吗?
【问题讨论】:
-
我建议看看 OpenCL,因为它是共享相同代码以在 CPU 和 GPU 上执行的简单方法。内核是可执行代码的基本单元,例如可以是数据并行或任务并行的 C 函数。 Fortran 与 OpenCL 的绑定也存在。看看 AMD 对 OpenCL 的介绍系列:youtube.com/watch?v=ecYIsu83c0I&list=PL3B46A983A7382FA6
-
搜索术语 OpenMP 加速器。 加速器(GPU 是其中的一种)是在 OpenMP 4.0 中引入的。
标签: multithreading fortran gpu openmp openacc