首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何耦合Fortran77和Fortran90应用程序?MPI、PVM或其他方式?

如何耦合Fortran77和Fortran90应用程序?MPI、PVM或其他方式?
EN

Stack Overflow用户
提问于 2016-11-17 01:38:57
回答 2查看 116关注 0票数 1

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

我一直在搜索,有两个可能的选项是PVM或MPI。问题是我需要单独编译它们,你有什么想法吗?

EN

回答 2

Stack Overflow用户

发布于 2016-11-17 08:15:04

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

票数 2
EN

Stack Overflow用户

发布于 2016-11-18 19:12:41

最简单的方法是使用POSIX套接字-但您需要进行数据序列化/反序列化,而且通常速度相当慢。所以我不推荐使用套接字。

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

但是,事实上,我仍然不明白为什么你应该分别编译这两个应用程序(除非有许可问题)-你可以只将它们编译成一个包(我预计会有一些代码更改,但这是次要的),然后将它们作为一个应用程序运行。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40638711

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档