+ExecPtr Exec::set_flops_amount(double flops_amount)
+{
+ xbt_assert(state_ == State::INITED, "Cannot change the flop_amount of an exec after its start");
+ flops_amounts_.assign(1, flops_amount);
+ Activity::set_remaining(flops_amounts_.front());
+ return this;
+}
+
+ExecPtr Exec::set_flops_amounts(const std::vector<double>& flops_amounts)
+{
+ xbt_assert(state_ == State::INITED, "Cannot change the flops_amounts of an exec after its start");
+ flops_amounts_ = flops_amounts;
+ parallel_ = true;
+ return this;
+}
+
+ExecPtr Exec::set_bytes_amounts(const std::vector<double>& bytes_amounts)
+{
+ xbt_assert(state_ == State::INITED, "Cannot change the bytes_amounts of an exec after its start");
+ bytes_amounts_ = bytes_amounts;
+ parallel_ = true;
+ return this;
+}
+
+/** @brief Retrieve the host on which this activity takes place.
+ * If it runs on more than one host, only the first host is returned.
+ */
+Host* Exec::get_host() const
+{
+ return static_cast<kernel::activity::ExecImpl*>(pimpl_.get())->get_host();
+}
+unsigned int Exec::get_host_number() const
+{
+ return static_cast<kernel::activity::ExecImpl*>(pimpl_.get())->get_host_number();
+}
+double Exec::get_start_time() const
+{
+ return (pimpl_->surf_action_ == nullptr) ? -1 : pimpl_->surf_action_->get_start_time();
+}
+double Exec::get_finish_time() const
+{
+ return (pimpl_->surf_action_ == nullptr) ? -1 : pimpl_->surf_action_->get_finish_time();
+}
+double Exec::get_cost() const
+{
+ return (pimpl_->surf_action_ == nullptr) ? -1 : pimpl_->surf_action_->get_cost();
+}
+