2011-08-24 124 views
3

其实我有3个问题。任何输入赞赏。谢谢!打开MPI:每个主机如何正确运行1个进程

1)如何在每台主机上精确运行1个进程?我的应用程序使用TBB进行多线程。这是否意味着我应该在每台主机上正确运行一个进程以获得最佳性能?

2)我的群集有不同的主机。一些主机比其他主机拥有更好的CPU和更多的内存。如何将进程队列映射到实际主机以用于工作分配目的?我想用hostname.Is有更好的办法吗?

3)如何分配进程排名?什么过程得到0?

回答

3

1)TBB将循环分割成线程池的多个线程,以利用一台机器的所有处理器。所以你应该只在每台机器上运行一个进程。更多的流程将会与处理器时间相互争夺。每台机器的进程数是通过选择在HOSTFILE给出:

# my_hostfile 
192.168.0.208 slots=1 max_slots=1 
... 

2)为了给每台机器根据其工作表现的适当量是不平凡的。 最简单的方法是将工作量分成小块,发送给奴隶,收集答案,并给他们新的工作,直到完成。在我的website(德文)上有一个例子。您也可以在这里找到一些对手册和教程的参考。

3)每个过程

MPI_Comm_rank(MPI_COMM_WORLD, &processID); 

主程序中的获取一个数字(的ProcessID)已的ProcessID == 0,也许其它给出槽在HOSTFILE的顺序。另一种可能性是它们按照与从机的连接建立的顺序进行分配。我不知道。

+0

感谢您的回答。我确实进行了实验,发现0级被分配给执行mpirun的进程。 – pic11

+0

@ pic11:对不起,我没有说清楚:主进程在启动mpirun的机器上运行,是的。 –

相关问题