📄 mpid_nem_mpich2_rma.c
字号:
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 + -