X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/84402e8e2ee2a2d0bef25fdceb0a263ed8b471f6..f807f3ecd43bd280674b57f277d3af275fbfbaa5:/src/smpi/bindings/smpi_pmpi_win.cpp diff --git a/src/smpi/bindings/smpi_pmpi_win.cpp b/src/smpi/bindings/smpi_pmpi_win.cpp index 45b784428d..8c2cb9a9ad 100644 --- a/src/smpi/bindings/smpi_pmpi_win.cpp +++ b/src/smpi/bindings/smpi_pmpi_win.cpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2007-2020. The SimGrid Team. All rights reserved. */ +/* Copyright (c) 2007-2021. The SimGrid Team. All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ @@ -14,13 +14,17 @@ XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(smpi_pmpi); #define CHECK_RMA\ - CHECK_BUFFER(1, origin_addr, origin_count)\ CHECK_COUNT(2, origin_count)\ CHECK_TYPE(3, origin_datatype)\ - CHECK_PROC(4, target_rank)\ - CHECK_NEGATIVE(4, MPI_ERR_RANK, target_rank)\ + CHECK_BUFFER(1, origin_addr, origin_count, origin_datatype)\ + CHECK_PROC_RMA(4, target_rank, win)\ CHECK_COUNT(6, target_count)\ CHECK_TYPE(7, target_datatype) + +#define CHECK_TARGET_DISP(num)\ + if(win->dynamic()==0)\ + CHECK_NEGATIVE((num), MPI_ERR_RMA_RANGE, target_disp) + /* PMPI User level calls */ int PMPI_Win_create( void *base, MPI_Aint size, int disp_unit, MPI_Info info, MPI_Comm comm, MPI_Win *win){ @@ -44,8 +48,6 @@ int PMPI_Win_allocate( MPI_Aint size, int disp_unit, MPI_Info info, MPI_Comm com CHECK_NEGATIVE(2, MPI_ERR_OTHER, size) CHECK_NEGATIVE(3, MPI_ERR_OTHER, disp_unit) void* ptr = xbt_malloc(size); - if(ptr==nullptr) - return MPI_ERR_NO_MEM; smpi_bench_end(); *static_cast(base) = ptr; *win = new simgrid::smpi::Win( ptr, size, disp_unit, info, comm,1); @@ -61,8 +63,6 @@ int PMPI_Win_allocate_shared( MPI_Aint size, int disp_unit, MPI_Info info, MPI_C int rank = comm->rank(); if(rank==0){ ptr = xbt_malloc(size*comm->size()); - if(ptr==nullptr) - return MPI_ERR_NO_MEM; } smpi_bench_end(); simgrid::smpi::colls::bcast(&ptr, sizeof(void*), MPI_BYTE, 0, comm); @@ -131,7 +131,7 @@ int PMPI_Win_get_info(MPI_Win win, MPI_Info* info) { CHECK_WIN(1, win) CHECK_NULL(2, MPI_ERR_ARG, info) - *info = win->info(); + *info = new simgrid::smpi::Info(win->info()); return MPI_SUCCESS; } @@ -162,28 +162,25 @@ int PMPI_Win_fence( int assert, MPI_Win win){ int PMPI_Get( void *origin_addr, int origin_count, MPI_Datatype origin_datatype, int target_rank, MPI_Aint target_disp, int target_count, MPI_Datatype target_datatype, MPI_Win win){ - CHECK_RMA CHECK_WIN(8, win) + CHECK_RMA + CHECK_TARGET_DISP(5) int retval = 0; smpi_bench_end(); - if (win->dynamic()==0 && target_disp <0){ - //in case of dynamic window, target_disp can be mistakenly seen as negative, as it is an address - retval = MPI_ERR_ARG; - } else { - int my_proc_id = simgrid::s4u::this_actor::get_pid(); - MPI_Group group; - win->get_group(&group); - TRACE_smpi_comm_in(my_proc_id, __func__, - new simgrid::instr::Pt2PtTIData("Get", target_rank, origin_datatype->is_replayable() - ? origin_count - : origin_count * origin_datatype->size(), - simgrid::smpi::Datatype::encode(origin_datatype))); - - retval = win->get( origin_addr, origin_count, origin_datatype, target_rank, target_disp, target_count, - target_datatype); - TRACE_smpi_comm_out(my_proc_id); - } + + int my_proc_id = simgrid::s4u::this_actor::get_pid(); + MPI_Group group; + win->get_group(&group); + TRACE_smpi_comm_in(my_proc_id, __func__, + new simgrid::instr::Pt2PtTIData("Get", target_rank, origin_datatype->is_replayable() + ? origin_count + : origin_count * origin_datatype->size(), + simgrid::smpi::Datatype::encode(origin_datatype))); + retval = win->get( origin_addr, origin_count, origin_datatype, target_rank, target_disp, target_count, + target_datatype); + TRACE_smpi_comm_out(my_proc_id); + smpi_bench_begin(); return retval; } @@ -192,61 +189,57 @@ int PMPI_Rget( void *origin_addr, int origin_count, MPI_Datatype origin_datatype MPI_Aint target_disp, int target_count, MPI_Datatype target_datatype, MPI_Win win, MPI_Request* request){ if(target_rank==MPI_PROC_NULL) *request = MPI_REQUEST_NULL; - CHECK_RMA CHECK_WIN(8, win) + CHECK_RMA + CHECK_TARGET_DISP(5) CHECK_NULL(9, MPI_ERR_ARG, request) int retval = 0; smpi_bench_end(); - if (win->dynamic()==0 && target_disp <0){ - //in case of dynamic window, target_disp can be mistakenly seen as negative, as it is an address - retval = MPI_ERR_ARG; - } else { - int my_proc_id = simgrid::s4u::this_actor::get_pid(); - MPI_Group group; - win->get_group(&group); - TRACE_smpi_comm_in(my_proc_id, __func__, - new simgrid::instr::Pt2PtTIData( - "Rget", target_rank, - origin_datatype->is_replayable() ? origin_count : origin_count * origin_datatype->size(), - simgrid::smpi::Datatype::encode(origin_datatype))); - retval = win->get( origin_addr, origin_count, origin_datatype, target_rank, target_disp, target_count, - target_datatype, request); + int my_proc_id = simgrid::s4u::this_actor::get_pid(); + MPI_Group group; + win->get_group(&group); + TRACE_smpi_comm_in(my_proc_id, __func__, + new simgrid::instr::Pt2PtTIData( + "Rget", target_rank, + origin_datatype->is_replayable() ? origin_count : origin_count * origin_datatype->size(), + simgrid::smpi::Datatype::encode(origin_datatype))); + + retval = win->get( origin_addr, origin_count, origin_datatype, target_rank, target_disp, target_count, + target_datatype, request); + + TRACE_smpi_comm_out(my_proc_id); - TRACE_smpi_comm_out(my_proc_id); - } smpi_bench_begin(); return retval; } int PMPI_Put(const void *origin_addr, int origin_count, MPI_Datatype origin_datatype, int target_rank, MPI_Aint target_disp, int target_count, MPI_Datatype target_datatype, MPI_Win win){ - CHECK_RMA CHECK_WIN(8, win) + CHECK_RMA + CHECK_TARGET_DISP(5) int retval = 0; smpi_bench_end(); - if (win->dynamic()==0 && target_disp <0){ - //in case of dynamic window, target_disp can be mistakenly seen as negative, as it is an address - retval = MPI_ERR_ARG; - } else { - int my_proc_id = simgrid::s4u::this_actor::get_pid(); - MPI_Group group; - win->get_group(&group); - int dst_traced = group->actor(target_rank)->get_pid(); - TRACE_smpi_comm_in(my_proc_id, __func__, - new simgrid::instr::Pt2PtTIData("Put", target_rank, origin_datatype->is_replayable() - ? origin_count - : origin_count * origin_datatype->size(), - simgrid::smpi::Datatype::encode(origin_datatype))); - TRACE_smpi_send(my_proc_id, my_proc_id, dst_traced, SMPI_RMA_TAG, origin_count * origin_datatype->size()); - - retval = win->put( origin_addr, origin_count, origin_datatype, target_rank, target_disp, target_count, - target_datatype); - TRACE_smpi_comm_out(my_proc_id); - } + int my_proc_id = simgrid::s4u::this_actor::get_pid(); + MPI_Group group; + win->get_group(&group); + int dst_traced = group->actor_pid(target_rank); + TRACE_smpi_comm_in(my_proc_id, __func__, + new simgrid::instr::Pt2PtTIData("Put", target_rank, origin_datatype->is_replayable() + ? origin_count + : origin_count * origin_datatype->size(), + simgrid::smpi::Datatype::encode(origin_datatype))); + TRACE_smpi_send(my_proc_id, my_proc_id, dst_traced, SMPI_RMA_TAG, origin_count * origin_datatype->size()); + + retval = win->put( origin_addr, origin_count, origin_datatype, target_rank, target_disp, target_count, + target_datatype); + + TRACE_smpi_comm_out(my_proc_id); + smpi_bench_begin(); return retval; } @@ -255,60 +248,56 @@ int PMPI_Rput(const void *origin_addr, int origin_count, MPI_Datatype origin_dat MPI_Aint target_disp, int target_count, MPI_Datatype target_datatype, MPI_Win win, MPI_Request* request){ if(target_rank==MPI_PROC_NULL) *request = MPI_REQUEST_NULL; - CHECK_RMA CHECK_WIN(8, win) + CHECK_RMA + CHECK_TARGET_DISP(5) CHECK_NULL(9, MPI_ERR_ARG, request) int retval = 0; smpi_bench_end(); - if (win->dynamic()==0 && target_disp <0){ - //in case of dynamic window, target_disp can be mistakenly seen as negative, as it is an address - retval = MPI_ERR_ARG; - } else { - int my_proc_id = simgrid::s4u::this_actor::get_pid(); - MPI_Group group; - win->get_group(&group); - int dst_traced = group->actor(target_rank)->get_pid(); - TRACE_smpi_comm_in(my_proc_id, __func__, - new simgrid::instr::Pt2PtTIData( - "Rput", target_rank, - origin_datatype->is_replayable() ? origin_count : origin_count * origin_datatype->size(), - simgrid::smpi::Datatype::encode(origin_datatype))); - TRACE_smpi_send(my_proc_id, my_proc_id, dst_traced, SMPI_RMA_TAG, origin_count * origin_datatype->size()); - - retval = win->put( origin_addr, origin_count, origin_datatype, target_rank, target_disp, target_count, - target_datatype, request); - TRACE_smpi_comm_out(my_proc_id); - } + int my_proc_id = simgrid::s4u::this_actor::get_pid(); + MPI_Group group; + win->get_group(&group); + int dst_traced = group->actor_pid(target_rank); + TRACE_smpi_comm_in(my_proc_id, __func__, + new simgrid::instr::Pt2PtTIData( + "Rput", target_rank, + origin_datatype->is_replayable() ? origin_count : origin_count * origin_datatype->size(), + simgrid::smpi::Datatype::encode(origin_datatype))); + TRACE_smpi_send(my_proc_id, my_proc_id, dst_traced, SMPI_RMA_TAG, origin_count * origin_datatype->size()); + + retval = win->put( origin_addr, origin_count, origin_datatype, target_rank, target_disp, target_count, + target_datatype, request); + + TRACE_smpi_comm_out(my_proc_id); + smpi_bench_begin(); return retval; } int PMPI_Accumulate(const void *origin_addr, int origin_count, MPI_Datatype origin_datatype, int target_rank, MPI_Aint target_disp, int target_count, MPI_Datatype target_datatype, MPI_Op op, MPI_Win win){ - CHECK_RMA - CHECK_OP(8) CHECK_WIN(9, win) + CHECK_RMA + CHECK_MPI_NULL(8, MPI_OP_NULL, MPI_ERR_OP, op) + CHECK_TARGET_DISP(5) int retval = 0; + smpi_bench_end(); - if (win->dynamic()==0 && target_disp <0){ - //in case of dynamic window, target_disp can be mistakenly seen as negative, as it is an address - retval = MPI_ERR_ARG; - } else { - int my_proc_id = simgrid::s4u::this_actor::get_pid(); - MPI_Group group; - win->get_group(&group); - TRACE_smpi_comm_in(my_proc_id, __func__, - new simgrid::instr::Pt2PtTIData( - "Accumulate", target_rank, - origin_datatype->is_replayable() ? origin_count : origin_count * origin_datatype->size(), - simgrid::smpi::Datatype::encode(origin_datatype))); - retval = win->accumulate( origin_addr, origin_count, origin_datatype, target_rank, target_disp, target_count, - target_datatype, op); + int my_proc_id = simgrid::s4u::this_actor::get_pid(); + MPI_Group group; + win->get_group(&group); + TRACE_smpi_comm_in(my_proc_id, __func__, + new simgrid::instr::Pt2PtTIData( + "Accumulate", target_rank, + origin_datatype->is_replayable() ? origin_count : origin_count * origin_datatype->size(), + simgrid::smpi::Datatype::encode(origin_datatype))); + retval = win->accumulate( origin_addr, origin_count, origin_datatype, target_rank, target_disp, target_count, + target_datatype, op); + + TRACE_smpi_comm_out(my_proc_id); - TRACE_smpi_comm_out(my_proc_id); - } smpi_bench_begin(); return retval; } @@ -317,31 +306,30 @@ int PMPI_Raccumulate(const void *origin_addr, int origin_count, MPI_Datatype ori MPI_Aint target_disp, int target_count, MPI_Datatype target_datatype, MPI_Op op, MPI_Win win, MPI_Request* request){ if(target_rank==MPI_PROC_NULL) *request = MPI_REQUEST_NULL; - CHECK_RMA - CHECK_OP(8) CHECK_WIN(9, win) + CHECK_RMA + CHECK_MPI_NULL(8, MPI_OP_NULL, MPI_ERR_OP, op) + CHECK_TARGET_DISP(5) CHECK_NULL(10, MPI_ERR_ARG, request) int retval = 0; + smpi_bench_end(); - if (win->dynamic()==0 && target_disp <0){ - //in case of dynamic window, target_disp can be mistakenly seen as negative, as it is an address - retval = MPI_ERR_ARG; - } else { - int my_proc_id = simgrid::s4u::this_actor::get_pid(); - MPI_Group group; - win->get_group(&group); - TRACE_smpi_comm_in(my_proc_id, __func__, - new simgrid::instr::Pt2PtTIData( - "Raccumulate", target_rank, - origin_datatype->is_replayable() ? origin_count : origin_count * origin_datatype->size(), - simgrid::smpi::Datatype::encode(origin_datatype))); - retval = win->accumulate( origin_addr, origin_count, origin_datatype, target_rank, target_disp, target_count, - target_datatype, op, request); + int my_proc_id = simgrid::s4u::this_actor::get_pid(); + MPI_Group group; + win->get_group(&group); + TRACE_smpi_comm_in(my_proc_id, __func__, + new simgrid::instr::Pt2PtTIData( + "Raccumulate", target_rank, + origin_datatype->is_replayable() ? origin_count : origin_count * origin_datatype->size(), + simgrid::smpi::Datatype::encode(origin_datatype))); + + retval = win->accumulate( origin_addr, origin_count, origin_datatype, target_rank, target_disp, target_count, + target_datatype, op, request); + + TRACE_smpi_comm_out(my_proc_id); - TRACE_smpi_comm_out(my_proc_id); - } smpi_bench_begin(); return retval; } @@ -349,41 +337,39 @@ int PMPI_Raccumulate(const void *origin_addr, int origin_count, MPI_Datatype ori int PMPI_Get_accumulate(const void *origin_addr, int origin_count, MPI_Datatype origin_datatype, void *result_addr, int result_count, MPI_Datatype result_datatype, int target_rank, MPI_Aint target_disp, int target_count, MPI_Datatype target_datatype, MPI_Op op, MPI_Win win){ - if (op != MPI_NO_OP) - CHECK_BUFFER(1, origin_addr, origin_count) CHECK_COUNT(2, origin_count) if(origin_count>0) CHECK_TYPE(3, origin_datatype) - CHECK_BUFFER(4, result_addr, result_count) + if (op != MPI_NO_OP) + CHECK_BUFFER(1, origin_addr, origin_count, origin_datatype) CHECK_COUNT(5, result_count) CHECK_TYPE(6, result_datatype) - CHECK_PROC(7, target_rank) - CHECK_NEGATIVE(7, MPI_ERR_RANK, target_rank) + CHECK_BUFFER(4, result_addr, result_count, result_datatype) + CHECK_WIN(12, win) + CHECK_PROC_RMA(7, target_rank, win) CHECK_COUNT(9, target_count) CHECK_TYPE(10, target_datatype) - CHECK_OP(11) - CHECK_WIN(12, win) + CHECK_MPI_NULL(11, MPI_OP_NULL, MPI_ERR_OP, op) + CHECK_TARGET_DISP(8) + int retval = 0; smpi_bench_end(); - if (win->dynamic()==0 && target_disp <0){ - //in case of dynamic window, target_disp can be mistakenly seen as negative, as it is an address - retval = MPI_ERR_ARG; - } else { - int my_proc_id = simgrid::s4u::this_actor::get_pid(); - MPI_Group group; - win->get_group(&group); - TRACE_smpi_comm_in(my_proc_id, __func__, - new simgrid::instr::Pt2PtTIData( - "Get_accumulate", target_rank, - target_datatype->is_replayable() ? target_count : target_count * target_datatype->size(), - simgrid::smpi::Datatype::encode(target_datatype))); - - retval = win->get_accumulate( origin_addr, origin_count, origin_datatype, result_addr, - result_count, result_datatype, target_rank, target_disp, - target_count, target_datatype, op); - TRACE_smpi_comm_out(my_proc_id); - } + int my_proc_id = simgrid::s4u::this_actor::get_pid(); + MPI_Group group; + win->get_group(&group); + TRACE_smpi_comm_in(my_proc_id, __func__, + new simgrid::instr::Pt2PtTIData( + "Get_accumulate", target_rank, + target_datatype->is_replayable() ? target_count : target_count * target_datatype->size(), + simgrid::smpi::Datatype::encode(target_datatype))); + + retval = win->get_accumulate( origin_addr, origin_count, origin_datatype, result_addr, + result_count, result_datatype, target_rank, target_disp, + target_count, target_datatype, op); + + TRACE_smpi_comm_out(my_proc_id); + smpi_bench_begin(); return retval; } @@ -394,40 +380,37 @@ int result_count, MPI_Datatype result_datatype, int target_rank, MPI_Aint target MPI_Datatype target_datatype, MPI_Op op, MPI_Win win, MPI_Request* request){ if(target_rank==MPI_PROC_NULL) *request = MPI_REQUEST_NULL; - CHECK_BUFFER(1, origin_addr, origin_count) CHECK_COUNT(2, origin_count) CHECK_TYPE(3, origin_datatype) - CHECK_BUFFER(4, result_addr, result_count) + CHECK_BUFFER(1, origin_addr, origin_count, origin_datatype) CHECK_COUNT(5, result_count) CHECK_TYPE(6, result_datatype) - CHECK_PROC(7, target_rank) - CHECK_NEGATIVE(7, MPI_ERR_RANK, target_rank) + CHECK_BUFFER(4, result_addr, result_count, result_datatype) + CHECK_WIN(12, win) + CHECK_PROC_RMA(7, target_rank, win) CHECK_COUNT(9, target_count) CHECK_TYPE(10, target_datatype) - CHECK_OP(11) - CHECK_WIN(12, win) + CHECK_MPI_NULL(11, MPI_OP_NULL, MPI_ERR_OP, op) + CHECK_TARGET_DISP(8) CHECK_NULL(10, MPI_ERR_ARG, request) int retval = 0; smpi_bench_end(); - if (win->dynamic()==0 && target_disp <0){ - //in case of dynamic window, target_disp can be mistakenly seen as negative, as it is an address - retval = MPI_ERR_ARG; - } else { - int my_proc_id = simgrid::s4u::this_actor::get_pid(); - MPI_Group group; - win->get_group(&group); - TRACE_smpi_comm_in(my_proc_id, __func__, - new simgrid::instr::Pt2PtTIData( - "Rget_accumulate", target_rank, - target_datatype->is_replayable() ? target_count : target_count * target_datatype->size(), - simgrid::smpi::Datatype::encode(target_datatype))); - - retval = win->get_accumulate( origin_addr, origin_count, origin_datatype, result_addr, - result_count, result_datatype, target_rank, target_disp, - target_count, target_datatype, op, request); - TRACE_smpi_comm_out(my_proc_id); - } + int my_proc_id = simgrid::s4u::this_actor::get_pid(); + MPI_Group group; + win->get_group(&group); + TRACE_smpi_comm_in(my_proc_id, __func__, + new simgrid::instr::Pt2PtTIData( + "Rget_accumulate", target_rank, + target_datatype->is_replayable() ? target_count : target_count * target_datatype->size(), + simgrid::smpi::Datatype::encode(target_datatype))); + + retval = win->get_accumulate( origin_addr, origin_count, origin_datatype, result_addr, + result_count, result_datatype, target_rank, target_disp, + target_count, target_datatype, op, request); + + TRACE_smpi_comm_out(my_proc_id); + smpi_bench_begin(); return retval; } @@ -443,27 +426,26 @@ int PMPI_Compare_and_swap(const void* origin_addr, void* compare_addr, void* res CHECK_NULL(2, MPI_ERR_BUFFER, compare_addr) CHECK_NULL(3, MPI_ERR_BUFFER, result_addr) CHECK_TYPE(4, datatype) - CHECK_PROC(5, target_rank) - CHECK_NEGATIVE(5, MPI_ERR_RANK, target_rank) CHECK_WIN(6, win) + CHECK_PROC_RMA(5, target_rank, win) + CHECK_TARGET_DISP(6) + int retval = 0; + smpi_bench_end(); - if (win->dynamic()==0 && target_disp <0){ - //in case of dynamic window, target_disp can be mistakenly seen as negative, as it is an address - retval = MPI_ERR_ARG; - } else { - int my_proc_id = simgrid::s4u::this_actor::get_pid(); - MPI_Group group; - win->get_group(&group); - TRACE_smpi_comm_in(my_proc_id, __func__, - new simgrid::instr::Pt2PtTIData("Compare_and_swap", target_rank, - datatype->is_replayable() ? 1 : datatype->size(), - simgrid::smpi::Datatype::encode(datatype))); - retval = win->compare_and_swap(origin_addr, compare_addr, result_addr, datatype, target_rank, target_disp); + int my_proc_id = simgrid::s4u::this_actor::get_pid(); + MPI_Group group; + win->get_group(&group); + TRACE_smpi_comm_in(my_proc_id, __func__, + new simgrid::instr::Pt2PtTIData("Compare_and_swap", target_rank, + datatype->is_replayable() ? 1 : datatype->size(), + simgrid::smpi::Datatype::encode(datatype))); + + retval = win->compare_and_swap(origin_addr, compare_addr, result_addr, datatype, target_rank, target_disp); + + TRACE_smpi_comm_out(my_proc_id); - TRACE_smpi_comm_out(my_proc_id); - } smpi_bench_begin(); return retval; } @@ -515,8 +497,8 @@ int PMPI_Win_wait(MPI_Win win){ } int PMPI_Win_lock(int lock_type, int rank, int assert, MPI_Win win){ - CHECK_PROC(2, rank) CHECK_WIN(4, win) + CHECK_PROC_RMA(2, rank, win) int retval = 0; smpi_bench_end(); if (lock_type != MPI_LOCK_EXCLUSIVE && @@ -533,8 +515,8 @@ int PMPI_Win_lock(int lock_type, int rank, int assert, MPI_Win win){ } int PMPI_Win_unlock(int rank, MPI_Win win){ - CHECK_PROC(1, rank) CHECK_WIN(2, win) + CHECK_PROC_RMA(1, rank, win) smpi_bench_end(); int my_proc_id = simgrid::s4u::this_actor::get_pid(); TRACE_smpi_comm_in(my_proc_id, __func__, new simgrid::instr::NoOpTIData("Win_unlock")); @@ -567,8 +549,8 @@ int PMPI_Win_unlock_all(MPI_Win win){ } int PMPI_Win_flush(int rank, MPI_Win win){ - CHECK_PROC(1, rank) CHECK_WIN(2, win) + CHECK_PROC_RMA(1, rank, win) smpi_bench_end(); int my_proc_id = simgrid::s4u::this_actor::get_pid(); TRACE_smpi_comm_in(my_proc_id, __func__, new simgrid::instr::NoOpTIData("Win_flush")); @@ -579,8 +561,9 @@ int PMPI_Win_flush(int rank, MPI_Win win){ } int PMPI_Win_flush_local(int rank, MPI_Win win){ - CHECK_PROC(1, rank) - CHECK_WIN(2, win) smpi_bench_end(); + CHECK_WIN(2, win) + CHECK_PROC_RMA(1, rank, win) + smpi_bench_end(); int my_proc_id = simgrid::s4u::this_actor::get_pid(); TRACE_smpi_comm_in(my_proc_id, __func__, new simgrid::instr::NoOpTIData("Win_flush_local")); int retval = win->flush_local(rank); @@ -669,7 +652,7 @@ int PMPI_Win_free_keyval(int* keyval) { MPI_Win PMPI_Win_f2c(MPI_Fint win){ if(win==-1) return MPI_WIN_NULL; - return static_cast(simgrid::smpi::Win::f2c(win)); + return simgrid::smpi::Win::f2c(win); } MPI_Fint PMPI_Win_c2f(MPI_Win win){