繁体   English   中英

如何结合Fortran77和Fortran90应用程序? MPI,PVM还是其他方式?

[英]How to couple Fortran77 and Fortran90 applications? MPI, PVM or another way?

我需要耦合两个代码(一个在Fortran77中,另一个在Fortran90中),这些代码必须由守护进程控制并能够在它们之间传递信息。

我一直在寻找,两种可能的选择是PVM或MPI。 问题是我需要单独编译它们,任何想法?

MPI非常适合SPMD范例(单程序/多数据)。 如果你想结合两个不同的二进制文件,MPI可能不是最好的工具。 进程间通信更像是您想要做的事情。 在Linux中,如果你停留在同一台机器上,你可以使用命名管道(参见man mkfifo ),你可以使用Fortran I / O调用传输数据。 如果要在不同机器之间进行通信,另一种可能性是使用ZeroMQ ,并且存在Fortran绑定

最简单的方法是使用POSIX套接字 - 但是你需要进行数据序列化/反序列化,而且它通常很慢。 所以我不建议使用套接字。

从技术上讲,MPI可以工作。 如果您可以使用MPI 2.0兼容库,那么您可以使用在那里实现的客户端 - 服务器机制。 查看MPI_Open_portMPI_Comm_connect的文档。 第一个将为您提供端口名称,您需要以某种方式将此名称传递给客户端。 一种选择是使用名称发布,但它可能不适用于任何MPI库。 另一种选择是使用其他机制(套接字连接,文件系统或其他任何机制)共享它。

但是,事实上,我仍然没有看到你应该单独编译这两个应用程序的原因(除非存在许可问题) - 你可以将它们编译成一个包(我预计会有一些代码更改,但它很小)然后将它们作为一个应用运行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM