-/* Copyright (c) 2007-2022. The SimGrid Team. All rights reserved. */
+/* Copyright (c) 2007-2023. 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. */
int bsend_buf_size = 0;
void* bsend_buf = nullptr;
smpi_process()->bsend_buffer(&bsend_buf, &bsend_buf_size);
- int size = datatype->get_extent() * count;
- if (bsend_buf == nullptr || bsend_buf_size < size + MPI_BSEND_OVERHEAD)
+ if (bsend_buf == nullptr || bsend_buf_size < datatype->get_extent() * count + MPI_BSEND_OVERHEAD)
return MPI_ERR_BUFFER;
TRACE_smpi_comm_in(my_proc_id, __func__,
new simgrid::instr::Pt2PtTIData("bsend", MPI_COMM_WORLD->group()->rank(dst_traced),
int bsend_buf_size = 0;
void* bsend_buf = nullptr;
smpi_process()->bsend_buffer(&bsend_buf, &bsend_buf_size);
- int size = datatype->get_extent() * count;
- if (bsend_buf == nullptr || bsend_buf_size < size + MPI_BSEND_OVERHEAD)
+ if (bsend_buf == nullptr || bsend_buf_size < datatype->get_extent() * count + MPI_BSEND_OVERHEAD)
return MPI_ERR_BUFFER;
TRACE_smpi_comm_in(my_proc_id, __func__,
new simgrid::instr::Pt2PtTIData("ibsend", MPI_COMM_WORLD->group()->rank(trace_dst),
CHECK_BUFFER(1, buf, count, datatype)
int size = datatype->get_extent() * count;
- xbt_assert(size > 0);
+ if (size == 0)
+ return MPI_SUCCESS;
+ else if (size <0)
+ return MPI_ERR_ARG;
std::vector<char> recvbuf(size);
retval =
MPI_Sendrecv(buf, count, datatype, dst, sendtag, recvbuf.data(), count, datatype, src, recvtag, comm, status);
} else {
aid_t my_proc_id = ((*request)->comm() != MPI_COMM_NULL) ? simgrid::s4u::this_actor::get_pid() : -1;
- TRACE_smpi_comm_in(my_proc_id, __func__, new simgrid::instr::WaitTIData("test", MPI_COMM_WORLD->group()->rank((*request)->src()),
- MPI_COMM_WORLD->group()->rank((*request)->dst()),
- (*request)->tag()));;
+ TRACE_smpi_comm_in(my_proc_id, __func__,
+ new simgrid::instr::WaitTIData("test", MPI_COMM_WORLD->group()->rank((*request)->src()),
+ MPI_COMM_WORLD->group()->rank((*request)->dst()),
+ (*request)->tag()));
retval = simgrid::smpi::Request::test(request,status, flag);
TRACE_smpi_comm_out(my_proc_id);