我必须在集群中实现MPI系统.如果这里的任何人有MPI(MPICH/OpenMPI)的任何经验,我想知道哪个更好,以及如何在x86_64盒的集群上提升性能.
让我们说有一台4个CPU的计算机,每个CPU有2个核心,所以共有8个核心.由于我的理解有限,我认为在这种情况下所有处理器共享相同的内存.现在,最好直接使用openMP或使用MPI使其通用,以便代码可以在分布式和共享设置上工作.另外,如果我将MPI用于共享设置,那么与openMP相比性能会降低吗?
MPI中的MPI_Allgather和MPI_Alltoall函数之间的主要区别是什么?
我的意思是,有人可以给我一些例子,其中MPI_Allgather会有所帮助而MPI_Alltoall不会吗?反之亦然.
我无法理解主要区别?看起来在这两种情况下,所有进程都会将send_cnt元素发送给参与通信器的每个其他进程并接收它们?
谢谢
我不明白错误信息.我试图做的是在我安装mpich2版本1.4或1.5后运行MPICH2应用程序/opt/mpich2
(两个版本都失败并出现相同的错误).我的MPI应用程序是用1.3编译的,但是我可以在另一个工作站上用mpi 1.4运行它.我在Ubuntu 12.04上测试它.
Fatal error in PMPI_Init_thread: Other MPI error, error stack:
MPIR_Init_thread(467)..............:
MPID_Init(177).....................: channel initialization failed
MPIDI_CH3_Init(70).................:
MPID_nem_init(319).................:
MPID_nem_tcp_init(171).............:
MPID_nem_tcp_get_business_card(418):
MPID_nem_tcp_init(377).............: gethostbyname failed, localhost (errno 3)
Run Code Online (Sandbox Code Playgroud) 这就是我们如何使用MPI_Init函数
int main(int argc, char **argv)
{
MPI_Init(&argc, &argv);
…
}
Run Code Online (Sandbox Code Playgroud)
为什么MPI_Init使用指向argc和argv的指针而不是argv的值?
嗨,我有点像MPI noob,所以请耐心等待.:)
假设我有一个名为foo.c的MPI程序,我运行可执行文件
mpirun -np 3 ./foo
现在这意味着程序将使用3个处理器并行运行(每个处理器1个进程).但是,由于目前大多数处理器都有多个核心,(每个处理器需要2个核心),这是否意味着该程序将在3核或3处理器上运行?
可能这与我对核心和处理器之间的差异真正如此的不太理解有关,如果你还可以解释一些有用的东西.
谢谢.
我正在使用MPI,我想测量通信成本,以便我可以将它们与"处理"成本进行比较,例如,我需要多长时间通过n个流程分散列表然后将其与多少时间进行比较时间我需要对它进行排序.
有没有人知道任何衡量这种通信成本的工具?(分散例如)
有没有什么可以测量MPI通信成本,例如PAPI来分析代码性能?
提前致谢!
通常当我使用mpirun时,我可以"超载"它,使用的处理器比我的计算机上的处理器多.例如,在我的四核mac上,我可以运行mpirun -np 29 python -c "print 'hey'"
没问题.我现在在另一台机器上,这会引发以下错误:
$ mpirun -np 25 python -c "print 'hey'"
--------------------------------------------------------------------------
There are not enough slots available in the system to satisfy the 25 slots
that were requested by the application:
python
Either request fewer slots for your application, or make more slots available
for use.
--------------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)
为什么不"超频"mpirun在这里工作?有没有办法可以克服此错误消息并使用比可用处理器更多的处理器成功运行?