⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ring.c

📁 并行计算的一些演示程序
💻 C
字号:

#include "mpi.h" /*MPI head file*/

#include <stdio.h>

int main( int argc, char** argv )
{
int i, rank, size, tag=1;

int to, from;

int senddata,recvdata;
MPI_Status status; 
MPI_Init(&argc, &argv); /*initializing */
MPI_Comm_rank(MPI_COMM_WORLD, &rank); /*Process#*/
MPI_Comm_size(MPI_COMM_WORLD, &size); /*Total processes#*/

// cyclic shift send-recv with step 1 ~ Size-1

for(i=1;i<size;i++) {

  to = (rank+i)%size;

  from = (size+rank-i)%size;

  
if (rank==0) printf("\n*****Shift Step#%d*****\n\n",i);

//int MPI_Sendrecv(
// void *sendbuf, int sendcount, MPI_Datatype sendtype, int dest, int sendtag, 
// void *recvbuf, int recvcount, MPI_Datatype recvtype, int source, MPI_Datatype recvtag, 
// MPI_Comm comm, MPI_Status *status) 
 
senddata=rank; 

MPI_Sendrecv(&senddata, 1, MPI_INT, to, i, 
             &recvdata, 1, MPI_INT, from, i,
             MPI_COMM_WORLD, &status);

printf("data# %d :  Proc#%d ---> Proc#%d\n", recvdata, from, rank);

//MPI_Barrier(MPI_COMM_WORLD);

}

MPI_Finalize(); /*quit from MPI world*/
return (0);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -