extra->send_size = sendtmpcount*dt_size_send;
extra->datatype2 = encode_datatype(recvtype, &known);
int dt_size_recv = 1;
- if(!known)
+ if((smpi_comm_rank(comm)==root) && !known)
dt_size_recv = smpi_datatype_size(recvtype);
extra->recv_size = recvcount*dt_size_recv;
int known=0;
extra->datatype1 = encode_datatype(sendtype, &known);
int dt_size_send = 1;
- if(!known)
+ if((smpi_comm_rank(comm)==root) && !known)
dt_size_send = smpi_datatype_size(sendtype);
extra->send_size = sendcount*dt_size_send;
extra->datatype2 = encode_datatype(recvtype, &known);
}
+int PMPI_Win_post(MPI_Group group, int assert, MPI_Win win){
+ int retval = 0;
+ smpi_bench_end();
+ if (win == MPI_WIN_NULL) {
+ retval = MPI_ERR_WIN;
+ } else if (group==MPI_GROUP_NULL){
+ retval = MPI_ERR_GROUP;
+ }
+#ifdef HAVE_TRACING
+ int rank = smpi_process_index();
+ TRACE_smpi_collective_in(rank, -1, __FUNCTION__, NULL);
+#endif
+ retval = smpi_mpi_win_post(group,assert,win);
+#ifdef HAVE_TRACING
+ TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
+#endif
+ smpi_bench_begin();
+ return retval;
+}
+
+int PMPI_Win_start(MPI_Group group, int assert, MPI_Win win){
+ int retval = 0;
+ smpi_bench_end();
+ if (win == MPI_WIN_NULL) {
+ retval = MPI_ERR_WIN;
+ } else if (group==MPI_GROUP_NULL){
+ retval = MPI_ERR_GROUP;
+ }
+
+#ifdef HAVE_TRACING
+ int rank = smpi_process_index();
+ TRACE_smpi_collective_in(rank, -1, __FUNCTION__, NULL);
+#endif
+ retval = smpi_mpi_win_start(group,assert,win);
+#ifdef HAVE_TRACING
+ TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
+#endif
+ smpi_bench_begin();
+ return retval;
+}
+
+
+int PMPI_Win_complete(MPI_Win win){
+ int retval = 0;
+ smpi_bench_end();
+ if (win == MPI_WIN_NULL) {
+ retval = MPI_ERR_WIN;
+ }
+
+#ifdef HAVE_TRACING
+ int rank = smpi_process_index();
+ TRACE_smpi_collective_in(rank, -1, __FUNCTION__, NULL);
+#endif
+ retval = smpi_mpi_win_complete(win);
+#ifdef HAVE_TRACING
+ TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
+#endif
+ smpi_bench_begin();
+ return retval;
+}
+
+int PMPI_Win_wait(MPI_Win win){
+ int retval = 0;
+ smpi_bench_end();
+ if (win == MPI_WIN_NULL) {
+ retval = MPI_ERR_WIN;
+ }
+#ifdef HAVE_TRACING
+ int rank = smpi_process_index();
+ TRACE_smpi_collective_in(rank, -1, __FUNCTION__, NULL);
+#endif
+ retval = smpi_mpi_win_wait(win);
+#ifdef HAVE_TRACING
+ TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
+#endif
+ smpi_bench_begin();
+ return retval;
+}
+
int PMPI_Alloc_mem(MPI_Aint size, MPI_Info info, void *baseptr){
void *ptr = xbt_malloc(size);
if(!ptr)
NOT_YET_IMPLEMENTED
}
-int PMPI_Win_complete(MPI_Win win){
- NOT_YET_IMPLEMENTED
-}
-
int PMPI_Win_lock(int lock_type, int rank, int assert, MPI_Win win) {
NOT_YET_IMPLEMENTED
}
-int PMPI_Win_post(MPI_Group group, int assert, MPI_Win win){
- NOT_YET_IMPLEMENTED
-}
-
-int PMPI_Win_start(MPI_Group group, int assert, MPI_Win win){
- NOT_YET_IMPLEMENTED
-}
-
int PMPI_Win_test(MPI_Win win, int *flag){
NOT_YET_IMPLEMENTED
}
NOT_YET_IMPLEMENTED
}
-int PMPI_Win_wait(MPI_Win win){
- NOT_YET_IMPLEMENTED
-}