繁体   English   中英

使用Code :: Blocks运行具有多个进程的MPI程序

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM