【发布时间】:2014-10-17 23:19:17
【问题描述】:
我是集群技术的新手,我正在为我的公司测试 MPICH2 集群解决方案。
我们有一个实际以这种方式运行的 c 程序:
- 有一个主进程连接到数据库并准备数据
- 主进程创建一些具有不同命令行参数的子进程(从进程使用 fork() 命令创建)
是否可以不加修改地在 MPICH2 集群上运行这些进程? 否则,在集群上运行这个程序需要做哪些修改?
谢谢大家
【问题讨论】:
标签: mpi
我是集群技术的新手,我正在为我的公司测试 MPICH2 集群解决方案。
我们有一个实际以这种方式运行的 c 程序:
是否可以不加修改地在 MPICH2 集群上运行这些进程? 否则,在集群上运行这个程序需要做哪些修改?
谢谢大家
【问题讨论】:
标签: mpi
不要混淆单台机器上的并行进程和分布式进程(通过 MPI),因为它们不是一回事。今天又问了一个问题,也有同样的问题,所以我会向你推荐那个答案:https://stackoverflow.com/a/26428033/491687。
调用fork() 只会在与主进程相同的机器上创建更多进程。如果您只打算使用共享内存和几个进程,那很好。但是,如果您需要使用大量进程(大致进程数 > 内核数)来处理大量数据,那么 MPI 会很有帮助,因为它允许您将多台机器连接在一起并在它们之间传递数据。
所以简短的回答是:不,你不能在没有修改的情况下使用 MPI。将 fork/join 程序转换为 MPI 程序需要进行大量修改。这是设计使然。他们不会尝试解决相同的问题。
【讨论】: