[英]Running MPI programs with multiple processes with Code::Blocks
我是MPI的新手,正在尝试运行“ hello world”程序。 这是我的程序
#include <iostream>
#include <mpi.h>
using namespace std;
int main(int argc, char ** argv)
{
int mynode, totalnodes;
MPI_Init(&argc,&argv);
MPI_Comm_size(MPI_COMM_WORLD, &totalnodes);
MPI_Comm_rank(MPI_COMM_WORLD, &mynode);
cout << "Hello world from process " << mynode;
cout << " of " << totalnodes << endl;
MPI_Finalize();
}
输出只是
来自第0步(共1步)的Hello world
我有多核CPU,我认为至少应运行4个进程。 因此输出应为:
来自4的过程0的Hello world来自4的过程1的Hello world来自4的过程2的Hello world来自4的过程3的Hello world
或类似的东西。 谁能评论我在程序或编译命令中错过了什么? 顺便说一句,我在Windows,MSMPI,Code :: Blocks IDE上的gcc编译器上运行。 谢谢。
它为我工作。
我将粘贴的代码复制到mpi_app.cpp中。 mpicxx由MPI实现者提供的编译器包装脚本,负责处理include和lib。 mpirun是用于启动mpi程序的包装脚本,MPI实现者也提供了该脚本。 我正在使用的MPI实现是mpich2。
$ mpicxx -O0 -o mpi_app mpi_app.cpp
$ mpirun -n 4 ./mpi_app
Hello world from procHello world from process 2 Hello world from process Hello world from process 0 oess 1 of 4
of 4
3 of 4
f 4
注意:“ f 4”不是复制粘贴错误。 当多个进程写入标准输出时,您应该期望消息乱码或散布。
听起来好像您正在编译它,但是,如果没有,似乎必须在Windows上手动添加include和lib: http : //blogs.msdn.com/b/risman/archive/2009/01/04 /ms-mpi-with-visual-studio-2008.aspx
通过同一链接,Windows命令行上的命令看起来像是:
mpiexec –n 10 MyMPIProject.exe
要使它在code :: blocks中运行,您需要告诉code :: blocks像上面一样运行命令。 在下面链接的博客文章中,代码看起来像:: blocks使用“ cb_console_runner.exe”来运行编译的程序。 这篇博客文章对该程序进行了修改,可以接受-mpi标志,告诉它mpiexec在哪里。
http://www.blog.kubiak.co.uk/post/44
设置-mpi标志:
“必须在“项目”->“设置程序的参数”的“代码块”菜单中定义此参数吗?
-mpi <path to mpiexec> -n <number of processes>
例:
-mpi C:/Progra~1/MPICH2/bin/mpiexec -n 8
“
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.