-/* Copyright (c) 2007, 2008, 2009, 2010. The SimGrid Team.
+/* Copyright (c) 2007-2013. The SimGrid Team.
* All rights reserved. */
/* This program is free software; you can redistribute it and/or modify it
double PMPI_Wtime(void)
{
double time;
-
- smpi_bench_end();
time = SIMIX_get_clock();
- smpi_bench_begin();
return time;
}
+
extern double sg_maxmin_precision;
double PMPI_Wtick(void)
{
int retval = 0;
smpi_bench_end();
- if (request == MPI_REQUEST_NULL || flag == NULL) {
+ if (request == NULL || flag == NULL) {
retval = MPI_ERR_ARG;
} else if (*request == MPI_REQUEST_NULL) {
*flag= TRUE;
+ smpi_empty_status(status);
retval = MPI_ERR_REQUEST;
} else {
*flag = smpi_mpi_test(request, status);
smpi_bench_end();
+ smpi_empty_status(status);
+
if (request == NULL) {
retval = MPI_ERR_ARG;
} else if (*request == MPI_REQUEST_NULL) {
} else {
#ifdef HAVE_TRACING
- int rank = request && (*request)->comm != MPI_COMM_NULL
+ int rank = request && (*request)->comm != MPI_COMM_NULL
? smpi_process_index()
: -1;
- TRACE_smpi_computing_out(rank);
+ TRACE_smpi_computing_out(rank);
- int src_traced = (*request)->src;
- int dst_traced = (*request)->dst;
- MPI_Comm comm = (*request)->comm;
- int is_wait_for_receive = (*request)->recv;
- TRACE_smpi_ptp_in(rank, src_traced, dst_traced, __FUNCTION__,-1);
+ int src_traced = (*request)->src;
+ int dst_traced = (*request)->dst;
+ MPI_Comm comm = (*request)->comm;
+ int is_wait_for_receive = (*request)->recv;
+ TRACE_smpi_ptp_in(rank, src_traced, dst_traced, __FUNCTION__,-1);
#endif
smpi_mpi_wait(request, status);
retval = MPI_SUCCESS;
#ifdef HAVE_TRACING
- //the src may not have been known at the beginning of the recv (MPI_ANY_SOURCE)
- TRACE_smpi_ptp_out(rank, src_traced, dst_traced, __FUNCTION__);
- if (is_wait_for_receive) {
- if(src_traced==MPI_ANY_SOURCE)
- src_traced = (status!=MPI_STATUS_IGNORE) ?
- smpi_group_rank(smpi_comm_group(comm), status->MPI_SOURCE) :
- src_traced;
- TRACE_smpi_recv(rank, src_traced, dst_traced);
- }
- TRACE_smpi_computing_in(rank);
+ //the src may not have been known at the beginning of the recv (MPI_ANY_SOURCE)
+ TRACE_smpi_ptp_out(rank, src_traced, dst_traced, __FUNCTION__);
+ if (is_wait_for_receive) {
+ if(src_traced==MPI_ANY_SOURCE)
+ src_traced = (status!=MPI_STATUS_IGNORE) ?
+ smpi_group_rank(smpi_comm_group(comm), status->MPI_SOURCE) :
+ src_traced;
+ TRACE_smpi_recv(rank, src_traced, dst_traced);
+ }
+ TRACE_smpi_computing_in(rank);
#endif
}
int retval = 0;
smpi_bench_end();
- if (datatype == MPI_DATATYPE_NULL) {
+ if (datatype == NULL || *datatype == MPI_DATATYPE_NULL) {
retval = MPI_ERR_TYPE;
} else {
smpi_datatype_commit(datatype);
NOT_YET_IMPLEMENTED
}
-int MPI_Request_get_status( MPI_Request request, int *flag, MPI_Status *status){
- NOT_YET_IMPLEMENTED
-}
-
int PMPI_Grequest_start( MPI_Grequest_query_function *query_fn, MPI_Grequest_free_function *free_fn, MPI_Grequest_cancel_function *cancel_fn, void *extra_state, MPI_Request *request){
NOT_YET_IMPLEMENTED
}