FIXME: maybe incomplete.
XBT_ATTRIB_NORETURN= \
XBT_ATTRIB_UNUSED= \
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(cname,parent,desc)= \
- XBT_ATTRIB_DEPRECATED_v339(mesg)= \
XBT_ATTRIB_DEPRECATED_v340(mesg)= \
XBT_ATTRIB_DEPRECATED_v341(mesg)= \
XBT_ATTRIB_DEPRECATED_v342(mesg)=
XBT_PUBLIC sg_error_t sg_comm_wait_for(sg_comm_t comm, double timeout);
XBT_PUBLIC void sg_comm_unref(sg_comm_t comm);
-#ifndef DOXYGEN
-XBT_ATTRIB_DEPRECATED_v339("Please use sg_activity_set_t instead") XBT_PUBLIC
- void sg_comm_wait_all(sg_comm_t* comms, size_t count);
-XBT_ATTRIB_DEPRECATED_v339("Please use sg_activity_set_t instead") XBT_PUBLIC
- ssize_t sg_comm_wait_any_for(sg_comm_t* comms, size_t count, double timeout);
-XBT_ATTRIB_DEPRECATED_v339("Please use sg_activity_set_t instead") XBT_PUBLIC
- ssize_t sg_comm_wait_any(sg_comm_t* comms, size_t count);
-#endif
-
SG_END_DECL
#endif /* INCLUDE_SIMGRID_COMM_H_ */
XBT_PUBLIC sg_error_t sg_exec_wait(sg_exec_t exec);
XBT_PUBLIC sg_error_t sg_exec_wait_for(sg_exec_t exec, double timeout);
-XBT_ATTRIB_DEPRECATED_v339("Please use sg_activity_set_t instead") XBT_PUBLIC ssize_t
- sg_exec_wait_any_for(sg_exec_t* execs, size_t count, double timeout);
-XBT_ATTRIB_DEPRECATED_v339("Please use sg_activity_set_t instead") XBT_PUBLIC ssize_t
- sg_exec_wait_any(sg_exec_t* execs, size_t count);
-
SG_END_DECL
#endif /* INCLUDE_SIMGRID_EXEC_H_ */
kernel::activity::ActivityImpl* get_impl() const { return pimpl_.get(); }
#ifndef DOXYGEN
- static ssize_t deprecated_wait_any_for(const std::vector<ActivityPtr>& activities, double timeout); // XBT_ATTRIB_DEPRECATED_v339
- XBT_ATTRIB_DEPRECATED_v339("Please use ActivitySet instead") static ssize_t test_any(const std::vector<ActivityPtr>& activities);
-
friend void intrusive_ptr_release(Activity* a)
{
if (a->refcount_.fetch_sub(1, std::memory_order_release) == 1) {
* dependency or no resource assigned) */
void on_this_veto_cb(const std::function<void(AnyActivity&)>& cb) { on_this_veto.connect(cb); }
-#ifndef DOXYGEN
- XBT_ATTRIB_DEPRECATED_v339("Please use ActivitySet instead") static ssize_t wait_any(const std::vector<ActivityPtr>& activities) { return deprecated_wait_any_for(activities, -1); }
- XBT_ATTRIB_DEPRECATED_v339("Please use ActivitySet instead") static ssize_t wait_any_for(const std::vector<ActivityPtr>& activities, double timeout) { return deprecated_wait_any_for(activities, timeout); }
-#endif
-
AnyActivity* add_successor(ActivityPtr a)
{
Activity::add_successor(a);
}
Comm* wait_for(double timeout) override;
-
-#ifndef DOXYGEN
- XBT_ATTRIB_DEPRECATED_v339("Please use ActivitySet instead") static ssize_t wait_any(const std::vector<CommPtr>& comms) { return deprecated_wait_any_for(comms, -1); }
- XBT_ATTRIB_DEPRECATED_v339("Please use ActivitySet instead") static ssize_t wait_any_for(const std::vector<CommPtr>& comms, double timeout) { return deprecated_wait_any_for(comms, timeout); }
-
- static ssize_t deprecated_wait_any_for(const std::vector<CommPtr>& comms,
- double timeout); // XBT_ATTRIB_DEPRECATED_v339
-
- XBT_ATTRIB_DEPRECATED_v339("Please use ActivitySet instead") static ssize_t test_any(const std::vector<CommPtr>& comms);
- XBT_ATTRIB_DEPRECATED_v339("Please use ActivitySet instead") static void wait_all(const std::vector<CommPtr>& comms);
- XBT_ATTRIB_DEPRECATED_v339("Please use ActivitySet instead") static size_t
- wait_all_for(const std::vector<CommPtr>& comms, double timeout);
-#endif
};
} // namespace simgrid::s4u
double get_cost() const;
bool is_parallel() const { return parallel_; }
bool is_assigned() const override;
-
-#ifndef DOXYGEN
- static ssize_t deprecated_wait_any_for(const std::vector<ExecPtr>& execs, double timeout); // XBT_ATTRIB_DEPRECATED_v339
-
- XBT_ATTRIB_DEPRECATED_v339("Please use ActivitySet instead") static ssize_t
- wait_any(const std::vector<ExecPtr>& execs) { return deprecated_wait_any_for(execs, -1); }
- XBT_ATTRIB_DEPRECATED_v339("Please use ActivitySet instead") static ssize_t
- wait_any_for(const std::vector<ExecPtr>& execs, double timeout) { return deprecated_wait_any_for(execs, timeout); }
-#endif
};
} // namespace simgrid::s4u
explicit Io(kernel::activity::IoImplPtr pimpl);
Io* do_start() override;
- static ssize_t deprecated_wait_any_for(const std::vector<IoPtr>& ios, double timeout); // XBT_ATTRIB_DEPRECATED_v339
-
public:
enum class OpType { READ, WRITE };
/*! \static Initiate the creation of an I/O. Setters have to be called afterwards */
static IoPtr init();
-#ifndef DOXYGEN
- XBT_ATTRIB_DEPRECATED_v339("Please use ActivitySet instead")
- static ssize_t wait_any(const std::vector<IoPtr>& ios) { return deprecated_wait_any_for(ios, -1); }
- XBT_ATTRIB_DEPRECATED_v339("Please use ActivitySet instead")
- static ssize_t wait_any_for(const std::vector<IoPtr>& ios, double timeout) { return deprecated_wait_any_for(ios, timeout); }
-#endif
double get_remaining() const override;
sg_size_t get_performed_ioops() const;
*/
void add_route(const NetZone* src, const NetZone* dst, const std::vector<LinkInRoute>& link_list, bool symmetrical = true);
-#ifndef DOXYGEN
- /**
- * @brief Add a route between 2 netpoints
- *
- * Create a route:
- * - route between 2 hosts/routers in same netzone, no gateway is needed
- * - route between 2 netzones, connecting 2 gateways.
- *
- * @param src Source netzone's netpoint
- * @param dst Destination netzone' netpoint
- * @param gw_src Netpoint of the gateway in the source netzone
- * @param gw_dst Netpoint of the gateway in the destination netzone
- * @param link_list List of links and their direction used in this communication
- * @param symmetrical Bi-directional communication
- */
- XBT_ATTRIB_DEPRECATED_v339("Please call add_route either from Host to Host or NetZone to NetZone") void add_route(
- kernel::routing::NetPoint* src, kernel::routing::NetPoint* dst, kernel::routing::NetPoint* gw_src,
- kernel::routing::NetPoint* gw_dst, const std::vector<LinkInRoute>& link_list, bool symmetrical = true);
- /**
- * @brief Add a route between 2 netpoints, and same in other direction
- *
- * Create a route:
- * - route between 2 hosts/routers in same netzone, no gateway is needed
- * - route between 2 netzones, connecting 2 gateways.
- *
- * @param src Source netzone's netpoint
- * @param dst Destination netzone' netpoint
- * @param gw_src Netpoint of the gateway in the source netzone
- * @param gw_dst Netpoint of the gateway in the destination netzone
- * @param link_list List of links
- */
- XBT_ATTRIB_DEPRECATED_v339("Please call add_route either from Host to Host or NetZone to NetZone") void add_route(
- kernel::routing::NetPoint* src, kernel::routing::NetPoint* dst, kernel::routing::NetPoint* gw_src,
- kernel::routing::NetPoint* gw_dst, const std::vector<const Link*>& links);
-#endif
-
/**
* @brief Add a route between 2 hosts
*
/** @brief Aggregates the callbacks used to build clusters netzones (Torus/Dragronfly/Fat-Tree) */
struct ClusterCallbacks {
- /**
- * @brief Callback used to set the netpoint and gateway located at some leaf of clusters (Torus, FatTree, etc)
- *
- * The netpoint can be either a host, router or another netzone.
- * Gateway must be non-null if netpoint is a netzone
- *
- * @param zone: The newly create zone, needed for creating new resources (hosts, links)
- * @param coord: the coordinates of the element
- * @param id: Internal identifier of the element
- * @return pair<NetPoint*, NetPoint*>: returns a pair of netpoint and gateway.
- */
- // XBT_ATTRIB_DEPRECATED_v339
- using ClusterNetPointCb = std::pair<kernel::routing::NetPoint*, kernel::routing::NetPoint*>(
- NetZone* zone, const std::vector<unsigned long>& coord, unsigned long id);
-
/**
* @brief Callback used to set the NetZone located at some leaf of clusters (Torus, FatTree, etc)
*
bool by_netzone_ = false;
bool is_by_netzone() const { return by_netzone_; }
- bool by_netpoint_ = false; // XBT_ATTRIB_DEPRECATED_v339
- bool is_by_netpoint() const { return by_netpoint_; } // XBT_ATTRIB_DEPRECATED_v339
- std::function<ClusterNetPointCb> netpoint; // XBT_ATTRIB_DEPRECATED_v339
std::function<ClusterHostCb> host;
std::function<ClusterNetZoneCb> netzone;
std::function<ClusterLinkCb> loopback = {};
ClusterCallbacks(const std::function<ClusterHostCb>& set_host,
const std::function<ClusterLinkCb>& set_loopback, const std::function<ClusterLinkCb>& set_limiter)
: host(set_host), loopback(set_loopback), limiter(set_limiter){/* nothing to do */};
-
- XBT_ATTRIB_DEPRECATED_v339("Please use callback with either a Host/NetZone creation function as first parameter")
- explicit ClusterCallbacks(const std::function<ClusterNetPointCb>& set_netpoint)
- : by_netpoint_(true), netpoint(set_netpoint){/* nothing to do */};
- XBT_ATTRIB_DEPRECATED_v339("Please use callback with either a Host/NetZone creation function as first parameter")
- ClusterCallbacks(const std::function<ClusterNetPointCb>& set_netpoint,
- const std::function<ClusterLinkCb>& set_loopback, const std::function<ClusterLinkCb>& set_limiter)
- : by_netpoint_(true), netpoint(set_netpoint), loopback(set_loopback), limiter(set_limiter){/* nothing to do */};
};
/**
* @brief Create a torus zone
#define XBT_ATTRIB_DEPRECATED(mesg) __attribute__((deprecated(mesg)))
#endif
-#define XBT_ATTRIB_DEPRECATED_v339(mesg) \
- XBT_ATTRIB_DEPRECATED(mesg " (this compatibility wrapper will be dropped after v3.38)")
#define XBT_ATTRIB_DEPRECATED_v340(mesg) \
XBT_ATTRIB_DEPRECATED(mesg " (this compatibility wrapper will be dropped after v3.39)")
#define XBT_ATTRIB_DEPRECATED_v341(mesg) \
kernel::routing::NetPoint* netpoint = nullptr;
kernel::routing::NetPoint* gw = nullptr;
auto dims = index_to_dims(position);
- if (set_callbacks.is_by_netpoint()) { // XBT_ATTRIB_DEPRECATED_v339
- std::tie(netpoint, gw) = set_callbacks.netpoint(get_iface(), dims, position); // XBT_ATTRIB_DEPRECATED_v339
- } else if (set_callbacks.is_by_netzone()) {
+ if (set_callbacks.is_by_netzone()) {
s4u::NetZone* netzone = set_callbacks.netzone(get_iface(), dims, position);
netpoint = netzone->get_netpoint();
gw = netzone->get_gateway();
return false;
}
-ssize_t Activity::test_any(const std::vector<ActivityPtr>& activities) // XBT_ATTRIB_DEPRECATED_v339
-{
- std::vector<kernel::activity::ActivityImpl*> ractivities(activities.size());
- std::transform(begin(activities), end(activities), begin(ractivities),
- [](const ActivityPtr& act) { return act->pimpl_.get(); });
-
- kernel::actor::ActorImpl* issuer = kernel::actor::ActorImpl::self();
- kernel::actor::ActivityTestanySimcall observer{issuer, ractivities, "test_any"};
- ssize_t changed_pos = kernel::actor::simcall_answered(
- [&observer] {
- return kernel::activity::ActivityImpl::test_any(observer.get_issuer(), observer.get_activities());
- },
- &observer);
- if (changed_pos != -1)
- activities.at(changed_pos)->complete(State::FINISHED);
- return changed_pos;
-}
-
-ssize_t Activity::deprecated_wait_any_for(const std::vector<ActivityPtr>& activities, double timeout) // XBT_ATTRIB_DEPRECATED_v339
-{
- std::vector<kernel::activity::ActivityImpl*> ractivities(activities.size());
- std::transform(begin(activities), end(activities), begin(ractivities),
- [](const ActivityPtr& activity) { return activity->pimpl_.get(); });
-
- kernel::actor::ActorImpl* issuer = kernel::actor::ActorImpl::self();
- kernel::actor::ActivityWaitanySimcall observer{issuer, ractivities, timeout, "wait_any_for"};
- ssize_t changed_pos = kernel::actor::simcall_blocking(
- [&observer] {
- kernel::activity::ActivityImpl::wait_any_for(observer.get_issuer(), observer.get_activities(),
- observer.get_timeout());
- },
- &observer);
- if (changed_pos != -1)
- activities.at(changed_pos)->complete(State::FINISHED);
- return changed_pos;
-}
-
Activity* Activity::cancel()
{
kernel::actor::simcall_answered([this] {
return this;
}
-ssize_t Comm::test_any(const std::vector<CommPtr>& comms) // XBT_ATTRIB_DEPRECATED_v339
-{
- std::vector<kernel::activity::ActivityImpl*> ractivities(comms.size());
- std::transform(begin(comms), end(comms), begin(ractivities), [](const CommPtr& act) { return act->pimpl_.get(); });
-
- kernel::actor::ActorImpl* issuer = kernel::actor::ActorImpl::self();
- kernel::actor::ActivityTestanySimcall observer{issuer, ractivities, "test_any"};
- ssize_t changed_pos = kernel::actor::simcall_answered(
- [&observer] {
- return kernel::activity::ActivityImpl::test_any(observer.get_issuer(), observer.get_activities());
- },
- &observer);
- if (changed_pos != -1)
- comms.at(changed_pos)->complete(State::FINISHED);
- return changed_pos;
-}
-
/** @brief Block the calling actor until the communication is finished, or until timeout
*
* On timeout, an exception is thrown and the communication is invalidated.
return this;
}
-ssize_t Comm::deprecated_wait_any_for(const std::vector<CommPtr>& comms, double timeout) // XBT_ATTRIB_DEPRECATED_v339
-{
- if (comms.empty())
- return -1;
- ActivitySet set;
- for (const auto& comm : comms)
- set.push(comm);
- try {
- auto* ret = set.wait_any_for(timeout).get();
- for (size_t i = 0; i < comms.size(); i++)
- if (comms[i].get() == ret)
- return i;
-
- } catch (TimeoutException& e) {
- return -1;
- } catch (const NetworkFailureException& e) {
- for (auto c : comms)
- if (c->pimpl_->get_state() == kernel::activity::State::FAILED)
- c->complete(State::FAILED);
-
- e.rethrow_nested(XBT_THROW_POINT, boost::core::demangle(typeid(e).name()) + " raised in kernel mode.");
- }
- return -1;
-}
-
-void Comm::wait_all(const std::vector<CommPtr>& comms) // XBT_ATTRIB_DEPRECATED_v339
-{
- // TODO: this should be a simcall or something
- for (const auto& comm : comms)
- comm->wait();
-}
-
-size_t Comm::wait_all_for(const std::vector<CommPtr>& comms, double timeout) // XBT_ATTRIB_DEPRECATED_v339
-{
- if (timeout < 0.0) {
- for (const auto& comm : comms)
- comm->wait();
- return comms.size();
- }
-
- ActivitySet set;
- for (auto comm : comms)
- set.push(comm);
- set.wait_all_for(timeout);
-
- return set.size();
-}
} // namespace simgrid::s4u
/* **************************** Public C interface *************************** */
int sg_comm_isinstance(sg_activity_t acti)
}
return status;
}
-
-void sg_comm_wait_all(sg_comm_t* comms, size_t count) // XBT_ATTRIB_DEPRECATED_v339
-{
- simgrid::s4u::ActivitySet as;
- for (size_t i = 0; i < count; i++)
- as.push(comms[i]);
-
- as.wait_all();
-}
-
-ssize_t sg_comm_wait_any(sg_comm_t* comms, size_t count) // XBT_ATTRIB_DEPRECATED_v339
-{
- std::vector<simgrid::s4u::CommPtr> s4u_comms;
- for (size_t i = 0; i < count; i++)
- s4u_comms.emplace_back(comms[i], false);
-
- ssize_t pos = simgrid::s4u::Comm::deprecated_wait_any_for(s4u_comms, -1);
- for (size_t i = 0; i < count; i++) {
- if (pos != -1 && static_cast<size_t>(pos) != i)
- s4u_comms[i]->add_ref();
- }
- return pos;
-}
-
-ssize_t sg_comm_wait_any_for(sg_comm_t* comms, size_t count, double timeout) // XBT_ATTRIB_DEPRECATED_v339
-{
- std::vector<simgrid::s4u::CommPtr> s4u_comms;
- for (size_t i = 0; i < count; i++)
- s4u_comms.emplace_back(comms[i], false);
-
- ssize_t pos = simgrid::s4u::Comm::deprecated_wait_any_for(s4u_comms, timeout);
- for (size_t i = 0; i < count; i++) {
- if (pos != -1 && static_cast<size_t>(pos) != i)
- s4u_comms[i]->add_ref();
- }
- return pos;
-}
return this;
}
-ssize_t Exec::deprecated_wait_any_for(const std::vector<ExecPtr>& execs, double timeout) // XBT_ATTRIB_DEPRECATED_v339
-{
- if (execs.empty())
- return -1;
- ActivitySet set;
- for (const auto& exec : execs)
- set.push(exec);
- try {
- auto* ret = set.wait_any_for(timeout).get();
- for (size_t i = 0; i < execs.size(); i++)
- if (execs[i].get() == ret)
- return i;
-
- } catch (TimeoutException& e) {
- return -1;
- }
- return -1;
-}
-
/** @brief change the execution bound
* This means changing the maximal amount of flops per second that it may consume, regardless of what the host may
* deliver. Currently, this cannot be changed once the exec started.
}
return status;
}
-
-ssize_t sg_exec_wait_any(sg_exec_t* execs, size_t count) // XBT_ATTRIB_DEPRECATED_v339
-{
- std::vector<simgrid::s4u::ExecPtr> s4u_execs;
- for (size_t i = 0; i < count; i++)
- s4u_execs.emplace_back(execs[i], false);
-
- ssize_t pos = simgrid::s4u::Exec::deprecated_wait_any_for(s4u_execs, -1.0);
- for (size_t i = 0; i < count; i++) {
- if (pos != -1 && static_cast<size_t>(pos) != i)
- s4u_execs[i]->add_ref();
- }
- return pos;
-}
-
-ssize_t sg_exec_wait_any_for(sg_exec_t* execs, size_t count, double timeout) // XBT_ATTRIB_DEPRECATED_v339
-{
- std::vector<simgrid::s4u::ExecPtr> s4u_execs;
- for (size_t i = 0; i < count; i++)
- s4u_execs.emplace_back(execs[i], false);
-
- ssize_t pos = simgrid::s4u::Exec::deprecated_wait_any_for(s4u_execs, timeout);
- for (size_t i = 0; i < count; i++) {
- if (pos != -1 && static_cast<size_t>(pos) != i)
- s4u_execs[i]->add_ref();
- }
- return pos;
-}
return this;
}
-ssize_t Io::deprecated_wait_any_for(const std::vector<IoPtr>& ios, double timeout) // XBT_ATTRIB_DEPRECATED_v339
-{
- ActivitySet set;
- for (const auto& io : ios)
- set.push(io);
-
- auto* ret = set.wait_any_for(timeout).get();
- for (size_t i = 0; i < ios.size(); i++)
- if (ios[i].get() == ret)
- return i;
-
- return -1;
-}
-
IoPtr Io::set_disk(const_sg_disk_t disk)
{
xbt_assert(state_ == State::INITED || state_ == State::STARTING, "Cannot set disk once the Io is started");
link_list, symmetrical);
}
-void NetZone::add_route(kernel::routing::NetPoint* src, kernel::routing::NetPoint* dst,
- kernel::routing::NetPoint* gw_src, kernel::routing::NetPoint* gw_dst,
- const std::vector<LinkInRoute>& link_list, bool symmetrical) // XBT_ATTRIB_DEPRECATED_v339
-{
- pimpl_->add_route(src, dst, gw_src, gw_dst, link_list, symmetrical);
-}
-
-void NetZone::add_route(kernel::routing::NetPoint* src, kernel::routing::NetPoint* dst,
- kernel::routing::NetPoint* gw_src, kernel::routing::NetPoint* gw_dst,
- const std::vector<const Link*>& links) // XBT_ATTRIB_DEPRECATED_v339
-{
- std::vector<LinkInRoute> links_direct;
- std::vector<LinkInRoute> links_reverse;
- for (auto* l : links) {
- links_direct.emplace_back(LinkInRoute(l, LinkInRoute::Direction::UP));
- links_reverse.emplace_back(LinkInRoute(l, LinkInRoute::Direction::DOWN));
- }
- pimpl_->add_route(src, dst, gw_src, gw_dst, links_direct, false);
- pimpl_->add_route(dst, src, gw_dst, gw_src, links_reverse, false);
-}
-
void NetZone::add_route(const Host* src, const Host* dst, const std::vector<LinkInRoute>& link_list, bool symmetrical)
{
pimpl_->add_route(src ? src->get_netpoint(): nullptr, dst ? dst->get_netpoint(): nullptr, nullptr, nullptr,