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

Running MPI programs with multiple processes with Code::Blocks

本文关键字:进程 MPI 程序 Code Blocks 运行 使用      更新时间:2023-10-16

我是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();
}

输出只是

我有多核CPU,我认为应该至少有4个进程在运行。所以输出应该是:

来自进程0(4)的Hello world进程1(进程4)的Hello world进程2(进程4)的Hello world

或类似的东西。有人能评论一下我在程序或编译命令中遗漏了什么吗?顺便说一下,我在Windows, MSMPI, gcc编译器上运行Code::Blocks IDE。谢谢。

这对我来说很有效。

我复制粘贴你的代码到mpi_app.cpp。mpicxx一个由MPI实现者提供的编译器包装脚本,负责包含和库。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

注意:" f4 "不是复制粘贴错误。当多个进程写入标准输出时,您应该期望出现乱码或分散的消息。

这听起来像你得到它编译,但如果没有,它看起来像在Windows上你必须手动添加包含和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像上面那样运行命令。从下面链接的博客文章来看,code::blocks使用'cb_console_runner.exe'来运行编译后的程序。这篇博客文章有一个修改版本的程序,它将接受一个-mpi标志,告诉它mpiexec在哪里。

http://www.blog.kubiak.co.uk/post/44

设置-mpi标志:

"参数this必须在Project -> Set programs ' arguments菜单中定义? "

-mpi <path to mpiexec> -n <number of processes>

的例子:

-mpi C:/Progra~1/MPICH2/bin/mpiexec -n 8 

"