我正在并行化代码以数字方式求解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编译器。
mpiexec -n 8 /path/to/application
来运行您的代码,以使您的计算机伪造为它具有8个不同的节点。