return retval;
}
+
+//------------------------------- Datatypes ---------------------------------------
+/**
+ * query the size of the type
+ **/
int SMPI_MPI_Type_size(MPI_Datatype datatype, size_t * size)
{
int retval = MPI_SUCCESS;
return retval;
}
+
+/**
+ * query extent and lower bound of the type
+ **/
+int SMPI_MPI_Type_get_extent( MPI_Datatype datatype, int *lb, int *extent)
+{
+ return( smpi_mpi_type_get_extent( datatype, lb, extent));
+}
+
+
+
+
int SMPI_MPI_Barrier(MPI_Comm comm)
{
int retval = MPI_SUCCESS;
return retval;
}
+
/**
- * MPI_Sendrecv
+ * MPI_Sendrecv internal level
**/
-int SMPI_MPI_Sendrecv(void *sendbuf, int sendcount, MPI_Datatype sendtype, int dest, int sendtag,
+int smpi_mpi_sendrecv(void *sendbuf, int sendcount, MPI_Datatype sendtype, int dest, int sendtag,
void *recvbuf, int recvcount, MPI_Datatype recvtype, int source, int recvtag,
MPI_Comm comm, MPI_Status *status)
{
rank = smpi_mpi_comm_rank(comm);
/* send */
- /* -------------*/
- retval = smpi_create_request(sendbuf, sendcount, sendtype,
+ retval = smpi_create_request(sendbuf, sendcount, sendtype,
rank,dest,sendtag,
comm, &srequest);
- printf("[%d] isend request src=%d -> dst=%d (retval=%d)\n",rank,rank,dest,retval);
smpi_mpi_isend(srequest);
-
- //retval = MPI_Isend( sendbuf, sendcount, sendtype, dest, sendtag, MPI_COMM_WORLD, &srequest);
-
-
/* recv */
retval = smpi_create_request(recvbuf, recvcount, recvtype,
source, rank,recvtag,
comm, &rrequest);
- printf("[%d] irecv request src=%d -> dst=%d (retval=%d)\n",rank,source,rank,retval);
smpi_mpi_irecv(rrequest);
- //retval = MPI_Irecv( recvbuf, recvcount, recvtype, source, recvtag, MPI_COMM_WORLD, &rrequest);
-
-
smpi_mpi_wait(srequest, MPI_STATUS_IGNORE);
- printf("[%d] isend request src=%d dst=%d tag=%d COMPLETED (retval=%d) \n",rank,rank,dest,sendtag,retval);
-
+ //printf("[%d] isend request src=%d dst=%d tag=%d COMPLETED (retval=%d) \n",rank,rank,dest,sendtag,retval);
smpi_mpi_wait(rrequest, MPI_STATUS_IGNORE);
- printf("[%d] irecv request src=%d -> dst=%d tag=%d COMPLETED (retval=%d)\n",rank,source,rank,recvtag,retval);
+ //printf("[%d] irecv request src=%d -> dst=%d tag=%d COMPLETED (retval=%d)\n",rank,source,rank,recvtag,retval);
return(retval);
}
+/**
+ * MPI_Sendrecv user entry point
+ **/
+int SMPI_MPI_Sendrecv(void *sendbuf, int sendcount, MPI_Datatype sendtype, int dest, int sendtag,
+ void *recvbuf, int recvcount, MPI_Datatype recvtype, int source, int recvtag,
+ MPI_Comm comm, MPI_Status *status)
+{
+int retval = MPI_SUCCESS;
+
+ smpi_bench_end();
+ smpi_mpi_sendrecv( sendbuf, sendcount, sendtype, dest, sendtag,
+ recvbuf, recvcount, recvtype, source, recvtag,
+ comm, status);
+ smpi_bench_begin();
+ return retval;
+
+
+}
/**
* MPI_Wait and friends
return(retval);
}
+/**
+ * Bcast internal level
+ **/
+int smpi_mpi_bcast(void *buf, int count, MPI_Datatype datatype, int root,
+ MPI_Comm comm)
+{
+ int retval = MPI_SUCCESS;
+ //retval = flat_tree_bcast(buf, count, datatype, root, comm);
+ retval = nary_tree_bcast(buf, count, datatype, root, comm, 2 );
+ return retval;
+}
/**
* Bcast user entry point
int retval = MPI_SUCCESS;
smpi_bench_end();
-
- //retval = flat_tree_bcast(buf, count, datatype, root, comm);
- retval = nary_tree_bcast(buf, count, datatype, root, comm, 2 );
-
+ smpi_mpi_bcast(buf,count,datatype,root,comm);
smpi_bench_begin();
return retval;
-//#ifdef DEBUG_REDUCE
+#ifdef DEBUG_REDUCE
/**
* debugging helper function
**/
}
-//#endif
+#endif
/**
- * MPI_Reduce
+ * MPI_Reduce internal level
**/
-int SMPI_MPI_Reduce(void *sendbuf, void *recvbuf, int count,
+int smpi_mpi_reduce(void *sendbuf, void *recvbuf, int count,
MPI_Datatype datatype, MPI_Op op, int root, MPI_Comm comm)
{
int retval = MPI_SUCCESS;
#ifdef DEBUG_REDUCE
print_buffer_int(sendbuf, count, xbt_strdup("sndbuf"), rank);
#endif
- retval =
- smpi_create_request(sendbuf, count, datatype, rank, root, tag, comm,
+ retval = smpi_create_request(sendbuf, count, datatype, rank, root, tag, comm,
&request);
smpi_mpi_isend(request);
smpi_mpi_wait(request, MPI_STATUS_IGNORE);
xbt_free(requests);
xbt_free(tmpbufs);
}
- smpi_bench_begin();
return retval;
}
+/**
+ * MPI_Reduce user entry point
+ **/
+int SMPI_MPI_Reduce(void *sendbuf, void *recvbuf, int count,
+ MPI_Datatype datatype, MPI_Op op, int root, MPI_Comm comm)
+{
+int retval = MPI_SUCCESS;
+
+ smpi_bench_end();
+
+ retval = smpi_mpi_reduce(sendbuf, recvbuf, count, datatype, op, root, comm);
+
+ smpi_bench_begin();
+ return retval;
+}
+
+
+
/**
* MPI_Allreduce
*
* Same as MPI_REDUCE except that the result appears in the receive buffer of all the group members.
**/
int SMPI_MPI_Allreduce( void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype,
- MPI_Op op, MPI_Comm comm );
-int SMPI_MPI_Allreduce( void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype,
- MPI_Op op, MPI_Comm comm )
+ MPI_Op op, MPI_Comm comm )
{
- int retval = MPI_SUCCESS;
- int root=1; // arbitrary choice
+int retval = MPI_SUCCESS;
+int root=0; // arbitrary choice
+
+ smpi_bench_end();
- //smpi_bench_end(); //FIXME: restaure after calling smpi_mpi_reduce instead
+ retval = smpi_mpi_reduce( sendbuf, recvbuf, count, datatype, op, root, comm);
+ if (MPI_SUCCESS != retval)
+ return(retval);
- DEBUG0("Reduce");
- retval = SMPI_MPI_Reduce( sendbuf, recvbuf, count, datatype, op, root, comm);
- if (MPI_SUCCESS != retval)
- return(retval);
+ retval = smpi_mpi_bcast( sendbuf, count, datatype, root, comm);
- DEBUG0("Reduce done, time to bcast");
- retval = SMPI_MPI_Bcast( sendbuf, count, datatype, root, comm);
-// smpi_bench_begin();
- return( retval );
+ smpi_bench_end();
+ return( retval );
}
/**
* MPI_Scatter user entry point
**/
-//int SMPI_MPI_Scatter(void *sendbuf, int sendcount, MPI_Datatype datatype,
-// void *recvbuf, int recvcount, MPI_Datatype recvtype,int root,
-// MPI_Comm comm);
int SMPI_MPI_Scatter(void *sendbuf, int sendcount, MPI_Datatype datatype,
void *recvbuf, int recvcount, MPI_Datatype recvtype,
int root, MPI_Comm comm)
recvbuf, recvcount, recvtype, comm);
} else if (block_dsize < 3000) {
-/* use this one !! retval = smpi_coll_tuned_alltoall_basic_linear(sendbuf, sendcount, datatype,
- recvbuf, recvcount, recvtype, comm);
- */
- retval = smpi_coll_tuned_alltoall_pairwise(sendbuf, sendcount, datatype,
+ retval = smpi_coll_tuned_alltoall_basic_linear(sendbuf, sendcount, datatype,
recvbuf, recvcount, recvtype, comm);
} else {