+int PMPI_Put( 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){
+ int retval = 0;
+ smpi_bench_end();
+ if (win == MPI_WIN_NULL) {
+ retval = MPI_ERR_WIN;
+ } else if (target_rank == MPI_PROC_NULL) {
+ retval = MPI_SUCCESS;
+ } else if (target_rank <0){
+ retval = MPI_ERR_RANK;
+ } else if (target_disp <0){
+ retval = MPI_ERR_ARG;
+ } else if (origin_count < 0 || target_count < 0) {
+ retval = MPI_ERR_COUNT;
+ } else if (origin_addr==NULL && origin_count > 0){
+ retval = MPI_ERR_COUNT;
+ } else if ((!is_datatype_valid(origin_datatype)) ||
+ (!is_datatype_valid(target_datatype))) {
+ retval = MPI_ERR_TYPE;
+ } else {
+ retval = smpi_mpi_put( origin_addr, origin_count, origin_datatype, target_rank, target_disp, target_count, target_datatype, win);
+ }
+ smpi_bench_begin();
+ return retval;
+}
+
+
+int PMPI_Accumulate( 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){
+ int retval = 0;
+ smpi_bench_end();
+ if (win == MPI_WIN_NULL) {
+ retval = MPI_ERR_WIN;
+ } else if (target_rank == MPI_PROC_NULL) {
+ retval = MPI_SUCCESS;
+ } else if (target_rank <0){
+ retval = MPI_ERR_RANK;
+ } else if (target_disp <0){
+ retval = MPI_ERR_ARG;
+ } else if (origin_count < 0 || target_count < 0) {
+ retval = MPI_ERR_COUNT;
+ } else if (origin_addr==NULL && origin_count > 0){
+ retval = MPI_ERR_COUNT;
+ } else if ((!is_datatype_valid(origin_datatype)) ||
+ (!is_datatype_valid(target_datatype))) {
+ retval = MPI_ERR_TYPE;
+ } else if (op == MPI_OP_NULL) {
+ retval = MPI_ERR_OP;
+ } else {
+ retval = smpi_mpi_accumulate( origin_addr, origin_count, origin_datatype, target_rank, target_disp, target_count, target_datatype, op, win);
+ }
+ smpi_bench_begin();
+ return retval;
+}
+
+
+int PMPI_Alloc_mem(MPI_Aint size, MPI_Info info, void *baseptr){
+ void *ptr = xbt_malloc(size);
+ if(!ptr)
+ return MPI_ERR_NO_MEM;
+ else {
+ *(void **)baseptr = ptr;
+ return MPI_SUCCESS;
+ }
+}
+
+int PMPI_Free_mem(void *baseptr){
+ xbt_free(baseptr);
+ return MPI_SUCCESS;