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

📄 mpid_nem_mpich2_rma.c

📁 fortran并行计算包
💻 C
📖 第 1 页 / 共 2 页
字号:
    handle_len = strlen (win->handle);    str_errno = MPIU_Str_add_int_arg (&b, &bl, WIN_HANLEN_KEY, handle_len);    MPIU_ERR_CHKANDJUMP (str_errno == MPIU_STR_NOMEM, mpi_errno, MPI_ERR_OTHER, "**nomem");    MPIU_ERR_CHKANDJUMP (str_errno == MPIU_STR_FAIL, mpi_errno, MPI_ERR_OTHER, "**winserialize");    str_errno = MPIU_Str_add_string_arg(&b, &bl, WIN_HANDLE_KEY, win->handle);    MPIU_ERR_CHKANDJUMP (str_errno == MPIU_STR_NOMEM, mpi_errno, MPI_ERR_OTHER, "**nomem");    MPIU_ERR_CHKANDJUMP (str_errno == MPIU_STR_FAIL, mpi_errno, MPI_ERR_OTHER, "**winserialize");    str_errno = MPIU_Str_add_int_arg (&b, &bl, WIN_PROC_KEY, win->proc);    MPIU_ERR_CHKANDJUMP (str_errno == MPIU_STR_NOMEM, mpi_errno, MPI_ERR_OTHER, "**nomem");    MPIU_ERR_CHKANDJUMP (str_errno == MPIU_STR_FAIL, mpi_errno, MPI_ERR_OTHER, "**winserialize");    str_errno = MPIU_Str_add_binary_arg (&b, &bl, WIN_HOME_ADDR_KEY, win->home_address, sizeof (win->home_address));    MPIU_ERR_CHKANDJUMP (str_errno == MPIU_STR_NOMEM, mpi_errno, MPI_ERR_OTHER, "**nomem");    MPIU_ERR_CHKANDJUMP (str_errno == MPIU_STR_FAIL, mpi_errno, MPI_ERR_OTHER, "**winserialize");    str_errno = MPIU_Str_add_int_arg (&b, &bl, WIN_LEN_KEY, win->len);    MPIU_ERR_CHKANDJUMP (str_errno == MPIU_STR_NOMEM, mpi_errno, MPI_ERR_OTHER, "**nomem");    MPIU_ERR_CHKANDJUMP (str_errno == MPIU_STR_FAIL, mpi_errno, MPI_ERR_OTHER, "**winserialize");    *len = buf_len - bl; fn_exit:    MPIDI_FUNC_EXIT(MPID_STATE_MPID_NEM_MPICH2_SERIALIZE_WIN);    return mpi_errno; fn_fail:    goto fn_exit;}#undef FUNCNAME#define FUNCNAME MPID_nem_mpich2_serialize_win#undef FCNAME#define FCNAME MPIDI_QUOTE(FUNCNAME)intMPID_nem_mpich2_deserialize_win (void *buf, int buf_len, MPID_nem_mpich2_win_t **win){    int mpi_errno = MPI_SUCCESS;    int str_errno;    int ol;    char *b = (char *)buf;    int handle_len;    MPIU_CHKPMEM_DECL(2);    MPIDI_STATE_DECL(MPID_STATE_MPID_NEM_MPICH2_DESERIALIZE_WIN);    MPIDI_FUNC_ENTER(MPID_STATE_MPID_NEM_MPICH2_DESERIALIZE_WIN);    MPIU_CHKPMEM_MALLOC (*win, MPID_nem_mpich2_win_t *, sizeof (MPID_nem_mpich2_win_t), mpi_errno, "win object");    str_errno = MPIU_Str_get_int_arg (b, WIN_HANLEN_KEY, &handle_len);    MPIU_ERR_CHKANDJUMP (str_errno == MPIU_STR_NOMEM, mpi_errno, MPI_ERR_OTHER, "**nomem");    MPIU_ERR_CHKANDJUMP (str_errno == MPIU_STR_FAIL, mpi_errno, MPI_ERR_OTHER, "**windeserialize");    MPIU_CHKPMEM_MALLOC ((*win)->handle, char *, handle_len, mpi_errno, "window handle");    str_errno = MPIU_Str_get_string_arg(b, WIN_HANDLE_KEY, (*win)->handle, handle_len);    MPIU_ERR_CHKANDJUMP (str_errno == MPIU_STR_NOMEM, mpi_errno, MPI_ERR_OTHER, "**nomem");    MPIU_ERR_CHKANDJUMP (str_errno == MPIU_STR_FAIL, mpi_errno, MPI_ERR_OTHER, "**windeserialize");    str_errno = MPIU_Str_get_int_arg (b, WIN_PROC_KEY, &(*win)->proc);    MPIU_ERR_CHKANDJUMP (str_errno == MPIU_STR_NOMEM, mpi_errno, MPI_ERR_OTHER, "**nomem");    MPIU_ERR_CHKANDJUMP (str_errno == MPIU_STR_FAIL, mpi_errno, MPI_ERR_OTHER, "**windeserialize");    str_errno = MPIU_Str_get_binary_arg (b, WIN_HOME_ADDR_KEY, (char *)&(*win)->home_address, sizeof ((*win)->home_address), &ol);    MPIU_ERR_CHKANDJUMP (str_errno == MPIU_STR_NOMEM, mpi_errno, MPI_ERR_OTHER, "**nomem");    MPIU_ERR_CHKANDJUMP (str_errno == MPIU_STR_FAIL || ol != sizeof ((*win)->home_address), mpi_errno, MPI_ERR_OTHER, "**windeserialize");    str_errno = MPIU_Str_get_int_arg (b, WIN_LEN_KEY, &(*win)->len);    MPIU_ERR_CHKANDJUMP (str_errno == MPIU_STR_NOMEM, mpi_errno, MPI_ERR_OTHER, "**nomem");    MPIU_ERR_CHKANDJUMP (str_errno == MPIU_STR_FAIL, mpi_errno, MPI_ERR_OTHER, "**windeserialize");    (*win)->local_address = 0;    MPIU_CHKPMEM_COMMIT(); fn_exit:    MPIDI_FUNC_EXIT(MPID_STATE_MPID_NEM_MPICH2_DESERIALIZE_WIN);    return mpi_errno; fn_fail:    MPIU_CHKPMEM_REAP();    goto fn_exit;}#undef FUNCNAME#define FUNCNAME MPID_nem_mpich2_register_memory#undef FCNAME#define FCNAME MPIDI_QUOTE(FUNCNAME)intMPID_nem_mpich2_register_memory (void *buf, int len){    int mpi_errno = MPI_SUCCESS;    MPIDI_STATE_DECL(MPID_STATE_MPID_NEM_MPICH2_REGISTER_MEMORY);    MPIDI_FUNC_ENTER(MPID_STATE_MPID_NEM_MPICH2_REGISTER_MEMORY);    if (MPID_NEM_NET_MODULE == MPID_NEM_GM_MODULE)    {	/*return MPID_nem_gm_module_register_mem (buf, len);*/    }    MPIDI_FUNC_EXIT(MPID_STATE_MPID_NEM_MPICH2_REGISTER_MEMORY);    return mpi_errno;}#undef FUNCNAME#define FUNCNAME MPID_nem_mpich2_deregister_memory#undef FCNAME#define FCNAME MPIDI_QUOTE(FUNCNAME)intMPID_nem_mpich2_deregister_memory (void *buf, int len){    int mpi_errno = MPI_SUCCESS;    MPIDI_STATE_DECL(MPID_STATE_MPID_NEM_MPICH2_DEREGISTER_MEMORY);    MPIDI_FUNC_ENTER(MPID_STATE_MPID_NEM_MPICH2_DEREGISTER_MEMORY);    if (MPID_NEM_NET_MODULE == MPID_NEM_GM_MODULE)    {	/*return MPID_nem_gm_module_deregister_mem (buf, len);*/    }    MPIDI_FUNC_EXIT(MPID_STATE_MPID_NEM_MPICH2_DEREGISTER_MEMORY);    return mpi_errno;}#undef FUNCNAME#define FUNCNAME MPID_nem_mpich2_put#undef FCNAME#define FCNAME MPIDI_QUOTE(FUNCNAME)intMPID_nem_mpich2_put (void *s_buf, void *d_buf, int len, int proc, int *completion_ctr){    int mpi_errno = MPI_SUCCESS;    MPIDI_STATE_DECL(MPID_STATE_MPID_NEM_MPICH2_PUT);    MPIDI_FUNC_ENTER(MPID_STATE_MPID_NEM_MPICH2_PUT);    if (MPID_NEM_IS_LOCAL (proc))    {        MPIU_ERR_SETANDJUMP (mpi_errno, MPI_ERR_OTHER, "**notimpl");    }    else    {      /*	switch (MPID_NEM_NET_MODULE)	{	case MPID_NEM_GM_MODULE:	    MPID_NEM_ATOMIC_INC (completion_ctr);	    return MPID_nem_gm_module_put (d_buf, s_buf, len, proc, completion_ctr);	    break;	default:            MPIU_ERR_SETANDJUMP (mpi_errno, MPI_ERR_OTHER, "**notimpl");	    break;	}      */    } fn_exit:    MPIDI_FUNC_EXIT(MPID_STATE_MPID_NEM_MPICH2_PUT);    return mpi_errno; fn_fail:    goto fn_exit;}#undef FUNCNAME#define FUNCNAME MPID_nem_mpich2_putv#undef FCNAME#define FCNAME MPIDI_QUOTE(FUNCNAME)intMPID_nem_mpich2_putv (struct iovec **s_iov, int *s_niov, struct iovec **d_iov, int *d_niov, int proc,		   int *completion_ctr){    int mpi_errno = MPI_SUCCESS;    /* int len;*/    MPIDI_STATE_DECL(MPID_STATE_MPID_NEM_MPICH2_PUTV);    MPIDI_FUNC_ENTER(MPID_STATE_MPID_NEM_MPICH2_PUTV);    if (MPID_NEM_IS_LOCAL (proc))    {        MPIU_ERR_SETANDJUMP (mpi_errno, MPI_ERR_OTHER, "**notimpl");    }    else    {      /*	switch (MPID_NEM_NET_MODULE)	{	case MPID_NEM_GM_MODULE:	    while (*s_niov && *d_niov)	    {		if ((*d_iov)->iov_len > (*s_iov)->iov_len)		{		    len = (*s_iov)->iov_len;		    MPID_NEM_ATOMIC_INC (completion_ctr);		    MPID_nem_gm_module_put ((*d_iov)->iov_base, (*s_iov)->iov_base, len, proc, completion_ctr);		    (*d_iov)->iov_base = (char *)(*d_iov)->iov_base + len;		    (*d_iov)->iov_len =- len;		    ++(*s_iov);		    --(*s_niov);		}		else if ((*d_iov)->iov_len > (*s_iov)->iov_len)		{		    len = (*d_iov)->iov_len;		    MPID_NEM_ATOMIC_INC (completion_ctr);		    MPID_nem_gm_module_put ((*d_iov)->iov_base, (*s_iov)->iov_base, len, proc, completion_ctr);		    ++(*d_iov);		    --(*d_niov);		    (*s_iov)->iov_base = (char *)(*s_iov)->iov_base + len;		    (*s_iov)->iov_len =- len;		}		else		{		    len = (*d_iov)->iov_len;		    MPID_NEM_ATOMIC_INC (completion_ctr);		    MPID_nem_gm_module_put ((*d_iov)->iov_base, (*s_iov)->iov_base, len, proc, completion_ctr);		    ++(*d_iov);		    --(*d_niov);		    ++(*s_iov);		    --(*s_niov);		}	    }	    break;	default:	    MPIU_ERR_SETANDJUMP (mpi_errno, MPI_ERR_OTHER, "**notimpl");	    break;	}      */    } fn_exit:    MPIDI_FUNC_EXIT(MPID_STATE_MPID_NEM_MPICH2_PUTV);    return mpi_errno; fn_fail:    goto fn_exit;}#undef FUNCNAME#define FUNCNAME MPID_nem_mpich2_get#undef FCNAME#define FCNAME MPIDI_QUOTE(FUNCNAME)intMPID_nem_mpich2_get (void *s_buf, void *d_buf, int len, int proc, int *completion_ctr){    int mpi_errno = MPI_SUCCESS;    MPIDI_STATE_DECL(MPID_STATE_MPID_NEM_MPICH2_GET);    MPIDI_FUNC_ENTER(MPID_STATE_MPID_NEM_MPICH2_GET);    if (MPID_NEM_IS_LOCAL (proc))    {        MPIU_ERR_SETANDJUMP (mpi_errno, MPI_ERR_OTHER, "**notimpl");    }    else    {      /*      switch (MPID_NEM_NET_MODULE)	{	case MPID_NEM_GM_MODULE:	    MPID_NEM_ATOMIC_INC (completion_ctr);	    return MPID_nem_gm_module_get (d_buf, s_buf, len, proc, completion_ctr);	    break;	default:	    MPIU_ERR_SETANDJUMP (mpi_errno, MPI_ERR_OTHER, "**notimpl");	    break;	}      */    } fn_exit:    MPIDI_FUNC_EXIT(MPID_STATE_MPID_NEM_MPICH2_GET);    return mpi_errno; fn_fail:    goto fn_exit;}#undef FUNCNAME#define FUNCNAME MPID_nem_mpich2_getv#undef FCNAME#define FCNAME MPIDI_QUOTE(FUNCNAME)intMPID_nem_mpich2_getv (struct iovec **s_iov, int *s_niov, struct iovec **d_iov, int *d_niov, int proc,		   int *completion_ctr){    int mpi_errno = MPI_SUCCESS;    /* int len; */    MPIDI_STATE_DECL(MPID_STATE_MPID_NEM_MPICH2_GETV);    MPIDI_FUNC_ENTER(MPID_STATE_MPID_NEM_MPICH2_GETV);    if (MPID_NEM_IS_LOCAL (proc))    {        MPIU_ERR_SETANDJUMP (mpi_errno, MPI_ERR_OTHER, "**notimpl");    }    else    {      /*	switch (MPID_NEM_NET_MODULE)	{	case MPID_NEM_GM_MODULE:	    while (*s_niov && *d_niov)	    {		if ((*d_iov)->iov_len > (*s_iov)->iov_len)		{		    len = (*s_iov)->iov_len;		    MPID_NEM_ATOMIC_INC (completion_ctr);		    MPID_nem_gm_module_get ((*d_iov)->iov_base, (*s_iov)->iov_base, len, proc, completion_ctr);		    (*d_iov)->iov_base = (char *)(*d_iov)->iov_base + len;		    (*d_iov)->iov_len =- len;		    ++(*s_iov);		    --(*s_niov);		}		else if ((*d_iov)->iov_len > (*s_iov)->iov_len)		{		    len = (*d_iov)->iov_len;		    MPID_NEM_ATOMIC_INC (completion_ctr);		    MPID_nem_gm_module_get ((*d_iov)->iov_base, (*s_iov)->iov_base, len, proc, completion_ctr);		    ++(*d_iov);		    --(*d_niov);		    (*s_iov)->iov_base = (char *)(*s_iov)->iov_base + len;		    (*s_iov)->iov_len =- len;		}		else		{		    len = (*d_iov)->iov_len;		    MPID_NEM_ATOMIC_INC (completion_ctr);		    MPID_nem_gm_module_get ((*d_iov)->iov_base, (*s_iov)->iov_base, len, proc, completion_ctr);		    ++(*d_iov);		    --(*d_niov);		    ++(*s_iov);		    --(*s_niov);		}	    }	    break;	default:	    MPIU_ERR_SETANDJUMP (mpi_errno, MPI_ERR_OTHER, "**notimpl");	    break;	}      */    } fn_exit:    MPIDI_FUNC_EXIT(MPID_STATE_MPID_NEM_MPICH2_GETV);    return mpi_errno; fn_fail:    goto fn_exit;}

⌨️ 快捷键说明

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