-/* Copyright (c) 2007-2013. The SimGrid Team.
+/* Copyright (c) 2007-2014. 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. */
+ * under the terms of the license (GNU LGPL) which comes with this package. */
#include "private.h"
#include "smpi_mpi_dt_private.h"
int rank = smpi_process_index();
TRACE_smpi_init(rank);
TRACE_smpi_computing_init(rank);
- instr_extra_data extra = xbt_new(s_instr_extra_data_t,1);
+ instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
extra->type = TRACING_INIT;
TRACE_smpi_collective_in(rank, -1, __FUNCTION__, extra);
TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
smpi_bench_end();
#ifdef HAVE_TRACING
int rank = smpi_process_index();
- instr_extra_data extra = xbt_new(s_instr_extra_data_t,1);
+ instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
extra->type = TRACING_FINALIZE;
TRACE_smpi_collective_in(rank, -1, __FUNCTION__, extra);
#endif
double PMPI_Wtime(void)
{
double time;
- if (smpi_process_initialized() && !smpi_process_finalized() && !smpi_sample_is_running) {
+ if (smpi_process_initialized() && !smpi_process_finalized() && !smpi_process_get_sampling()) {
smpi_bench_end();
time = SIMIX_get_clock();
smpi_bench_begin();
newsize = oldsize - n;
*newgroup = smpi_group_new(newsize);
- int* to_exclude=xbt_new(int, smpi_group_size(group));
+ int* to_exclude=xbt_new0(int, smpi_group_size(group));
for(i=0; i<oldsize; i++)
to_exclude[i]=0;
for(i=0; i<n; i++)
if (*request == MPI_REQUEST_NULL) {
retval = MPI_ERR_ARG;
} else {
- if((*request)->flags & PERSISTENT)(*request)->refcount--;
smpi_mpi_request_free(request);
retval = MPI_SUCCESS;
}
int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
int src_traced = smpi_group_index(smpi_comm_group(comm), src);
- instr_extra_data extra = xbt_new(s_instr_extra_data_t,1);
+ instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
extra->type = TRACING_IRECV;
extra->send_size = count;
extra->src = src_traced;
int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
int dst_traced = smpi_group_index(smpi_comm_group(comm), dst);
- instr_extra_data extra = xbt_new(s_instr_extra_data_t,1);
+ instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
extra->type = TRACING_ISEND;
extra->send_size = count;
extra->src = rank;
#ifdef HAVE_TRACING
int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
int dst_traced = smpi_group_index(smpi_comm_group(comm), dst);
- instr_extra_data extra = xbt_new(s_instr_extra_data_t,1);
+ instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
extra->type = TRACING_ISSEND;
extra->send_size = count;
extra->src = rank;
#ifdef HAVE_TRACING
int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
int src_traced = smpi_group_index(smpi_comm_group(comm), src);
- instr_extra_data extra = xbt_new(s_instr_extra_data_t,1);
+ instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
extra->type = TRACING_RECV;
extra->send_size = count;
extra->src = src_traced;
#ifdef HAVE_TRACING
//the src may not have been known at the beginning of the recv (MPI_ANY_SOURCE)
- if(status!=MPI_STATUS_IGNORE)src_traced = smpi_group_index(smpi_comm_group(comm), status->MPI_SOURCE);
+ if(status!=MPI_STATUS_IGNORE){
+ src_traced = smpi_group_index(smpi_comm_group(comm), status->MPI_SOURCE);
+ TRACE_smpi_recv(rank, src_traced, rank);
+ }
TRACE_smpi_ptp_out(rank, src_traced, rank, __FUNCTION__);
- TRACE_smpi_recv(rank, src_traced, rank);
#endif
}
#ifdef HAVE_TRACING
int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
int dst_traced = smpi_group_index(smpi_comm_group(comm), dst);
- instr_extra_data extra = xbt_new(s_instr_extra_data_t,1);
+ instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
extra->type = TRACING_SEND;
extra->send_size = count;
extra->src = rank;
#ifdef HAVE_TRACING
int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
int dst_traced = smpi_group_index(smpi_comm_group(comm), dst);
- instr_extra_data extra = xbt_new(s_instr_extra_data_t,1);
+ instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
extra->type = TRACING_SSEND;
extra->send_size = count;
extra->src = rank;
int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
int dst_traced = smpi_group_index(smpi_comm_group(comm), dst);
int src_traced = smpi_group_index(smpi_comm_group(comm), src);
- instr_extra_data extra = xbt_new(s_instr_extra_data_t,1);
+ instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
extra->type = TRACING_SENDRECV;
extra->send_size = sendcount;
extra->recv_size = recvcount;
retval = MPI_ERR_COUNT;
} else {
int size = smpi_datatype_get_extent(datatype) * count;
- recvbuf = xbt_new(char, size);
+ recvbuf = xbt_new0(char, size);
retval =
MPI_Sendrecv(buf, count, datatype, dst, sendtag, recvbuf, count,
datatype, src, recvtag, comm, status);
int dst_traced = (*request)->dst;
MPI_Comm comm = (*request)->comm;
int is_wait_for_receive = (*request)->recv;
- instr_extra_data extra = xbt_new(s_instr_extra_data_t,1);
+ instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
extra->type = TRACING_WAIT;
TRACE_smpi_ptp_in(rank, src_traced, dst_traced, __FUNCTION__, extra);
#endif
int PMPI_Waitany(int count, MPI_Request requests[], int *index, MPI_Status * status)
{
- int retval = 0;
+ if (index == NULL)
+ return MPI_ERR_ARG;
smpi_bench_end();
#ifdef HAVE_TRACING
//save requests information for tracing
int i;
- int *srcs = xbt_new(int, count);
- int *dsts = xbt_new(int, count);
- int *recvs = xbt_new(int, count);
- MPI_Comm *comms = xbt_new(MPI_Comm, count);
+ int *srcs = xbt_new0(int, count);
+ int *dsts = xbt_new0(int, count);
+ int *recvs = xbt_new0(int, count);
+ MPI_Comm *comms = xbt_new0(MPI_Comm, count);
for (i = 0; i < count; i++) {
MPI_Request req = requests[i]; //already received requests are no longer valid
}
}
int rank_traced = smpi_process_index();
- instr_extra_data extra = xbt_new(s_instr_extra_data_t,1);
+ instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
extra->type = TRACING_WAITANY;
extra->send_size=count;
TRACE_smpi_ptp_in(rank_traced, -1, -1, __FUNCTION__,extra);
#endif
- if (index == NULL) {
- retval = MPI_ERR_ARG;
- } else {
- *index = smpi_mpi_waitany(count, requests, status);
- retval = MPI_SUCCESS;
- }
+ *index = smpi_mpi_waitany(count, requests, status);
#ifdef HAVE_TRACING
if(*index!=MPI_UNDEFINED){
int src_traced = srcs[*index];
}
#endif
smpi_bench_begin();
- return retval;
+ return MPI_SUCCESS;
}
int PMPI_Waitall(int count, MPI_Request requests[], MPI_Status status[])
#ifdef HAVE_TRACING
//save information from requests
int i;
- int *srcs = xbt_new(int, count);
- int *dsts = xbt_new(int, count);
- int *recvs = xbt_new(int, count);
- int *valid = xbt_new(int, count);
- MPI_Comm *comms = xbt_new(MPI_Comm, count);
+ int *srcs = xbt_new0(int, count);
+ int *dsts = xbt_new0(int, count);
+ int *recvs = xbt_new0(int, count);
+ int *valid = xbt_new0(int, count);
+ MPI_Comm *comms = xbt_new0(MPI_Comm, count);
//int valid_count = 0;
for (i = 0; i < count; i++) {
}
}
int rank_traced = smpi_process_index();
- instr_extra_data extra = xbt_new(s_instr_extra_data_t,1);
+ instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
extra->type = TRACING_WAITALL;
extra->send_size=count;
TRACE_smpi_ptp_in(rank_traced, -1, -1, __FUNCTION__,extra);
int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
int root_traced = smpi_group_index(smpi_comm_group(comm), root);
- instr_extra_data extra = xbt_new(s_instr_extra_data_t,1);
+ instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
extra->type = TRACING_BCAST;
extra->send_size = count;
extra->root = root_traced;
} else {
#ifdef HAVE_TRACING
int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
- instr_extra_data extra = xbt_new(s_instr_extra_data_t,1);
+ instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
extra->type = TRACING_BARRIER;
TRACE_smpi_collective_in(rank, -1, __FUNCTION__, extra);
#endif
#ifdef HAVE_TRACING
int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
int root_traced = smpi_group_index(smpi_comm_group(comm), root);
- instr_extra_data extra = xbt_new(s_instr_extra_data_t,1);
+ instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
extra->type = TRACING_GATHER;
extra->send_size = sendtmpcount;
extra->recv_size = recvcount;
int root_traced = smpi_group_index(smpi_comm_group(comm), root);
int i=0;
int size = smpi_comm_size(comm);
- instr_extra_data extra = xbt_new(s_instr_extra_data_t,1);
+ instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
extra->type = TRACING_GATHERV;
extra->send_size = sendtmpcount;
extra->recvcounts= xbt_malloc(size*sizeof(int));
}
#ifdef HAVE_TRACING
int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
- instr_extra_data extra = xbt_new(s_instr_extra_data_t,1);
+ instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
extra->type = TRACING_ALLGATHER;
extra->send_size = sendcount;
extra->recv_size = recvcount;
int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
int i=0;
int size = smpi_comm_size(comm);
- instr_extra_data extra = xbt_new(s_instr_extra_data_t,1);
+ instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
extra->type = TRACING_ALLGATHERV;
extra->send_size = sendcount;
extra->recvcounts= xbt_malloc(size*sizeof(int));
#ifdef HAVE_TRACING
int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
int root_traced = smpi_group_index(smpi_comm_group(comm), root);
- instr_extra_data extra = xbt_new(s_instr_extra_data_t,1);
+ instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
extra->type = TRACING_SCATTER;
extra->send_size = sendcount;
extra->recv_size= recvcount;
int root_traced = smpi_group_index(smpi_comm_group(comm), root);
int i=0;
int size = smpi_comm_size(comm);
- instr_extra_data extra = xbt_new(s_instr_extra_data_t,1);
+ instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
extra->type = TRACING_SCATTERV;
extra->recv_size = recvcount;
extra->sendcounts= xbt_malloc(size*sizeof(int));
#ifdef HAVE_TRACING
int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
int root_traced = smpi_group_index(smpi_comm_group(comm), root);
- instr_extra_data extra = xbt_new(s_instr_extra_data_t,1);
+ instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
extra->type = TRACING_REDUCE;
extra->send_size = count;
extra->datatype1 = encode_datatype(datatype);
}
#ifdef HAVE_TRACING
int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
- instr_extra_data extra = xbt_new(s_instr_extra_data_t,1);
+ instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
extra->type = TRACING_ALLREDUCE;
extra->send_size = count;
extra->datatype1 = encode_datatype(datatype);
} else {
#ifdef HAVE_TRACING
int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
- instr_extra_data extra = xbt_new(s_instr_extra_data_t,1);
+ instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
extra->type = TRACING_SCAN;
extra->send_size = count;
extra->datatype1 = encode_datatype(datatype);
} else {
#ifdef HAVE_TRACING
int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
- instr_extra_data extra = xbt_new(s_instr_extra_data_t,1);
+ instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
extra->type = TRACING_EXSCAN;
extra->send_size = count;
extra->datatype1 = encode_datatype(datatype);
int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
int i=0;
int size = smpi_comm_size(comm);
- instr_extra_data extra = xbt_new(s_instr_extra_data_t,1);
+ instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
extra->type = TRACING_REDUCE_SCATTER;
extra->send_size = 0;
extra->recvcounts= xbt_malloc(size*sizeof(int));
#ifdef HAVE_TRACING
int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
- instr_extra_data extra = xbt_new(s_instr_extra_data_t,1);
+ instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
extra->type = TRACING_REDUCE_SCATTER;
extra->send_size = 0;
extra->recvcounts= xbt_malloc(count*sizeof(int));
} else {
#ifdef HAVE_TRACING
int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
- instr_extra_data extra = xbt_new(s_instr_extra_data_t,1);
+ instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
extra->type = TRACING_ALLTOALL;
extra->send_size = sendcount;
extra->recv_size = recvcount;
int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
int i=0;
int size = smpi_comm_size(comm);
- instr_extra_data extra = xbt_new(s_instr_extra_data_t,1);
+ instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
extra->type = TRACING_ALLTOALLV;
extra->send_size = 0;
extra->recv_size = 0;