【发布时间】:2022-01-08 14:05:27
【问题描述】:
我有一个工作串行代码和一个工作并行单 GPU 代码通过 OpenACC 并行化。现在我试图通过在多个 GPU 上运行来增加并行度,采用 mpi+openacc 范例。我在 Fortran-90 中编写了我的代码,并使用 Nvidia 的 HPC-SDK 的 nvfortran 编译器对其进行了编译。
我有几个初级问题:
- 如何设置编译器环境以开始编写 mpi+openacc 代码。除了 Nvidia 的 HPC-SDK 之外,还有其他要求吗?
- 假设我有一个在 mpi+openacc 设置下编写的代码,我该如何准确地编译它?我必须编译两次吗?一个用于 cpus (mpif90),一个用于 gpus (openacc)。一个 make 文件或一些编译命令的示例会很有帮助。
- 当需要GPU-device-1和GPU-device-2之间的通信时,有没有办法直接在它们之间进行通信,或者我应该通过[GPU-device-1] ---> [CPU -host-1] ---> [CPU-host-2] ---> [GPU-device-2]
- 是否有任何带有 mpi+openacc 实现的示例 Fortran 代码?
【问题讨论】:
-
欢迎,我建议使用tour 并阅读How to Ask。请不要说您的问题非常广泛,有几个独立的编号点。你通常应该问一个明确的问题。
标签: fortran gpu mpi openacc nvidia-hpc-compilers