Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/136.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用消息传递的分布式C++应用程序_C++_Distributed Computing - Fatal编程技术网

使用消息传递的分布式C++应用程序

使用消息传递的分布式C++应用程序,c++,distributed-computing,C++,Distributed Computing,我正在研究DMTCP,正在研究开发一个应用程序,它可以跨多台远程机器工作,并通过消息计算结果。例如,计算3台机器A、B、C的斐波那契序列 A计算一个起始数字并将结果发送给B B获取A的结果,并使用该结果计算下一个数字,然后将其发送给C C然后计算下一个数字并发送给A,依此类推。 我正在尝试构建这样一个应用程序,这样我就可以通过检查点让它从失败中重新启动。然而,我无法想象这种应用程序的代码。这是我第一次使用任何分布式应用程序 如有任何帮助,将不胜感激: 谢谢各位: 更新:正如所建议的,我的机器不是

我正在研究DMTCP,正在研究开发一个应用程序,它可以跨多台远程机器工作,并通过消息计算结果。例如,计算3台机器A、B、C的斐波那契序列

A计算一个起始数字并将结果发送给B

B获取A的结果,并使用该结果计算下一个数字,然后将其发送给C

C然后计算下一个数字并发送给A,依此类推。 我正在尝试构建这样一个应用程序,这样我就可以通过检查点让它从失败中重新启动。然而,我无法想象这种应用程序的代码。这是我第一次使用任何分布式应用程序

如有任何帮助,将不胜感激:

谢谢各位:

更新:正如所建议的,我的机器不是集群,但我有多台机器,它们各自的操作系统通过局域网相互连接。我的主要目标是在多台机器上运行我的程序实例,以便它们可以如上所示进行通信


我希望这能澄清一点问题。

你可以使用很多选项,我目前正在与一个项目合作,它可以很好地完成这项工作,任何人都可以。您也可以尝试一些网格框架,但这很可能是一种过激行为

有关ZeroMQ,请参阅推/拉+路由器。。。其优点是,ØMQ系统可以在没有专用消息代理的情况下运行。缺点是您必须对数据进行序列化/反序列化,而MQ并没有提供这样的数据序列化/反序列化,这并不坏


另一个选择是谷歌的。在这里,您将集成客户端/服务器和序列化/反序列化,但您必须学习新的元语言来定义消息。它们非常灵活-版本控制,向后兼容。。。位它有点重。

如果您的计算机是群集,则应该使用MPI消息传递接口。它提供了丰富的通信原语集,是高性能计算中的并行化工具。

感谢您推荐MPI。在这方面,OpenMPI看起来非常有趣。然而,我还没有遇到任何远程远程应用程序的MPI C++代码示例。你能不能给我举一个类似的例子,在MPI中已经实现了这样一个应用程序。此外,开发这样的应用程序我可以遵循哪些教程。如果您的计算机还不是群集,您可以安装必要的软件以使其成为群集,或者不使用MPI。集群所需的主要软件组件是类似SLURM的作业调度器。一旦安装了作业调度器,就需要对其进行配置,以便它知道哪些不同的服务器属于集群。这纯粹是一项一次性的管理任务。不幸的是,我不知道这方面的细节,因为我自己从来没有设置过集群。设置集群后,您只需进行作业分配并使用mpiexec启动您的应用程序。关于MPI文档:MPI是在线提供的标准。它定义了C和FORTRAN的绑定,是的,FORTRAN在高性能计算中仍然相当大,但是,对于C++来说,这不是很大。省略C++绑定的原因是,您可以简单地使用C++程序中的C接口。你可以在这里找到一个介绍如何使用MPI的方法,它还包括C和Fortran中没有C++的示例代码,C++代码与C代码几乎相同。