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

📄 type_get_name.c

📁 刚才是说明 现在是安装程序在 LINUX环境下进行编程的MPICH安装文件
💻 C
字号:
/* -*- Mode: C; c-basic-offset:4 ; -*- *//* * *  (C) 2001 by Argonne National Laboratory. *      See COPYRIGHT in top-level directory. */#include "mpiimpl.h"#include "datatype.h"/* -- Begin Profiling Symbol Block for routine MPI_Type_get_name */#if defined(HAVE_PRAGMA_WEAK)#pragma weak MPI_Type_get_name = PMPI_Type_get_name#elif defined(HAVE_PRAGMA_HP_SEC_DEF)#pragma _HP_SECONDARY_DEF PMPI_Type_get_name  MPI_Type_get_name#elif defined(HAVE_PRAGMA_CRI_DUP)#pragma _CRI duplicate MPI_Type_get_name as PMPI_Type_get_name#endif/* -- End Profiling Symbol Block *//* Define MPICH_MPI_FROM_PMPI if weak symbols are not supported to build   the MPI routines */#ifndef MPICH_MPI_FROM_PMPI#define MPI_Type_get_name PMPI_Type_get_name#endif/* This routine initializes all of the name fields in the predefined    datatypes */#ifndef MPICH_MPI_FROM_PMPI/* Include these definitions only with the PMPI version */typedef struct { MPI_Datatype dtype; const char *name; } mpi_names_t;static mpi_names_t mpi_names[] = {    { MPI_CHAR, "char" },    { MPI_UNSIGNED_CHAR, "unsigned char" },    { MPI_BYTE, "byte" },    { MPI_WCHAR_T, "wchar_t" },    { MPI_SHORT, "short" },    { MPI_UNSIGNED_SHORT, "unsigned short" },    { MPI_INT, "int" },    { MPI_UNSIGNED, "unsigned" },    { MPI_LONG, "long" },    { MPI_UNSIGNED_LONG, "unsigned long" },    { MPI_FLOAT, "float" },    { MPI_DOUBLE, "double" },    { MPI_LONG_DOUBLE, "long double" },    { MPI_LONG_LONG_INT, "long long int" },    { MPI_LONG_LONG, "long long" },    { MPI_PACKED, "packed" },    { MPI_LB, "lb" },    { MPI_UB, "ub" },    { MPI_FLOAT_INT, "float_int" },    { MPI_DOUBLE_INT, "double_int" },    { MPI_LONG_INT, "long_int" },    { MPI_SHORT_INT, "short_int" },    { MPI_2INT, "2int" },    { MPI_LONG_DOUBLE_INT, "long_double_int" },    /* Fortran */    { MPI_COMPLEX, "COMPLEX" },    { MPI_DOUBLE_COMPLEX, "DOUBLE COMPLEX" },    { MPI_LOGICAL, "LOGICAL" },    { MPI_REAL, "REAL" },    { MPI_DOUBLE_PRECISION, "DOUBLE PRECISION" },    { MPI_INTEGER, "INTEGER" },    { MPI_2INTEGER, "2INTEGER" },    { MPI_2COMPLEX, "2COMPLEX" },    { MPI_2DOUBLE_COMPLEX, "2DOUBLE COMPLEX" },    { MPI_2REAL, "2REAL" },    { MPI_2DOUBLE_PRECISION, "2DOUBLE PRECISION" },    { MPI_CHARACTER, "CHARACTER" },    { 0, (char *)0 },  /* Sentinal used to indicate the last element */};/* This routine is also needed by type_set_name */void MPIR_Datatype_init_names( void ) {    int i;    MPID_Datatype *datatype_ptr = NULL;    static int setup = 0;        if (setup) return;    MPID_Common_thread_lock();    {	if (!setup) {	    /* Make sure that the datatypes are initialized */	    MPIR_Datatype_init();	    /* For each predefined type, ensure that there is a corresponding	       object and that the object's name is set */	    for (i=0; mpi_names[i].name != 0; i++) {		MPID_Datatype_get_ptr( mpi_names[i].dtype, datatype_ptr );		if (!datatype_ptr) {		    MPIU_dbg_printf("IMPLEMENTATION ERROR for datatype %d\n", 			     i );		    continue;		}		MPIU_dbg_printf("mpi_names[%d].name = %x\n", i, (int)mpi_names[i].name ); fflush( stdout );		MPIU_Strncpy( datatype_ptr->name, mpi_names[i].name, 			      MPI_MAX_OBJECT_NAME );	    }	    setup = 1;	}	MPID_Common_thread_unlock();    }}#endif#undef FUNCNAME#define FUNCNAME MPI_Type_get_name/*@   MPI_Type_get_name - get type name   Arguments:+  MPI_Datatype datatype - datatype.  char *type_name - datatype name-  int *resultlen - length of the result   Notes:.N Fortran.N Errors.N MPI_SUCCESS@*/int MPI_Type_get_name(MPI_Datatype datatype, char *type_name, int *resultlen){    static const char FCNAME[] = "MPI_Type_get_name";    int mpi_errno = MPI_SUCCESS;    MPID_Datatype *datatype_ptr = NULL;    static int setup = 0;    MPID_MPI_STATE_DECL(MPID_STATE_MPI_TYPE_GET_NAME);    MPID_MPI_FUNC_ENTER(MPID_STATE_MPI_TYPE_GET_NAME);    /* Get handles to MPI objects. */    MPID_Datatype_get_ptr( datatype, datatype_ptr );#   ifdef HAVE_ERROR_CHECKING    {        MPID_BEGIN_ERROR_CHECKS;        {	    MPIR_ERRTEST_INITIALIZED(mpi_errno);            /* Validate datatype_ptr */            MPID_Datatype_valid_ptr( datatype_ptr, mpi_errno );	    /* If comm_ptr is not value, it will be reset to null */	    MPIR_ERRTEST_ARGNULL(type_name,"type_name", mpi_errno);	    MPIR_ERRTEST_ARGNULL(resultlen,"resultlen", mpi_errno);            if (mpi_errno) {                MPID_MPI_FUNC_EXIT(MPID_STATE_MPI_TYPE_GET_NAME);                return MPIR_Err_return_comm( 0, FCNAME, mpi_errno );            }        }        MPID_END_ERROR_CHECKS;    }#   endif /* HAVE_ERROR_CHECKING */    /* ... body of routine ...  */    /* If this is the first call, initialize all of the predefined names */    if (!setup) { 	MPIR_Datatype_init_names();	setup = 1;    }    /* Include the null in MPI_MAX_OBJECT_NAME */    MPIU_Strncpy( type_name, datatype_ptr->name, MPI_MAX_OBJECT_NAME );    *resultlen = strlen( type_name );    /* ... end of body of routine ... */    MPID_MPI_FUNC_EXIT(MPID_STATE_MPI_TYPE_GET_NAME);    return MPI_SUCCESS;}

⌨️ 快捷键说明

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