/* 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. */
-#include "private.h"
-#include "smpi_comm.hpp"
+#include "private.hpp"
#include "smpi_coll.hpp"
+#include "smpi_comm.hpp"
#include "smpi_datatype_derived.hpp"
#include "smpi_op.hpp"
#include "smpi_process.hpp"
retval = MPI_ERR_WIN;
} else {
int rank = smpi_process()->index();
- TRACE_smpi_collective_in(rank, -1, __FUNCTION__, nullptr);
+ TRACE_smpi_collective_in(rank, __FUNCTION__, nullptr);
retval = win->fence(assert);
- TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
+ TRACE_smpi_collective_out(rank, __FUNCTION__);
}
smpi_bench_begin();
return retval;
} else if ((origin_count < 0 || target_count < 0) ||
(origin_addr==nullptr && origin_count > 0)){
retval = MPI_ERR_COUNT;
- } else if ((not origin_datatype->is_valid()) || (not target_datatype->is_valid())) {
+ } else if (((origin_datatype == MPI_DATATYPE_NULL) || (target_datatype == MPI_DATATYPE_NULL)) ||
+ ((not origin_datatype->is_valid()) || (not target_datatype->is_valid()))) {
retval = MPI_ERR_TYPE;
} else {
int rank = smpi_process()->index();
MPI_Group group;
win->get_group(&group);
- int src_traced = group->index(target_rank);
- TRACE_smpi_ptp_in(rank, src_traced, rank, __FUNCTION__, nullptr);
+ TRACE_smpi_ptp_in(rank, __FUNCTION__, nullptr);
retval = win->get( origin_addr, origin_count, origin_datatype, target_rank, target_disp, target_count,
target_datatype);
- TRACE_smpi_ptp_out(rank, src_traced, rank, __FUNCTION__);
+ TRACE_smpi_ptp_out(rank, rank, __FUNCTION__);
}
smpi_bench_begin();
return retval;
} else if ((origin_count < 0 || target_count < 0) ||
(origin_addr==nullptr && origin_count > 0)){
retval = MPI_ERR_COUNT;
- } else if ((not origin_datatype->is_valid()) || (not target_datatype->is_valid())) {
+ } else if (((origin_datatype == MPI_DATATYPE_NULL) || (target_datatype == MPI_DATATYPE_NULL)) ||
+ ((not origin_datatype->is_valid()) || (not target_datatype->is_valid()))) {
retval = MPI_ERR_TYPE;
} else if(request == nullptr){
retval = MPI_ERR_REQUEST;
int rank = smpi_process()->index();
MPI_Group group;
win->get_group(&group);
- int src_traced = group->index(target_rank);
- TRACE_smpi_ptp_in(rank, src_traced, rank, __FUNCTION__, nullptr);
+ TRACE_smpi_ptp_in(rank, __FUNCTION__, nullptr);
retval = win->get( origin_addr, origin_count, origin_datatype, target_rank, target_disp, target_count,
target_datatype, request);
- TRACE_smpi_ptp_out(rank, src_traced, rank, __FUNCTION__);
+ TRACE_smpi_ptp_out(rank, rank, __FUNCTION__);
}
smpi_bench_begin();
return retval;
} else if ((origin_count < 0 || target_count < 0) ||
(origin_addr==nullptr && origin_count > 0)){
retval = MPI_ERR_COUNT;
- } else if ((not origin_datatype->is_valid()) || (not target_datatype->is_valid())) {
+ } else if (((origin_datatype == MPI_DATATYPE_NULL) || (target_datatype == MPI_DATATYPE_NULL)) ||
+ ((not origin_datatype->is_valid()) || (not target_datatype->is_valid()))) {
retval = MPI_ERR_TYPE;
} else {
int rank = smpi_process()->index();
MPI_Group group;
win->get_group(&group);
int dst_traced = group->index(target_rank);
- TRACE_smpi_ptp_in(rank, rank, dst_traced, __FUNCTION__, nullptr);
+ TRACE_smpi_ptp_in(rank, __FUNCTION__, nullptr);
TRACE_smpi_send(rank, rank, dst_traced, SMPI_RMA_TAG, origin_count*origin_datatype->size());
retval = win->put( origin_addr, origin_count, origin_datatype, target_rank, target_disp, target_count,
target_datatype);
- TRACE_smpi_ptp_out(rank, rank, dst_traced, __FUNCTION__);
+ TRACE_smpi_ptp_out(rank, dst_traced, __FUNCTION__);
}
smpi_bench_begin();
return retval;
} else if ((origin_count < 0 || target_count < 0) ||
(origin_addr==nullptr && origin_count > 0)){
retval = MPI_ERR_COUNT;
- } else if ((not origin_datatype->is_valid()) || (not target_datatype->is_valid())) {
+ } else if (((origin_datatype == MPI_DATATYPE_NULL) || (target_datatype == MPI_DATATYPE_NULL)) ||
+ ((not origin_datatype->is_valid()) || (not target_datatype->is_valid()))) {
retval = MPI_ERR_TYPE;
} else if(request == nullptr){
retval = MPI_ERR_REQUEST;
MPI_Group group;
win->get_group(&group);
int dst_traced = group->index(target_rank);
- TRACE_smpi_ptp_in(rank, rank, dst_traced, __FUNCTION__, nullptr);
+ TRACE_smpi_ptp_in(rank, __FUNCTION__, nullptr);
TRACE_smpi_send(rank, rank, dst_traced, SMPI_RMA_TAG, origin_count*origin_datatype->size());
retval = win->put( origin_addr, origin_count, origin_datatype, target_rank, target_disp, target_count,
target_datatype, request);
- TRACE_smpi_ptp_out(rank, rank, dst_traced, __FUNCTION__);
+ TRACE_smpi_ptp_out(rank, dst_traced, __FUNCTION__);
}
smpi_bench_begin();
return retval;
} else if ((origin_count < 0 || target_count < 0) ||
(origin_addr==nullptr && origin_count > 0)){
retval = MPI_ERR_COUNT;
- } else if ((not origin_datatype->is_valid()) || (not target_datatype->is_valid())) {
+ } else if (((origin_datatype == MPI_DATATYPE_NULL) || (target_datatype == MPI_DATATYPE_NULL)) ||
+ ((not origin_datatype->is_valid()) || (not target_datatype->is_valid()))) {
retval = MPI_ERR_TYPE;
} else if (op == MPI_OP_NULL) {
retval = MPI_ERR_OP;
int rank = smpi_process()->index();
MPI_Group group;
win->get_group(&group);
- int src_traced = group->index(target_rank);
- TRACE_smpi_ptp_in(rank, src_traced, rank, __FUNCTION__, nullptr);
-
+ TRACE_smpi_ptp_in(rank, __FUNCTION__, nullptr);
retval = win->accumulate( origin_addr, origin_count, origin_datatype, target_rank, target_disp, target_count,
target_datatype, op);
- TRACE_smpi_ptp_out(rank, src_traced, rank, __FUNCTION__);
+ TRACE_smpi_ptp_out(rank, rank, __FUNCTION__);
}
smpi_bench_begin();
return retval;
} else if ((origin_count < 0 || target_count < 0) ||
(origin_addr==nullptr && origin_count > 0)){
retval = MPI_ERR_COUNT;
- } else if ((not origin_datatype->is_valid()) || (not target_datatype->is_valid())) {
+ } else if (((origin_datatype == MPI_DATATYPE_NULL) || (target_datatype == MPI_DATATYPE_NULL)) ||
+ ((not origin_datatype->is_valid()) || (not target_datatype->is_valid()))) {
retval = MPI_ERR_TYPE;
} else if (op == MPI_OP_NULL) {
retval = MPI_ERR_OP;
int rank = smpi_process()->index();
MPI_Group group;
win->get_group(&group);
- int src_traced = group->index(target_rank);
- TRACE_smpi_ptp_in(rank, src_traced, rank, __FUNCTION__, nullptr);
+ TRACE_smpi_ptp_in(rank, __FUNCTION__, nullptr);
retval = win->accumulate( origin_addr, origin_count, origin_datatype, target_rank, target_disp, target_count,
target_datatype, op, request);
- TRACE_smpi_ptp_out(rank, src_traced, rank, __FUNCTION__);
+ TRACE_smpi_ptp_out(rank, rank, __FUNCTION__);
}
smpi_bench_begin();
return retval;
(origin_addr==nullptr && origin_count > 0 && op != MPI_NO_OP) ||
(result_addr==nullptr && result_count > 0)){
retval = MPI_ERR_COUNT;
- } else if ((origin_datatype != MPI_DATATYPE_NULL && not origin_datatype->is_valid()) ||
- (not target_datatype->is_valid()) || (not result_datatype->is_valid())) {
+ } else if (((target_datatype == MPI_DATATYPE_NULL) || (result_datatype == MPI_DATATYPE_NULL)) ||
+ (((origin_datatype != MPI_DATATYPE_NULL) && (not origin_datatype->is_valid())) || (not target_datatype->is_valid()) || (not result_datatype->is_valid()))) {
retval = MPI_ERR_TYPE;
} else if (op == MPI_OP_NULL) {
retval = MPI_ERR_OP;
int rank = smpi_process()->index();
MPI_Group group;
win->get_group(&group);
- int src_traced = group->index(target_rank);
- TRACE_smpi_ptp_in(rank, src_traced, rank, __FUNCTION__, nullptr);
+ TRACE_smpi_ptp_in(rank, __FUNCTION__, nullptr);
retval = win->get_accumulate( origin_addr, origin_count, origin_datatype, result_addr,
result_count, result_datatype, target_rank, target_disp,
target_count, target_datatype, op);
- TRACE_smpi_ptp_out(rank, src_traced, rank, __FUNCTION__);
+ TRACE_smpi_ptp_out(rank, rank, __FUNCTION__);
}
smpi_bench_begin();
return retval;
(origin_addr==nullptr && origin_count > 0 && op != MPI_NO_OP) ||
(result_addr==nullptr && result_count > 0)){
retval = MPI_ERR_COUNT;
- } else if ((origin_datatype != MPI_DATATYPE_NULL && not origin_datatype->is_valid()) ||
- (not target_datatype->is_valid()) || (not result_datatype->is_valid())) {
+ } else if (((target_datatype == MPI_DATATYPE_NULL) || (result_datatype == MPI_DATATYPE_NULL)) ||
+ (((origin_datatype != MPI_DATATYPE_NULL) && (not origin_datatype->is_valid())) || (not target_datatype->is_valid()) || (not result_datatype->is_valid()))) {
retval = MPI_ERR_TYPE;
} else if (op == MPI_OP_NULL) {
retval = MPI_ERR_OP;
int rank = smpi_process()->index();
MPI_Group group;
win->get_group(&group);
- int src_traced = group->index(target_rank);
- TRACE_smpi_ptp_in(rank, src_traced, rank, __FUNCTION__, nullptr);
+ TRACE_smpi_ptp_in(rank, __FUNCTION__, nullptr);
retval = win->get_accumulate( origin_addr, origin_count, origin_datatype, result_addr,
result_count, result_datatype, target_rank, target_disp,
target_count, target_datatype, op, request);
- TRACE_smpi_ptp_out(rank, src_traced, rank, __FUNCTION__);
+ TRACE_smpi_ptp_out(rank, rank, __FUNCTION__);
}
smpi_bench_begin();
return retval;
retval = MPI_ERR_ARG;
} else if (origin_addr==nullptr || result_addr==nullptr || compare_addr==nullptr){
retval = MPI_ERR_COUNT;
- } else if (not datatype->is_valid()) {
+ } else if ((datatype == MPI_DATATYPE_NULL) || (not datatype->is_valid())) {
retval = MPI_ERR_TYPE;
} else {
int rank = smpi_process()->index();
MPI_Group group;
win->get_group(&group);
- int src_traced = group->index(target_rank);
- TRACE_smpi_ptp_in(rank, src_traced, rank, __FUNCTION__, nullptr);
+ TRACE_smpi_ptp_in(rank, __FUNCTION__, nullptr);
retval = win->compare_and_swap( origin_addr, compare_addr, result_addr, datatype,
target_rank, target_disp);
- TRACE_smpi_ptp_out(rank, src_traced, rank, __FUNCTION__);
+ TRACE_smpi_ptp_out(rank, rank, __FUNCTION__);
}
smpi_bench_begin();
return retval;
retval = MPI_ERR_GROUP;
} else {
int rank = smpi_process()->index();
- TRACE_smpi_collective_in(rank, -1, __FUNCTION__, nullptr);
+ TRACE_smpi_collective_in(rank, __FUNCTION__, nullptr);
retval = win->post(group,assert);
- TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
+ TRACE_smpi_collective_out(rank, __FUNCTION__);
}
smpi_bench_begin();
return retval;
retval = MPI_ERR_GROUP;
} else {
int rank = smpi_process()->index();
- TRACE_smpi_collective_in(rank, -1, __FUNCTION__, nullptr);
+ TRACE_smpi_collective_in(rank, __FUNCTION__, nullptr);
retval = win->start(group,assert);
- TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
+ TRACE_smpi_collective_out(rank, __FUNCTION__);
}
smpi_bench_begin();
return retval;
retval = MPI_ERR_WIN;
} else {
int rank = smpi_process()->index();
- TRACE_smpi_collective_in(rank, -1, __FUNCTION__, nullptr);
+ TRACE_smpi_collective_in(rank, __FUNCTION__, nullptr);
retval = win->complete();
- TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
+ TRACE_smpi_collective_out(rank, __FUNCTION__);
}
smpi_bench_begin();
return retval;
retval = MPI_ERR_WIN;
} else {
int rank = smpi_process()->index();
- TRACE_smpi_collective_in(rank, -1, __FUNCTION__, nullptr);
+ TRACE_smpi_collective_in(rank, __FUNCTION__, nullptr);
retval = win->wait();
- TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
+ TRACE_smpi_collective_out(rank, __FUNCTION__);
}
smpi_bench_begin();
return retval;
retval = MPI_SUCCESS;
} else {
int myrank = smpi_process()->index();
- TRACE_smpi_collective_in(myrank, -1, __FUNCTION__, nullptr);
+ TRACE_smpi_collective_in(myrank, __FUNCTION__, nullptr);
retval = win->lock(lock_type,rank,assert);
- TRACE_smpi_collective_out(myrank, -1, __FUNCTION__);
+ TRACE_smpi_collective_out(myrank, __FUNCTION__);
}
smpi_bench_begin();
return retval;
retval = MPI_SUCCESS;
} else {
int myrank = smpi_process()->index();
- TRACE_smpi_collective_in(myrank, -1, __FUNCTION__, nullptr);
+ TRACE_smpi_collective_in(myrank, __FUNCTION__, nullptr);
retval = win->unlock(rank);
- TRACE_smpi_collective_out(myrank, -1, __FUNCTION__);
+ TRACE_smpi_collective_out(myrank, __FUNCTION__);
}
smpi_bench_begin();
return retval;
retval = MPI_ERR_WIN;
} else {
int myrank = smpi_process()->index();
- TRACE_smpi_collective_in(myrank, -1, __FUNCTION__, nullptr);
+ TRACE_smpi_collective_in(myrank, __FUNCTION__, nullptr);
retval = win->lock_all(assert);
- TRACE_smpi_collective_out(myrank, -1, __FUNCTION__);
+ TRACE_smpi_collective_out(myrank, __FUNCTION__);
}
smpi_bench_begin();
return retval;
retval = MPI_ERR_WIN;
} else {
int myrank = smpi_process()->index();
- TRACE_smpi_collective_in(myrank, -1, __FUNCTION__, nullptr);
+ TRACE_smpi_collective_in(myrank, __FUNCTION__, nullptr);
retval = win->unlock_all();
- TRACE_smpi_collective_out(myrank, -1, __FUNCTION__);
+ TRACE_smpi_collective_out(myrank, __FUNCTION__);
}
smpi_bench_begin();
return retval;
retval = MPI_SUCCESS;
} else {
int myrank = smpi_process()->index();
- TRACE_smpi_collective_in(myrank, -1, __FUNCTION__, nullptr);
+ TRACE_smpi_collective_in(myrank, __FUNCTION__, nullptr);
retval = win->flush(rank);
- TRACE_smpi_collective_out(myrank, -1, __FUNCTION__);
+ TRACE_smpi_collective_out(myrank, __FUNCTION__);
}
smpi_bench_begin();
return retval;
retval = MPI_SUCCESS;
} else {
int myrank = smpi_process()->index();
- TRACE_smpi_collective_in(myrank, -1, __FUNCTION__, nullptr);
+ TRACE_smpi_collective_in(myrank, __FUNCTION__, nullptr);
retval = win->flush_local(rank);
- TRACE_smpi_collective_out(myrank, -1, __FUNCTION__);
+ TRACE_smpi_collective_out(myrank, __FUNCTION__);
}
smpi_bench_begin();
return retval;
retval = MPI_ERR_WIN;
} else {
int myrank = smpi_process()->index();
- TRACE_smpi_collective_in(myrank, -1, __FUNCTION__, nullptr);
+ TRACE_smpi_collective_in(myrank, __FUNCTION__, nullptr);
retval = win->flush_all();
- TRACE_smpi_collective_out(myrank, -1, __FUNCTION__);
+ TRACE_smpi_collective_out(myrank, __FUNCTION__);
}
smpi_bench_begin();
return retval;
retval = MPI_ERR_WIN;
} else {
int myrank = smpi_process()->index();
- TRACE_smpi_collective_in(myrank, -1, __FUNCTION__, nullptr);
+ TRACE_smpi_collective_in(myrank, __FUNCTION__, nullptr);
retval = win->flush_local_all();
- TRACE_smpi_collective_out(myrank, -1, __FUNCTION__);
+ TRACE_smpi_collective_out(myrank, __FUNCTION__);
}
smpi_bench_begin();
return retval;