用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字

芙蓉妹妹    -  云代码空间

——

0->1,1->2,2->3,,,n->0。循环发送

2019-04-19|745阅||

摘要:MPI_Comm_size(comm,&size); MPI_Comm_rank(comm,&rank); latt = (rank + 1)%size;

#include<stdio.h>
#include"mpi.h"
int main(int argc, char **argv)
{
    MPI_Comm comm = MPI_COMM_WORLD;
    int size, rank, latt,num = 6;
    MPI_Status status;
    MPI_Init(&argc,&argv);
    MPI_Comm_size(comm,&size);
    MPI_Comm_rank(comm,&rank);
    latt = (rank + 1)%size;
    if(rank == 0)
    {
        MPI_Send(&num,1,MPI_INT,1,99,comm);
        printf("Process 0 send num to process 1.\n");
        MPI_Recv(&num,1,MPI_INT,size - 1,99,comm,&status);
        printf("Process 0 recv num from process %d.\n",size-1);
    }
    else {
        MPI_Recv(&num,1,MPI_INT,rank - 1,99,comm,&status);
        printf("Process %d recv num from process %d.\n",rank,rank-1);
        MPI_Send(&num,1,MPI_INT,latt,99,comm);
        printf("Process %d send num to process %d.\n",rank ,latt);
    }
    MPI_Finalize();
    return 0;
}


注意:对size和rank的操作要放在MPI获得进程数和当前进程号之后,若放前面latt结果为0
MPI_Comm_size(comm,&size);
MPI_Comm_rank(comm,&rank);
latt = (rank + 1)%size;
顶 1踩 1收藏
文章评论
    发表评论

    个人资料

    • 昵称: 芙蓉妹妹
    • 等级: 资深程序员
    • 积分: 1710
    • 代码: 104 个
    • 文章: 25 篇
    • 随想: 0 条
    • 访问: 32 次
    • 关注

    标签

    最新提问

      站长推荐