【问题标题】:Run thread on remote machine在远程机器上运行线程
【发布时间】:2013-07-25 23:06:14
【问题描述】:

我是集群编程的新手。我有一个由 6 台计算机组成的集群,我想要实现的是运行包含多个线程的代码,使这些线程在不同的机器上运行,然后将输出返回到主机。

如何实现这样的任务?我尝试使用 pvm 和 mpich2,但找不到这样的规定。请帮忙。

【问题讨论】:

    标签: c++ multithreading cluster-computing mpi


    【解决方案1】:

    【讨论】:

    【解决方案2】:

    当你说你想要多台机器上的多个线程时,你是指那些机器上的线程而不是进程吗?如果是,为什么?一般来说,MPI(无论是 Open MPI、MPICH 还是其他一些实现)都可以做到这一点,甚至可以与 Open MP 结合以在这些机器上提供线程。快速的 Google 搜索可能会提供一千个关于如何设置的教程。

    但是,这些库的工作方式需要您对代码进行一些更改。他们不是魔法。您需要使用消息显式传递重要数据。有很多有用的功能可以让这个过程尽可能高效。

    【讨论】:

    • 好吧,我不知道如何将 mpi 用于单个程序,即我有一个程序,比如说使用并行处理和蛮力生成素数,检查每个数字。我想要做的是检查不同计算机上的不同范围,并检索结果。
    • 这正是 MPI 的用途。它是为 SPMD 程序设计的。你可以找到很多关于 MPI 的教程,但这里有一个很好的教程(虽然有点过时,但仍然适用)mcs.anl.gov/research/projects/mpi/tutorial/gropp/talk.html
    • 感谢本教程,仍有疑问。我在主从机器上都安装了mpi,并且在运行示例时,只有在两台机器上都存在相同的可执行文件时,它才会在从机器上执行,是这样吗?
    • 是的。可执行文件必须在两台机器上都可用。通常,这是在使用 NFS 的集群上完成的,但我认为某些实现可以选择为您预加载应用程序二进制文件。快速浏览一下帮助表明,Open MPI 有一个mpiexec 的标志,称为--preload-files,它会处理它。一般来说,你应该在所有节点上都有你的二进制文件和你需要的任何东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-21
    相关资源
    最近更新 更多