/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */
/*
* (C) 2006 by Argonne National Laboratory.
* See COPYRIGHT in top-level directory.
*
* Portions of this code were written by Intel Corporation.
* Copyright (C) 2011-2016 Intel Corporation. Intel provides this material
* to Argonne National Laboratory subject to Software Grant and Corporate
* Contributor License Agreement dated February 8, 2012.
*/
#ifndef CH4_WIN_H_INCLUDED
#define CH4_WIN_H_INCLUDED
#include "ch4_impl.h"
#include "ch4r_win.h"
#undef FUNCNAME
#define FUNCNAME MPID_Win_set_info
#undef FCNAME
#define FCNAME MPL_QUOTE(FUNCNAME)
MPL_STATIC_INLINE_PREFIX int MPID_Win_set_info(MPIR_Win * win, MPIR_Info * info)
{
int mpi_errno;
MPIR_FUNC_VERBOSE_STATE_DECL(MPID_STATE_MPID_WIN_SET_INFO);
MPIR_FUNC_VERBOSE_ENTER(MPID_STATE_MPID_WIN_SET_INFO);
#ifdef MPIDI_CH4_DIRECT_NETMOD
mpi_errno = MPIDI_NM_mpi_win_set_info(win, info);
if (mpi_errno != MPI_SUCCESS) {
MPIR_ERR_POP(mpi_errno);
}
#else
mpi_errno = MPIDI_CH4R_mpi_win_set_info(win, info);
if (mpi_errno != MPI_SUCCESS) {
MPIR_ERR_POP(mpi_errno);
}
#endif
fn_exit:
MPIR_FUNC_VERBOSE_EXIT(MPID_STATE_MPID_WIN_SET_INFO);
return mpi_errno;
fn_fail:
goto fn_exit;
}
#undef FUNCNAME
#define FUNCNAME MPID_Win_start
#undef FCNAME
#define FCNAME MPL_QUOTE(FUNCNAME)
MPL_STATIC_INLINE_PREFIX int MPID_Win_start(MPIR_Group * group, int assert, MPIR_Win * win)
{
int mpi_errno;
MPIR_FUNC_VERBOSE_STATE_DECL(MPID_STATE_MPID_WIN_START);
MPIR_FUNC_VERBOSE_ENTER(MPID_STATE_MPID_WIN_START);
MPID_THREAD_CS_ENTER(VNI, MPIDI_CH4_Global.vni_lock);
MPIDI_workq_vni_progress_unsafe();
#ifdef MPIDI_CH4_DIRECT_NETMOD
mpi_errno = MPIDI_NM_mpi_win_start(group, assert, win);
if (mpi_errno != MPI_SUCCESS) {
MPIR_ERR_POP(mpi_errno);
}
#else
mpi_errno = MPIDI_CH4R_mpi_win_start(group, assert, win);
if (mpi_errno != MPI_SUCCESS)
MPIR_ERR_POP(mpi_errno);
#endif
fn_exit:
MPID_THREAD_CS_EXIT(VNI, MPIDI_CH4_Global.vni_lock);
MPIR_FUNC_VERBOSE_EXIT(MPID_STATE_MPID_WIN_START);
return mpi_errno;
fn_fail:
goto fn_exit;
}
#undef FUNCNAME
#define FUNCNAME MPID_Win_complete
#undef FCNAME
#define FCNAME MPL_QUOTE(FUNCNAME)
MPL_STATIC_INLINE_PREFIX int MPID_Win_complete(MPIR_Win * win)
{
int mpi_errno;
MPIR_FUNC_VERBOSE_STATE_DECL(MPID_STATE_MPID_WIN_COMPLETE);
MPIR_FUNC_VERBOSE_ENTER(MPID_STATE_MPID_WIN_COMPLETE);
MPID_THREAD_CS_ENTER(VNI, MPIDI_CH4_Global.vni_lock);
MPIDI_workq_vni_progress_unsafe();
#ifdef MPIDI_CH4_DIRECT_NETMOD
mpi_errno = MPIDI_NM_mpi_win_complete(win);
if (mpi_errno != MPI_SUCCESS) {
MPIR_ERR_POP(mpi_errno);
}
#else
mpi_errno = MPIDI_CH4R_mpi_win_complete(win);
if (mpi_errno != MPI_SUCCESS)
MPIR_ERR_POP(mpi_errno);
#endif
fn_exit:
MPID_THREAD_CS_EXIT(VNI, MPIDI_CH4_Global.vni_lock);
MPIR_FUNC_VERBOSE_EXIT(MPID_STATE_MPID_WIN_COMPLETE);
return mpi_errno;
fn_fail:
goto fn_exit;
}
#undef FUNCNAME
#define FUNCNAME MPID_Win_post
#undef FCNAME
#define FCNAME MPL_QUOTE(FUNCNAME)
MPL_STATIC_INLINE_PREFIX int MPID_Win_post(MPIR_Group * group, int assert, MPIR_Win * win)
{
int mpi_errno;
MPIR_FUNC_VERBOSE_STATE_DECL(MPID_STATE_MPID_WIN_POST);
MPIR_FUNC_VERBOSE_ENTER(MPID_STATE_MPID_WIN_POST);
MPID_THREAD_CS_ENTER(VNI, MPIDI_CH4_Global.vni_lock);
MPIDI_workq_vni_progress_unsafe();
#ifdef MPIDI_CH4_DIRECT_NETMOD
mpi_errno = MPIDI_NM_mpi_win_post(group, assert, win);
if (mpi_errno != MPI_SUCCESS) {
MPIR_ERR_POP(mpi_errno);
}
#else
mpi_errno = MPIDI_CH4R_mpi_win_post(group, assert, win);
if (mpi_errno != MPI_SUCCESS)
MPIR_ERR_POP(mpi_errno);
#endif
fn_exit:
MPID_THREAD_CS_EXIT(VNI, MPIDI_CH4_Global.vni_lock);
MPIR_FUNC_VERBOSE_EXIT(MPID_STATE_MPID_WIN_POST);
return mpi_errno;
fn_fail:
goto fn_exit;
}
#undef FUNCNAME
#define FUNCNAME MPID_Win_wait
#undef FCNAME
#define FCNAME MPL_QUOTE(FUNCNAME)
MPL_STATIC_INLINE_PREFIX int MPID_Win_wait(MPIR_Win * win)
{
int mpi_errno;
MPIR_FUNC_VERBOSE_STATE_DECL(MPID_STATE_MPID_WIN_WAIT);
MPIR_FUNC_VERBOSE_ENTER(MPID_STATE_MPID_WIN_WAIT);
MPID_THREAD_CS_ENTER(VNI, MPIDI_CH4_Global.vni_lock);
MPIDI_workq_vni_progress_unsafe();
#ifdef MPIDI_CH4_DIRECT_NETMOD
mpi_errno = MPIDI_NM_mpi_win_wait(win);
if (mpi_errno != MPI_SUCCESS) {
MPIR_ERR_POP(mpi_errno);
}
#else
mpi_errno = MPIDI_CH4R_mpi_win_wait(win);
if (mpi_errno != MPI_SUCCESS)
MPIR_ERR_POP(mpi_errno);
#endif
fn_exit:
MPID_THREAD_CS_EXIT(VNI, MPIDI_CH4_Global.vni_lock);
MPIR_FUNC_VERBOSE_EXIT(MPID_STATE_MPID_WIN_WAIT);
return mpi_errno;
fn_fail:
goto fn_exit;
}
#undef FUNCNAME
#define FUNCNAME MPID_Win_test
#undef FCNAME
#define FCNAME MPL_QUOTE(FUNCNAME)
MPL_STATIC_INLINE_PREFIX int MPID_Win_test(MPIR_Win * win, int *flag)
{
int mpi_errno;
MPIR_FUNC_VERBOSE_STATE_DECL(MPID_STATE_MPID_WIN_TEST);
MPIR_FUNC_VERBOSE_ENTER(MPID_STATE_MPID_WIN_TEST);
MPID_THREAD_CS_ENTER(VNI, MPIDI_CH4_Global.vni_lock);
MPIDI_workq_vni_progress_unsafe();
#ifdef MPIDI_CH4_DIRECT_NETMOD
mpi_errno = MPIDI_NM_mpi_win_test(win, flag);
if (mpi_errno != MPI_SUCCESS) {
MPIR_ERR_POP(mpi_errno);
}
#else
mpi_errno = MPIDI_CH4R_mpi_win_test(win, flag);
if (mpi_errno != MPI_SUCCESS)
MPIR_ERR_POP(mpi_errno);
#endif
fn_exit:
MPID_THREAD_CS_EXIT(VNI, MPIDI_CH4_Global.vni_lock);
MPIR_FUNC_VERBOSE_EXIT(MPID_STATE_MPID_WIN_TEST);
return mpi_errno;
fn_fail:
goto fn_exit;
}
#undef FUNCNAME
#define FUNCNAME MPID_Win_lock
#undef FCNAME
#define FCNAME MPL_QUOTE(FUNCNAME)
MPL_STATIC_INLINE_PREFIX int MPID_Win_lock(int lock_type, int rank, int assert, MPIR_Win * win)
{
int mpi_errno;
MPIR_FUNC_VERBOSE_STATE_DECL(MPID_STATE_MPID_WIN_LOCK);
MPIR_FUNC_VERBOSE_ENTER(MPID_STATE_MPID_WIN_LOCK);
MPID_THREAD_CS_ENTER(VNI, MPIDI_CH4_Global.vni_lock);
MPIDI_workq_vni_progress_unsafe();
#ifdef MPIDI_CH4_DIRECT_NETMOD
mpi_errno = MPIDI_NM_mpi_win_lock(lock_type, rank, assert, win, NULL);
if (mpi_errno != MPI_SUCCESS) {
MPIR_ERR_POP(mpi_errno);
}
#else
mpi_errno = MPIDI_CH4R_mpi_win_lock(lock_type, rank, assert, win);
if (mpi_errno != MPI_SUCCESS)
MPIR_ERR_POP(mpi_errno);
#endif
fn_exit:
MPID_THREAD_CS_EXIT(VNI, MPIDI_CH4_Global.vni_lock);
MPIR_FUNC_VERBOSE_EXIT(MPID_STATE_MPID_WIN_LOCK);
return mpi_errno;
fn_fail:
goto fn_exit;
}
#undef FUNCNAME
#define FUNCNAME MPID_Win_unlock
#undef FCNAME
#define FCNAME MPL_QUOTE(FUNCNAME)
MPL_STATIC_INLINE_PREFIX int MPID_Win_unlock(int rank, MPIR_Win * win)
{
int mpi_errno;
MPIR_FUNC_VERBOSE_STATE_DECL(MPID_STATE_MPID_WIN_UNLOCK);
MPIR_FUNC_VERBOSE_ENTER(MPID_STATE_MPID_WIN_UNLOCK);
MPID_THREAD_CS_ENTER(VNI, MPIDI_CH4_Global.vni_lock);
MPIDI_workq_vni_progress_unsafe();
#ifdef MPIDI_CH4_DIRECT_NETMOD
mpi_errno = MPIDI_NM_mpi_win_unlock(rank, win, NULL);
if (mpi_errno != MPI_SUCCESS) {
MPIR_ERR_POP(mpi_errno);
}
#else
mpi_errno = MPIDI_CH4R_mpi_win_unlock(rank, win);
if (mpi_errno != MPI_SUCCESS)
MPIR_ERR_POP(mpi_errno);
#endif
fn_exit:
MPID_THREAD_CS_EXIT(VNI, MPIDI_CH4_Global.vni_lock);
MPIR_FUNC_VERBOSE_EXIT(MPID_STATE_MPID_WIN_UNLOCK);
return mpi_errno;
fn_fail:
goto fn_exit;
}
#undef FUNCNAME
#define FUNCNAME MPID_Win_get_info
#undef FCNAME
#define FCNAME MPL_QUOTE(FUNCNAME)
MPL_STATIC_INLINE_PREFIX int MPID_Win_get_info(MPIR_Win * win, MPIR_Info ** info_p_p)
{
int mpi_errno;
MPIR_FUNC_VERBOSE_STATE_DECL(MPID_STATE_MPID_WIN_GET_INFO);
MPIR_FUNC_VERBOSE_ENTER(MPID_STATE_MPID_WIN_GET_INFO);
#ifdef MPIDI_CH4_DIRECT_NETMOD
mpi_errno = MPIDI_NM_mpi_win_get_info(win, info_p_p);
if (mpi_errno != MPI_SUCCESS) {
MPIR_ERR_POP(mpi_errno);
}
#else
mpi_errno = MPIDI_CH4R_mpi_win_get_info(win, info_p_p);
if (mpi_errno != MPI_SUCCESS) {
MPIR_ERR_POP(mpi_errno);
}
#endif
fn_exit:
MPIR_FUNC_VERBOSE_EXIT(MPID_STATE_MPID_WIN_GET_INFO);
return mpi_errno;
fn_fail:
goto fn_exit;
}
#undef FUNCNAME
#define FUNCNAME MPID_Win_free
#undef FCNAME
#define FCNAME MPL_QUOTE(FUNCNAME)
MPL_STATIC_INLINE_PREFIX int MPID_Win_free(MPIR_Win ** win_ptr)
{
int mpi_errno;
MPIR_FUNC_VERBOSE_STATE_DECL(MPID_STATE_MPID_WIN_FREE);
MPIR_FUNC_VERBOSE_ENTER(MPID_STATE_MPID_WIN_FREE);
#ifdef MPIDI_CH4_DIRECT_NETMOD
mpi_errno = MPIDI_NM_mpi_win_free(win_ptr);
if (mpi_errno != MPI_SUCCESS) {
MPIR_ERR_POP(mpi_errno);
}
#else
mpi_errno = MPIDI_CH4R_mpi_win_free(win_ptr);
if (mpi_errno != MPI_SUCCESS)
MPIR_ERR_POP(mpi_errno);
#endif
fn_exit:
MPIR_FUNC_VERBOSE_EXIT(MPID_STATE_MPID_WIN_FREE);
return mpi_errno;
fn_fail:
goto fn_exit;
}
#undef FUNCNAME
#define FUNCNAME MPID_Win_fence
#undef FCNAME
#define FCNAME MPL_QUOTE(FUNCNAME)
MPL_STATIC_INLINE_PREFIX int MPID_Win_fence(int assert, MPIR_Win * win)
{
int mpi_errno;
MPIR_FUNC_VERBOSE_STATE_DECL(MPID_STATE_MPID_WIN_FENCE);
MPIR_FUNC_VERBOSE_ENTER(MPID_STATE_MPID_WIN_FENCE);
MPID_THREAD_CS_ENTER(VNI, MPIDI_CH4_Global.vni_lock);
MPIDI_workq_vni_progress_unsafe();
#ifdef MPIDI_CH4_DIRECT_NETMOD
mpi_errno = MPIDI_NM_mpi_win_fence(assert, win);
if (mpi_errno != MPI_SUCCESS) {
MPIR_ERR_POP(mpi_errno);
}
#else
mpi_errno = MPIDI_CH4R_mpi_win_fence(assert, win);
if (mpi_errno != MPI_SUCCESS)
MPIR_ERR_POP(mpi_errno);
#endif
fn_exit:
MPID_THREAD_CS_EXIT(VNI, MPIDI_CH4_Global.vni_lock);
MPIR_FUNC_VERBOSE_EXIT(MPID_STATE_MPID_WIN_FENCE);
return mpi_errno;
fn_fail:
goto fn_exit;
}
#undef FUNCNAME
#define FUNCNAME MPID_Win_create
#undef FCNAME
#define FCNAME MPL_QUOTE(FUNCNAME)
MPL_STATIC_INLINE_PREFIX int MPID_Win_create(void *base,
MPI_Aint length,
int disp_unit,
MPIR_Info * info, MPIR_Comm * comm_ptr,
MPIR_Win ** win_ptr)
{
int mpi_errno;
MPIR_FUNC_VERBOSE_STATE_DECL(MPID_STATE_MPID_WIN_CREATE);
MPIR_FUNC_VERBOSE_ENTER(MPID_STATE_MPID_WIN_CREATE);
#ifdef MPIDI_CH4_DIRECT_NETMOD
mpi_errno = MPIDI_NM_mpi_win_create(base, length, disp_unit, info, comm_ptr, win_ptr);
if (mpi_errno != MPI_SUCCESS) {
MPIR_ERR_POP(mpi_errno);
}
#else
mpi_errno = MPIDI_CH4R_mpi_win_create(base, length, disp_unit, info, comm_ptr, win_ptr);
if (mpi_errno != MPI_SUCCESS)
MPIR_ERR_POP(mpi_errno);
#endif
fn_exit:
MPIR_FUNC_VERBOSE_EXIT(MPID_STATE_MPID_WIN_CREATE);
return mpi_errno;
fn_fail:
goto fn_exit;
}
#undef FUNCNAME
#define FUNCNAME MPID_Win_attach
#undef FCNAME
#define FCNAME MPL_QUOTE(FUNCNAME)
MPL_STATIC_INLINE_PREFIX int MPID_Win_attach(MPIR_Win * win, void *base, MPI_Aint size)
{
int mpi_errno;
MPIR_FUNC_VERBOSE_STATE_DECL(MPID_STATE_MPID_WIN_ATTACH);
MPIR_FUNC_VERBOSE_ENTER(MPID_STATE_MPID_WIN_ATTACH);
#ifdef MPIDI_CH4_DIRECT_NETMOD
mpi_errno = MPIDI_NM_mpi_win_attach(win, base, size);
if (mpi_errno != MPI_SUCCESS) {
MPIR_ERR_POP(mpi_errno);
}
#else
mpi_errno = MPIDI_CH4R_mpi_win_attach(win, base, size);
if (mpi_errno != MPI_SUCCESS)
MPIR_ERR_POP(mpi_errno);
#endif
fn_exit:
MPIR_FUNC_VERBOSE_EXIT(MPID_STATE_MPID_WIN_ATTACH);
return mpi_errno;
fn_fail:
goto fn_exit;
}
#undef FUNCNAME
#define FUNCNAME MPID_Win_allocate_shared
#undef FCNAME
#define FCNAME MPL_QUOTE(FUNCNAME)
MPL_STATIC_INLINE_PREFIX int MPID_Win_allocate_shared(MPI_Aint size,
int disp_unit,
MPIR_Info * info_ptr,
MPIR_Comm * comm_ptr,
void **base_ptr, MPIR_Win ** win_ptr)
{
int mpi_errno;
MPIR_FUNC_VERBOSE_STATE_DECL(MPID_STATE_MPID_WIN_ALLOCATE_SHARED);
MPIR_FUNC_VERBOSE_ENTER(MPID_STATE_MPID_WIN_ALLOCATE_SHARED);
#ifdef MPIDI_CH4_DIRECT_NETMOD
mpi_errno = MPIDI_NM_mpi_win_allocate_shared(size, disp_unit,
info_ptr, comm_ptr, base_ptr, win_ptr);
if (mpi_errno != MPI_SUCCESS) {
MPIR_ERR_POP(mpi_errno);
}
#else
mpi_errno = MPIDI_CH4R_mpi_win_allocate_shared(size, disp_unit, info_ptr,
comm_ptr, base_ptr, win_ptr);
if (mpi_errno != MPI_SUCCESS)
MPIR_ERR_POP(mpi_errno);
#endif
fn_exit:
MPIR_FUNC_VERBOSE_EXIT(MPID_STATE_MPID_WIN_ALLOCATE_SHARED);
return mpi_errno;
fn_fail:
goto fn_exit;
}
#undef FUNCNAME
#define FUNCNAME MPID_Win_flush_local
#undef FCNAME
#define FCNAME MPL_QUOTE(FUNCNAME)
MPL_STATIC_INLINE_PREFIX int MPID_Win_flush_local(int rank, MPIR_Win * win)
{
int mpi_errno;
MPIR_FUNC_VERBOSE_STATE_DECL(MPID_STATE_MPID_WIN_FLUSH_LOCAL);
MPIR_FUNC_VERBOSE_ENTER(MPID_STATE_MPID_WIN_FLUSH_LOCAL);
MPID_THREAD_CS_ENTER(VNI, MPIDI_CH4_Global.vni_lock);
MPIDI_workq_vni_progress_unsafe();
#ifdef MPIDI_CH4_DIRECT_NETMOD
mpi_errno = MPIDI_NM_mpi_win_flush_local(rank, win, NULL);
if (mpi_errno != MPI_SUCCESS) {
MPIR_ERR_POP(mpi_errno);
}
#else
mpi_errno = MPIDI_CH4R_mpi_win_flush_local(rank, win);
if (mpi_errno != MPI_SUCCESS)
MPIR_ERR_POP(mpi_errno);
#endif
fn_exit:
MPID_THREAD_CS_EXIT(VNI, MPIDI_CH4_Global.vni_lock);
MPIR_FUNC_VERBOSE_EXIT(MPID_STATE_MPID_WIN_FLUSH_LOCAL);
return mpi_errno;
fn_fail:
goto fn_exit;
}
#undef FUNCNAME
#define FUNCNAME MPID_Win_detach
#undef FCNAME
#define FCNAME MPL_QUOTE(FUNCNAME)
MPL_STATIC_INLINE_PREFIX int MPID_Win_detach(MPIR_Win * win, const void *base)
{
int mpi_errno;
MPIR_FUNC_VERBOSE_STATE_DECL(MPID_STATE_MPID_WIN_DETACH);
MPIR_FUNC_VERBOSE_ENTER(MPID_STATE_MPID_WIN_DETACH);
#ifdef MPIDI_CH4_DIRECT_NETMOD
mpi_errno = MPIDI_NM_mpi_win_detach(win, base);
if (mpi_errno != MPI_SUCCESS) {
MPIR_ERR_POP(mpi_errno);
}
#else
mpi_errno = MPIDI_CH4R_mpi_win_detach(win, base);
if (mpi_errno != MPI_SUCCESS)
MPIR_ERR_POP(mpi_errno);
#endif
fn_exit:
MPIR_FUNC_VERBOSE_EXIT(MPID_STATE_MPID_WIN_DETACH);
return mpi_errno;
fn_fail:
goto fn_exit;
}
#undef FUNCNAME
#define FUNCNAME MPID_Win_shared_query
#undef FCNAME
#define FCNAME MPL_QUOTE(FUNCNAME)
MPL_STATIC_INLINE_PREFIX int MPID_Win_shared_query(MPIR_Win * win,
int rank, MPI_Aint * size, int *disp_unit,
void *baseptr)
{
int mpi_errno;
MPIR_FUNC_VERBOSE_STATE_DECL(MPID_STATE_MPID_WIN_SHARED_QUERY);
MPIR_FUNC_VERBOSE_ENTER(MPID_STATE_MPID_WIN_SHARED_QUERY);
#ifdef MPIDI_CH4_DIRECT_NETMOD
mpi_errno = MPIDI_NM_mpi_win_shared_query(win, rank, size, disp_unit, baseptr);
if (mpi_errno != MPI_SUCCESS) {
MPIR_ERR_POP(mpi_errno);
}
#else
mpi_errno = MPIDI_CH4R_mpi_win_shared_query(win, rank, size, disp_unit, baseptr);
if (mpi_errno != MPI_SUCCESS)
MPIR_ERR_POP(mpi_errno);
#endif
fn_exit:
MPIR_FUNC_VERBOSE_EXIT(MPID_STATE_MPID_WIN_SHARED_QUERY);
return mpi_errno;
fn_fail:
goto fn_exit;
}
#undef FUNCNAME
#define FUNCNAME MPID_Win_allocate
#undef FCNAME
#define FCNAME MPL_QUOTE(FUNCNAME)
MPL_STATIC_INLINE_PREFIX int MPID_Win_allocate(MPI_Aint size,
int disp_unit,
MPIR_Info * info,
MPIR_Comm * comm, void *baseptr, MPIR_Win ** win)
{
int mpi_errno;
MPIR_FUNC_VERBOSE_STATE_DECL(MPID_STATE_MPID_WIN_ALLOCATE);
MPIR_FUNC_VERBOSE_ENTER(MPID_STATE_MPID_WIN_ALLOCATE);
#ifdef MPIDI_CH4_DIRECT_NETMOD
mpi_errno = MPIDI_NM_mpi_win_allocate(size, disp_unit, info, comm, baseptr, win);
if (mpi_errno != MPI_SUCCESS) {
MPIR_ERR_POP(mpi_errno);
}
#else
mpi_errno = MPIDI_CH4R_mpi_win_allocate(size, disp_unit, info, comm, baseptr, win);
if (mpi_errno != MPI_SUCCESS)
MPIR_ERR_POP(mpi_errno);
#endif
fn_exit:
MPIR_FUNC_VERBOSE_EXIT(MPID_STATE_MPID_WIN_ALLOCATE);
return mpi_errno;
fn_fail:
goto fn_exit;
}
#undef FUNCNAME
#define FUNCNAME MPID_Win_flush
#undef FCNAME
#define FCNAME MPL_QUOTE(FUNCNAME)
MPL_STATIC_INLINE_PREFIX int MPID_Win_flush(int rank, MPIR_Win * win)
{
int mpi_errno;
MPIR_FUNC_VERBOSE_STATE_DECL(MPID_STATE_MPID_WIN_FLUSH);
MPIR_FUNC_VERBOSE_ENTER(MPID_STATE_MPID_WIN_FLUSH);
MPID_THREAD_CS_ENTER(VNI, MPIDI_CH4_Global.vni_lock);
MPIDI_workq_vni_progress_unsafe();
#ifdef MPIDI_CH4_DIRECT_NETMOD
mpi_errno = MPIDI_NM_mpi_win_flush(rank, win, NULL);
if (mpi_errno != MPI_SUCCESS) {
MPIR_ERR_POP(mpi_errno);
}
#else
mpi_errno = MPIDI_CH4R_mpi_win_flush(rank, win);
if (mpi_errno != MPI_SUCCESS)
MPIR_ERR_POP(mpi_errno);
#endif
fn_exit:
MPID_THREAD_CS_EXIT(VNI, MPIDI_CH4_Global.vni_lock);
MPIR_FUNC_VERBOSE_EXIT(MPID_STATE_MPID_WIN_FLUSH);
return mpi_errno;
fn_fail:
goto fn_exit;
}
#undef FUNCNAME
#define FUNCNAME MPID_Win_flush_local_all
#undef FCNAME
#define FCNAME MPL_QUOTE(FUNCNAME)
MPL_STATIC_INLINE_PREFIX int MPID_Win_flush_local_all(MPIR_Win * win)
{
int mpi_errno;
MPIR_FUNC_VERBOSE_STATE_DECL(MPID_STATE_MPID_WIN_FLUSH_LOCAL_ALL);
MPIR_FUNC_VERBOSE_ENTER(MPID_STATE_MPID_WIN_FLUSH_LOCAL_ALL);
MPID_THREAD_CS_ENTER(VNI, MPIDI_CH4_Global.vni_lock);
MPIDI_workq_vni_progress_unsafe();
#ifdef MPIDI_CH4_DIRECT_NETMOD
mpi_errno = MPIDI_NM_mpi_win_flush_local_all(win);
if (mpi_errno != MPI_SUCCESS) {
MPIR_ERR_POP(mpi_errno);
}
#else
mpi_errno = MPIDI_CH4R_mpi_win_flush_local_all(win);
if (mpi_errno != MPI_SUCCESS)
MPIR_ERR_POP(mpi_errno);
#endif
fn_exit:
MPID_THREAD_CS_EXIT(VNI, MPIDI_CH4_Global.vni_lock);
MPIR_FUNC_VERBOSE_EXIT(MPID_STATE_MPID_WIN_FLUSH_LOCAL_ALL);
return mpi_errno;
fn_fail:
goto fn_exit;
}
#undef FUNCNAME
#define FUNCNAME MPID_Win_unlock_all
#undef FCNAME
#define FCNAME MPL_QUOTE(FUNCNAME)
MPL_STATIC_INLINE_PREFIX int MPID_Win_unlock_all(MPIR_Win * win)
{
int mpi_errno;
MPIR_FUNC_VERBOSE_STATE_DECL(MPID_STATE_MPID_WIN_UNLOCK_ALL);
MPIR_FUNC_VERBOSE_ENTER(MPID_STATE_MPID_WIN_UNLOCK_ALL);
MPID_THREAD_CS_ENTER(VNI, MPIDI_CH4_Global.vni_lock);
MPIDI_workq_vni_progress_unsafe();
#ifdef MPIDI_CH4_DIRECT_NETMOD
mpi_errno = MPIDI_NM_mpi_win_unlock_all(win);
if (mpi_errno != MPI_SUCCESS) {
MPIR_ERR_POP(mpi_errno);
}
#else
mpi_errno = MPIDI_CH4R_mpi_win_unlock_all(win);
if (mpi_errno != MPI_SUCCESS)
MPIR_ERR_POP(mpi_errno);
#endif
fn_exit:
MPID_THREAD_CS_EXIT(VNI, MPIDI_CH4_Global.vni_lock);
MPIR_FUNC_VERBOSE_EXIT(MPID_STATE_MPID_WIN_UNLOCK_ALL);
return mpi_errno;
fn_fail:
goto fn_exit;
}
#undef FUNCNAME
#define FUNCNAME MPID_Win_create_dynamic
#undef FCNAME
#define FCNAME MPL_QUOTE(FUNCNAME)
MPL_STATIC_INLINE_PREFIX int MPID_Win_create_dynamic(MPIR_Info * info, MPIR_Comm * comm,
MPIR_Win ** win)
{
int mpi_errno;
MPIR_FUNC_VERBOSE_STATE_DECL(MPID_STATE_MPID_WIN_CREATE_DYNAMIC);
MPIR_FUNC_VERBOSE_ENTER(MPID_STATE_MPID_WIN_CREATE_DYNAMIC);
#ifdef MPIDI_CH4_DIRECT_NETMOD
mpi_errno = MPIDI_NM_mpi_win_create_dynamic(info, comm, win);
if (mpi_errno != MPI_SUCCESS) {
MPIR_ERR_POP(mpi_errno);
}
#else
mpi_errno = MPIDI_CH4R_mpi_win_create_dynamic(info, comm, win);
if (mpi_errno != MPI_SUCCESS)
MPIR_ERR_POP(mpi_errno);
#endif
fn_exit:
MPIR_FUNC_VERBOSE_EXIT(MPID_STATE_MPID_WIN_CREATE_DYNAMIC);
return mpi_errno;
fn_fail:
goto fn_exit;
}
#undef FUNCNAME
#define FUNCNAME MPID_Win_sync
#undef FCNAME
#define FCNAME MPL_QUOTE(FUNCNAME)
MPL_STATIC_INLINE_PREFIX int MPID_Win_sync(MPIR_Win * win)
{
int mpi_errno;
MPIR_FUNC_VERBOSE_STATE_DECL(MPID_STATE_MPID_WIN_SYNC);
MPIR_FUNC_VERBOSE_ENTER(MPID_STATE_MPID_WIN_SYNC);
MPID_THREAD_CS_ENTER(VNI, MPIDI_CH4_Global.vni_lock);
MPIDI_workq_vni_progress_unsafe();
#ifdef MPIDI_CH4_DIRECT_NETMOD
mpi_errno = MPIDI_NM_mpi_win_sync(win);
if (mpi_errno != MPI_SUCCESS) {
MPIR_ERR_POP(mpi_errno);
}
#else
mpi_errno = MPIDI_CH4R_mpi_win_sync(win);
if (mpi_errno != MPI_SUCCESS)
MPIR_ERR_POP(mpi_errno);
#endif
fn_exit:
MPID_THREAD_CS_EXIT(VNI, MPIDI_CH4_Global.vni_lock);
MPIR_FUNC_VERBOSE_EXIT(MPID_STATE_MPID_WIN_SYNC);
return mpi_errno;
fn_fail:
goto fn_exit;
}
#undef FUNCNAME
#define FUNCNAME MPID_Win_flush_all
#undef FCNAME
#define FCNAME MPL_QUOTE(FUNCNAME)
MPL_STATIC_INLINE_PREFIX int MPID_Win_flush_all(MPIR_Win * win)
{
int mpi_errno;
MPIR_FUNC_VERBOSE_STATE_DECL(MPID_STATE_MPID_WIN_FLUSH_ALL);
MPIR_FUNC_VERBOSE_ENTER(MPID_STATE_MPID_WIN_FLUSH_ALL);
MPID_THREAD_CS_ENTER(VNI, MPIDI_CH4_Global.vni_lock);
MPIDI_workq_vni_progress_unsafe();
#ifdef MPIDI_CH4_DIRECT_NETMOD
mpi_errno = MPIDI_NM_mpi_win_flush_all(win);
if (mpi_errno != MPI_SUCCESS) {
MPIR_ERR_POP(mpi_errno);
}
#else
mpi_errno = MPIDI_CH4R_mpi_win_flush_all(win);
if (mpi_errno != MPI_SUCCESS)
MPIR_ERR_POP(mpi_errno);
#endif
fn_exit:
MPID_THREAD_CS_EXIT(VNI, MPIDI_CH4_Global.vni_lock);
MPIR_FUNC_VERBOSE_EXIT(MPID_STATE_MPID_WIN_FLUSH_ALL);
return mpi_errno;
fn_fail:
goto fn_exit;
}
#undef FUNCNAME
#define FUNCNAME MPID_Win_lock_all
#undef FCNAME
#define FCNAME MPL_QUOTE(FUNCNAME)
MPL_STATIC_INLINE_PREFIX int MPID_Win_lock_all(int assert, MPIR_Win * win)
{
int mpi_errno;
MPIR_FUNC_VERBOSE_STATE_DECL(MPID_STATE_MPID_WIN_LOCK_ALL);
MPIR_FUNC_VERBOSE_ENTER(MPID_STATE_MPID_WIN_LOCK_ALL);
MPID_THREAD_CS_ENTER(VNI, MPIDI_CH4_Global.vni_lock);
MPIDI_workq_vni_progress_unsafe();
#ifdef MPIDI_CH4_DIRECT_NETMOD
mpi_errno = MPIDI_NM_mpi_win_lock_all(assert, win);
if (mpi_errno != MPI_SUCCESS) {
MPIR_ERR_POP(mpi_errno);
}
#else
mpi_errno = MPIDI_CH4R_mpi_win_lock_all(assert, win);
if (mpi_errno != MPI_SUCCESS)
MPIR_ERR_POP(mpi_errno);
#endif
fn_exit:
MPID_THREAD_CS_EXIT(VNI, MPIDI_CH4_Global.vni_lock);
MPIR_FUNC_VERBOSE_EXIT(MPID_STATE_MPID_WIN_LOCK_ALL);
return mpi_errno;
fn_fail:
goto fn_exit;
}
#endif /* CH4_WIN_H_INCLUDED */