如何在Fortran中混合使用Coarray和MPI代码

如何在Fortran中混合使用Coarray和MPI代码,fortran,mpi,gfortran,fortran-coarrays,Fortran,Mpi,Gfortran,Fortran Coarrays,我想在我的代码中结合Fortran coarray和MPI。我计划使用第三方softwave(HYPRE),它使用MPI,用于线性系统解算器。在接下来的工作中,我想使用Fortran coarray(OpenCoArray)。我已经在互联网上搜索了一个解决方案。但关于如何让它发挥作用,没有任何线索。我想知道是否可能混合使用Fortran coarray和MPI。如果是,我是否应该使用OpenCoArray或MPI包装器编译器OpenCoArray位于MPI-3 RMA之上(至少在默认情况下;我不

我想在我的代码中结合Fortran coarray和MPI。我计划使用第三方softwave(HYPRE),它使用MPI,用于线性系统解算器。在接下来的工作中,我想使用Fortran coarray(OpenCoArray)。我已经在互联网上搜索了一个解决方案。但关于如何让它发挥作用,没有任何线索。我想知道是否可能混合使用Fortran coarray和MPI。如果是,我是否应该使用OpenCoArray或MPI包装器编译器

OpenCoArray位于MPI-3 RMA之上(至少在默认情况下;我不记得GASNet端口的最新状态),因此这应该可以工作,即使两个标准都不能保证这一点。您将使用进程并行执行,它们应该可以很好地互操作

英特尔Fortran还将MPI用于协同阵列。Cray Fortran协同阵列使用DMAPP,它与MPI兼容。因此,您想要的互操作性应该涵盖所有广泛可用的实现

在所有情况下,都可能存在一些实现难题,特别是在初始化和终止方面。例如,您可能会发现在取消分配所有协同阵列之前无法完成MPI


如果您有问题,我相信OpenCoarrays的开发人员会很欣赏关于这个主题的大型报告

没有标准的方法可以做到这一点。在MPI之上制作的OpenCoArray可能有一些非标准的可能性。