我正在并行化代码以数值求解 5 维人口平衡模型。目前我在 FORTRAN 中有一个非常好的 MPICH2 并行化代码,但是随着我们增加参数值,数组变得太大而无法在分布式内存模式下运行。
我可以访问具有 15 个节点的集群,其中每个节点有两个 8 核 CPU 和 128GB 的 RAM。我想编写一个在共享内存模式下使用 MPI-3.0 运行的程序,这样每个进程就不会生成自己的每个数组的副本。
在我可以在集群上运行任何东西之前,我必须在运行 Ubuntu 的桌面上对其进行测试。它本质上是集群的一个刀片,因为它有两个 8 核 CPU 和 128 GB 的 RAM。我将在上面编写和测试我的代码,所以请将您的回复调整为在 Ubuntu 计算机上运行程序。
我已经读到有一种方法可以在 OpenMP 等共享内存模式下运行 MPI-3.0,而不是其默认的分布式内存模式。
问题:
我将如何更改我的代码?我是否需要添加对其他 MPI 函数的调用,例如
MPI_WIN_ALLOCATE
?如何编译我的代码以在共享内存模式下运行 MPI-3.0?如果它跨越多个节点,这会有所不同吗?
如果可以,请提供示例编译脚本。我也只有 GNU 编译器。我使用的集群不支持 Intel 编译器。