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

📄 bufattach.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 "bsendutil.h"/* -- Begin Profiling Symbol Block for routine MPI_Buffer_attach */#if defined(HAVE_PRAGMA_WEAK)#pragma weak MPI_Buffer_attach = PMPI_Buffer_attach#elif defined(HAVE_PRAGMA_HP_SEC_DEF)#pragma _HP_SECONDARY_DEF PMPI_Buffer_attach  MPI_Buffer_attach#elif defined(HAVE_PRAGMA_CRI_DUP)#pragma _CRI duplicate MPI_Buffer_attach as PMPI_Buffer_attach#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_Buffer_attach PMPI_Buffer_attach#endif#undef FUNCNAME#define FUNCNAME MPI_Buffer_attach/*@  MPI_Buffer_attach - Attaches a user-defined buffer for sending Input Parameters:+ buffer - initial buffer address (choice) - size - buffer size, in bytes (integer) Notes:The size given should be the sum of the sizes of all outstanding Bsends thatyou intend to have, plus 'MPI_BSEND_OVERHEAD' for each Bsend that you do.For the purposes of calculating size, you should use 'MPI_Pack_size'. In other words, in the code.vb     MPI_Buffer_attach( buffer, size );     MPI_Bsend( ..., count=20, datatype=type1,  ... );     ...     MPI_Bsend( ..., count=40, datatype=type2, ... );.vethe value of 'size' in the 'MPI_Buffer_attach' call should be greater thanthe value computed by.vb     MPI_Pack_size( 20, type1, comm, &s1 );     MPI_Pack_size( 40, type2, comm, &s2 );     size = s1 + s2 + 2 * MPI_BSEND_OVERHEAD;.ve    The 'MPI_BSEND_OVERHEAD' gives the maximum amount of space that may be used in the buffer for use by the BSEND routines in using the buffer.  This value is in 'mpi.h' (for C) and 'mpif.h' (for Fortran)..N fortran.N Errors.N MPI_SUCCESS.N MPI_ERR_BUFFER.N MPI_ERR_INTERN.seealso: MPI_Buffer_detach, MPI_Bsend@*/int MPI_Buffer_attach(void *buffer, int size){    static const char FCNAME[] = "MPI_Buffer_attach";    int mpi_errno = MPI_SUCCESS;    MPID_MPI_STATE_DECL(MPID_STATE_MPI_BUFFER_ATTACH);    MPID_MPI_FUNC_ENTER(MPID_STATE_MPI_BUFFER_ATTACH);#   ifdef HAVE_ERROR_CHECKING    {        MPID_BEGIN_ERROR_CHECKS;        {	    MPIR_ERRTEST_INITIALIZED(mpi_errno);	    MPIR_ERRTEST_ARGNEG(size,"size",mpi_errno);            if (mpi_errno) {                MPID_MPI_FUNC_EXIT(MPID_STATE_MPI_BUFFER_ATTACH);                return MPIR_Err_return_comm( 0, FCNAME, mpi_errno );            }        }        MPID_END_ERROR_CHECKS;    }#   endif /* HAVE_ERROR_CHECKING */    /* ... body of routine ...  */    mpi_errno = MPIR_Bsend_attach( buffer, size );    MPID_MPI_FUNC_EXIT(MPID_STATE_MPI_BUFFER_ATTACH);    if (mpi_errno) {	return MPIR_Err_return_comm( 0, FCNAME, mpi_errno );    }	    /* ... end of body of routine ... */    return MPI_SUCCESS;}

⌨️ 快捷键说明

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