#include "smpi_request.hpp"
-#include "SmpiHost.hpp"
+#include "smpi_host.hpp"
#include "mc/mc.h"
#include "private.hpp"
#include "smpi_comm.hpp"
return detached_;
}
+MPI_Datatype Request::type(){
+ return old_type_;
+}
+
size_t Request::size(){
return size_;
}
{
if((*request) != MPI_REQUEST_NULL){
(*request)->refcount_--;
- if((*request)->refcount_<0) xbt_die("wrong refcount");
+ if((*request)->refcount_ < 0) {
+ (*request)->print_request("wrong refcount");
+ xbt_die("Whoops, wrong refcount");
+ }
if((*request)->refcount_==0){
Datatype::unref((*request)->old_type_);
Comm::unref((*request)->comm_);
simgrid::smpi::Process* process = smpi_process_remote(simgrid::s4u::Actor::by_pid(dst_));
- int async_small_thresh = xbt_cfg_get_int("smpi/async-small-thresh");
+ int async_small_thresh = simgrid::config::get_value<int>("smpi/async-small-thresh");
xbt_mutex_t mut = process->mailboxes_mutex();
if (async_small_thresh != 0 || (flags_ & RMA) != 0)
this->print_request("New send");
void* buf = buf_;
- if ((flags_ & SSEND) == 0 && ( (flags_ & RMA) != 0
- || static_cast<int>(size_) < xbt_cfg_get_int("smpi/send-is-detached-thresh") ) ) {
+ if ((flags_ & SSEND) == 0 &&
+ ((flags_ & RMA) != 0 ||
+ static_cast<int>(size_) < simgrid::config::get_value<int>("smpi/send-is-detached-thresh"))) {
void *oldbuf = nullptr;
detached_ = 1;
XBT_DEBUG("Send request %p is detached", this);
if (detached_ != 0 || ((flags_ & (ISEND | SSEND)) != 0)) { // issend should be treated as isend
// isend and send timings may be different
sleeptime = ((flags_ & ISEND) != 0)
- ? simgrid::s4u::Actor::self()->get_host()->extension<simgrid::smpi::SmpiHost>()->oisend(size_)
- : simgrid::s4u::Actor::self()->get_host()->extension<simgrid::smpi::SmpiHost>()->osend(size_);
+ ? simgrid::s4u::Actor::self()->get_host()->extension<simgrid::smpi::Host>()->oisend(size_)
+ : simgrid::s4u::Actor::self()->get_host()->extension<simgrid::smpi::Host>()->osend(size_);
}
if(sleeptime > 0.0){
XBT_DEBUG("sending size of %zu : sleep %f ", size_, sleeptime);
}
- int async_small_thresh = xbt_cfg_get_int("smpi/async-small-thresh");
+ int async_small_thresh = simgrid::config::get_value<int>("smpi/async-small-thresh");
xbt_mutex_t mut=process->mailboxes_mutex();
nsleeps=1;//reset the number of sleeps we will do next time
if (*request != MPI_REQUEST_NULL && ((*request)->flags_ & PERSISTENT) == 0)
*request = MPI_REQUEST_NULL;
- } else if (xbt_cfg_get_boolean("smpi/grow-injected-times")){
+ } else if (simgrid::config::get_value<bool>("smpi/grow-injected-times")) {
nsleeps++;
}
}
// This can speed up the execution of certain applications by an order of magnitude, such as HPL
static int nsleeps = 1;
double speed = simgrid::s4u::Actor::self()->get_host()->getSpeed();
- double maxrate = xbt_cfg_get_double("smpi/iprobe-cpu-usage");
+ double maxrate = simgrid::config::get_value<double>("smpi/iprobe-cpu-usage");
MPI_Request request = new Request(nullptr, 0, MPI_CHAR,
source == MPI_ANY_SOURCE ? MPI_ANY_SOURCE : comm->group()->actor(source)->get_pid(),
simgrid::s4u::this_actor::get_pid(), tag, comm, PERSISTENT | RECV);
request->print_request("New iprobe");
// We have to test both mailboxes as we don't know if we will receive one one or another
- if (xbt_cfg_get_int("smpi/async-small-thresh") > 0){
- mailbox = smpi_process()->mailbox_small();
- XBT_DEBUG("Trying to probe the perm recv mailbox");
- request->action_ = simcall_comm_iprobe(mailbox, 0, &match_recv, static_cast<void*>(request));
+ if (simgrid::config::get_value<int>("smpi/async-small-thresh") > 0) {
+ mailbox = smpi_process()->mailbox_small();
+ XBT_DEBUG("Trying to probe the perm recv mailbox");
+ request->action_ = simcall_comm_iprobe(mailbox, 0, &match_recv, static_cast<void*>(request));
}
if (request->action_ == nullptr){
}
else {
*flag = 0;
- if (xbt_cfg_get_boolean("smpi/grow-injected-times"))
+ if (simgrid::config::get_value<bool>("smpi/grow-injected-times"))
nsleeps++;
}
unref(&request);
if(req->detached_sender_ != nullptr){
//integrate pseudo-timing for buffering of small messages, do not bother to execute the simcall if 0
double sleeptime =
- simgrid::s4u::Actor::self()->get_host()->extension<simgrid::smpi::SmpiHost>()->orecv(req->real_size());
+ simgrid::s4u::Actor::self()->get_host()->extension<simgrid::smpi::Host>()->orecv(req->real_size());
if(sleeptime > 0.0){
simcall_process_sleep(sleeptime);
XBT_DEBUG("receiving size of %zu : sleep %f ", req->real_size_, sleeptime);