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

📄 colluses.c

📁 MPICH是MPI的重要研究,提供了一系列的接口函数,为并行计算的实现提供了编程环境.
💻 C
字号:
/* * This file checks to see if the collective routine MPI_Allreduce uses * MPI_Send or MPI_Isend to implement the operation.  It should use either * a PMPI routine or a non-MPI routine.   */#include "mpi.h"#include <stdio.h>static int used_send = 0,           used_isend = 0,           used_sendrecv = 0;int main( int argc, char *argv[] ){    int in, out;    int rank;    int in_sends[3], out_sends[3];    MPI_Init( &argc, &argv );        MPI_Comm_rank( MPI_COMM_WORLD, &rank );    in = 1;    MPI_Allreduce( &in, &out, 1, MPI_INT, MPI_SUM, MPI_COMM_WORLD );    /* Now, see whether MPI routines were used */    in_sends[0] = used_send;    in_sends[1] = used_isend;    in_sends[2] = used_sendrecv;    MPI_Reduce( in_sends, out_sends, 3, MPI_INT, MPI_SUM, 0, MPI_COMM_WORLD );    if (rank == 0) {	int errs = 0;	if (in_sends[0] > 0) {	    printf( " Allreduce used MPI_SEND (%d)\n", in_sends[0] );	    errs++;	}	if (in_sends[1] > 0) {	    printf( " Allreduce used MPI_ISEND (%d)\n", in_sends[1] );	    errs++;	}	if (in_sends[2] > 0) {	    printf( " Allreduce used MPI_SENDRECV (%d)\n", in_sends[2] );	    errs++;	}	if (!errs) {	    printf( " No Errors\n" );	}    }    MPI_Finalize( );    return 0;}/*  * Replacements for MPI_Send, Isend, and Sendrecv that detect their use */int MPI_Send( void *buf, int count, MPI_Datatype datatype, int dest, 	      int tag, MPI_Comm comm ){    used_send++;    return PMPI_Send( buf, count, datatype, dest, tag, comm );}int MPI_Sendrecv( void *sendbuf, int sendcount, MPI_Datatype sendtype, 		  int dest, int sendtag,                   void *recvbuf, int recvcount, MPI_Datatype recvtype, 		  int source, int recvtag, MPI_Comm comm, MPI_Status *status ){    used_sendrecv++;    return PMPI_Sendrecv( sendbuf, sendcount, sendtype, dest, sendtag, 			  recvbuf, recvcount, recvtype, source, recvtag, 			  comm, status ); }int MPI_Isend( void *buf, int count, MPI_Datatype datatype, int dest, int tag,	       MPI_Comm comm, MPI_Request *request ){    used_isend++;    return PMPI_Isend( buf, count, datatype, dest, tag, comm, request );}

⌨️ 快捷键说明

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