首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我不能一次打开get 8进程?

为什么我不能一次打开get 8进程?
EN

Stack Overflow用户
提问于 2012-08-11 11:18:48
回答 1查看 88关注 0票数 0

我是MPI的初学者。当我编写我的第一个程序时,我遇到了一个棘手的问题。

代码语言:javascript
复制
MPI_Init(&argc, &argv) ; 
MPI_Comm_rank( MPI_COMM_WORLD, &rank) ; 
MPI_Comm_size( MPI_COMM_WORLD, &size)  ;
printf("Process: %d\n", rank);
printf("Procs_num: %d\n", size);

和:

代码语言:javascript
复制
mpicc main.c -o main 
mpirun -np 8 main

但我得到的只是8个副本:

代码语言:javascript
复制
Process: 0
Procs_num: 1

我期望得到的是:

代码语言:javascript
复制
Process: 0~7 
Procs_num: 8

我猜这是因为MPI_COMM_WORLD中没有8个进程,但我找不到原因,也不知道如何解决它。

我希望你能领会我想表达的意思。太多了!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-11 18:46:48

显然你忘了给MPI_Finalize打电话

下面是正确的代码:

代码语言:javascript
复制
#include <stdio.h>
#include <stdlib.h>
#include <mpi.h> 

int main (int argc, char *argv[]) {
    int rank, size;

    MPI_Init(&argc, &argv) ; 
    MPI_Comm_rank( MPI_COMM_WORLD, &rank) ; 
    MPI_Comm_size( MPI_COMM_WORLD, &size)  ;
    printf("Process: %d\n", rank);
    printf("Procs_num: %d\n", size);

    MPI_Finalize();                         

   return(0);
}

然后你会得到你的8个不同的排名:

代码语言:javascript
复制
~/mpi_tests/examples > mpirun -np 8 ~/mpi_tests/examples/t
Process: 4
Procs_num: 8
Process: 5
Procs_num: 8
Process: 0
Procs_num: 8
Process: 1
Procs_num: 8
Process: 7
Procs_num: 8
Process: 2
Procs_num: 8
Process: 3
Procs_num: 8
Process: 6
Procs_num: 8
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11911615

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档