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

📄 tmatchsize.c

📁 mpi并行计算的c++代码 可用vc或gcc编译通过 可以用来搭建并行计算试验环境
💻 C
字号:
/* -*- Mode: C; c-basic-offset:4 ; -*- *//* * *  (C) 2003 by Argonne National Laboratory. *      See COPYRIGHT in top-level directory. */#include "mpi.h"#include <stdio.h>#include <stdlib.h>#include "mpitest.h"static char MTEST_Descrip[] = "Test of type_match_size";/* * type match size is part of the extended Fortran support, and may not * be present in  */int main( int argc, char *argv[] ){    int errs = 0, err;    int dsize;    MPI_Datatype  newtype;    MTest_Init( &argc, &argv );    /* Check the most likely cases.  Note that it is an error to       free the type returned by MPI_Type_match_size.  Also note       that it is an error to request a size not supported by the compiler,       so Type_match_size should generate an error in that case */    MPI_Comm_set_errhandler( MPI_COMM_WORLD, MPI_ERRORS_RETURN );    err = MPI_Type_match_size( MPI_TYPECLASS_REAL, sizeof(float), &newtype );    if (err) {	errs++;	MTestPrintErrorMsg( "Float: ", err );    }    else {	err = MPI_Type_size( newtype, &dsize );	if (err) {	    errs++;	    MTestPrintErrorMsg( "Float type: ", err );	}	else {	    if (dsize != sizeof(float)) {		errs++;		printf( "Unexpected size for float (%d != %d)\n", 			dsize, (int) sizeof(float) );	    }	}    }    err = MPI_Type_match_size( MPI_TYPECLASS_REAL, sizeof(double), &newtype );    if (err) {	errs++;	MTestPrintErrorMsg( "Double: ", err );    }    else {	MPI_Type_size( newtype, &dsize );	if (dsize != sizeof(double)) {	    errs++;	    printf( "Unexpected size for double\n" );	}    }#ifdef HAVE_LONG_DOUBLE    err = MPI_Type_match_size( MPI_TYPECLASS_REAL, sizeof(long double), &newtype );    if (err) {	errs++;	MTestPrintErrorMsg( "Long double: ", err );    }    else {	MPI_Type_size( newtype, &dsize );	if (dsize != sizeof(long double)) {	    errs++;	    printf( "Unexpected size for long double\n" );	}    }#endif        err = MPI_Type_match_size( MPI_TYPECLASS_INTEGER, sizeof(short), &newtype );    if (err) {	errs++;	MTestPrintErrorMsg( "Short: ", err );    }    else {	MPI_Type_size( newtype, &dsize );	if (dsize != sizeof(short)) {	    errs++;	    printf( "Unexpected size for short\n" );	}    }    err = MPI_Type_match_size( MPI_TYPECLASS_INTEGER, sizeof(int), &newtype );    if (err) {	errs++;	MTestPrintErrorMsg( "Int: ", err );    }    else {	MPI_Type_size( newtype, &dsize );	if (dsize != sizeof(int)) {	    errs++;	    printf( "Unexpected size for int\n" );	}    }    err = MPI_Type_match_size( MPI_TYPECLASS_INTEGER, sizeof(long), &newtype );    if (err) {	errs++;	MTestPrintErrorMsg( "Long: ", err );    }    else {	MPI_Type_size( newtype, &dsize );	if (dsize != sizeof(long)) {	    errs++;	    printf( "Unexpected size for long\n" );	}    }#ifdef HAVE_LONG_LONG    err = MPI_Type_match_size( MPI_TYPECLASS_INTEGER, sizeof(long long), &newtype );    if (err) {	errs++;	MTestPrintErrorMsg( "Long long: ", err );    }    else {	MPI_Type_size( newtype, &dsize );	if (dsize != sizeof(long long)) {	    errs++;	    printf( "Unexpected size for long long\n" );	}    }#endif    /* COMPLEX is a FORTRAN type.  The MPICH2 Type_match_size attempts       to give a valid datatype, but if Fortran is not available,       MPI_COMPLEX and MPI_DOUBLE_COMPLEX are not supported.         Allow this case by testing for MPI_DATATYPE_NULL */    if (MPI_COMPLEX != MPI_DATATYPE_NULL) {	err = MPI_Type_match_size( MPI_TYPECLASS_COMPLEX, 2*sizeof(float), &newtype );	if (err) {	    errs++;	    MTestPrintErrorMsg( "Complex: ", err );	}	else {	    MPI_Type_size( newtype, &dsize );	    if (dsize != 2*sizeof(float)) {		errs++;		printf( "Unexpected size for complex\n" );	    }	}    }    if (MPI_COMPLEX != MPI_DATATYPE_NULL &&	MPI_DOUBLE_COMPLEX != MPI_DATATYPE_NULL) {	err = MPI_Type_match_size( MPI_TYPECLASS_COMPLEX, 2*sizeof(double), &newtype );	if (err) {	    errs++;	    MTestPrintErrorMsg( "Double complex: ", err );	}	else {	    MPI_Type_size( newtype, &dsize );	    if (dsize != 2*sizeof(double)) {		errs++;		printf( "Unexpected size for double complex\n" );	    }	}    }        MTest_Finalize( errs );    MPI_Finalize();    return 0;}

⌨️ 快捷键说明

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