使用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();
}
输出只是
我有多核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
"
相关文章:
- MPI:检查是否有任何进程已终止
- 从Visual Studio 2017运行MPI应用程序,每个进程在不同的cmd窗口中
- 如何在MPI中将矩阵从一个进程转移到另一个进程
- 线性搜索 MPI(在其他进程中停止)
- RAM 在 MPI 中的进程之间如何分布?
- MPI C 逐行向所有进程子进程发送矩阵 (MPI_COMM_SPAWN)
- 尝试启动另一个进程并通过 MPI 加入它,但获得访问冲突
- MPI在某个进程找到解决方案时使用广播结束程序
- 在MPI进程之间更新数组
- MPI一个计数器用于所有进程
- 如何在VisualStudio中设置MPI中的进程数
- 如何使用MPI库仅为进程的子集调用(c++)函数
- MPI中每个进程的随机数
- 广播消息供所有进程退出 (MPI)
- MPI 中的奇怪输出使用MPI_Comm_spawn生成进程
- MPI如何使在根进程中初始化的变量在其他进程中可见
- MPI 从进程在不再工作时挂起
- 检查相邻从进程是否在MPI中结束
- MPI::COMM::Create之后的死锁(所有进程终止)
- 如何使用mpi将文件从一个进程传输到另一个进程