/* Don't forget to update the option description in smx_config when you change this */
s_surf_model_description_t surf_network_model_description[] = {
- {"LV08", "Realistic network analytic model (slow-start modeled by multiplying latency by 10.4, bandwidth by .92; bottleneck sharing uses a payload of S=8775 for evaluating RTT). ",
- &surf_network_model_init_LegrandVelho},
- {"Constant",
- "Simplistic network model where all communication take a constant time (one second). This model provides the lowest realism, but is (marginally) faster.",
- &surf_network_model_init_Constant},
- {"SMPI", "Realistic network model specifically tailored for HPC settings (accurate modeling of slow start with correction factors on three intervals: < 1KiB, < 64 KiB, >= 64 KiB)",
- &surf_network_model_init_SMPI},
- {"IB", "Realistic network model specifically tailored for HPC settings, with Infiniband contention model",
- &surf_network_model_init_IB},
- {"CM02", "Legacy network analytic model (Very similar to LV08, but without corrective factors. The timings of small messages are thus poorly modeled).",
- &surf_network_model_init_CM02},
- {"NS3", "Network pseudo-model using the NS3 tcp model instead of an analytic model", &surf_network_model_init_NS3},
- {"Reno", "Model from Steven H. Low using lagrange_solve instead of lmm_solve (experts only; check the code for more info).",
- &surf_network_model_init_Reno},
- {"Reno2", "Model from Steven H. Low using lagrange_solve instead of lmm_solve (experts only; check the code for more info).",
- &surf_network_model_init_Reno2},
- {"Vegas", "Model from Steven H. Low using lagrange_solve instead of lmm_solve (experts only; check the code for more info).",
- &surf_network_model_init_Vegas},
- {nullptr, nullptr, nullptr} /* this array must be nullptr terminated */
+ {"LV08", "Realistic network analytic model (slow-start modeled by multiplying latency by 13.01, bandwidth by .97; "
+ "bottleneck sharing uses a payload of S=20537 for evaluating RTT). ",
+ &surf_network_model_init_LegrandVelho},
+ {"Constant", "Simplistic network model where all communication take a constant time (one second). This model "
+ "provides the lowest realism, but is (marginally) faster.",
+ &surf_network_model_init_Constant},
+ {"SMPI", "Realistic network model specifically tailored for HPC settings (accurate modeling of slow start with "
+ "correction factors on three intervals: < 1KiB, < 64 KiB, >= 64 KiB)",
+ &surf_network_model_init_SMPI},
+ {"IB", "Realistic network model specifically tailored for HPC settings, with Infiniband contention model",
+ &surf_network_model_init_IB},
+ {"CM02", "Legacy network analytic model (Very similar to LV08, but without corrective factors. The timings of "
+ "small messages are thus poorly modeled).",
+ &surf_network_model_init_CM02},
+ {"NS3", "Network pseudo-model using the NS3 tcp model instead of an analytic model", &surf_network_model_init_NS3},
+ {"Reno",
+ "Model from Steven H. Low using lagrange_solve instead of lmm_solve (experts only; check the code for more info).",
+ &surf_network_model_init_Reno},
+ {"Reno2",
+ "Model from Steven H. Low using lagrange_solve instead of lmm_solve (experts only; check the code for more info).",
+ &surf_network_model_init_Reno2},
+ {"Vegas",
+ "Model from Steven H. Low using lagrange_solve instead of lmm_solve (experts only; check the code for more info).",
+ &surf_network_model_init_Vegas},
+ {nullptr, nullptr, nullptr} /* this array must be nullptr terminated */
};
#if ! HAVE_SMPI
/* search relative files in the path */
for (auto path_elm : surf_path) {
- char* buff = bprintf("%s" FILE_DELIM "%s", path_elm.c_str(), name);
- file = fopen(buff, mode);
- free(buff);
+ std::string buff = path_elm + FILE_DELIM + name;
+ file = fopen(buff.c_str(), mode);
if (file)
return file;
delete stype->model_properties;
free(stype);
}
- delete simgrid::surf::StorageImpl::storages;
+ for (auto s : *simgrid::surf::StorageImpl::storagesMap())
+ delete s.second;
+ delete simgrid::surf::StorageImpl::storagesMap();
for (auto model : *all_existing_models)
delete model;
double Model::nextOccuringEventLazy(double now)
{
- XBT_DEBUG("Before share resources, the size of modified actions set is %zd", modifiedSet_->size());
+ XBT_DEBUG("Before share resources, the size of modified actions set is %zu", modifiedSet_->size());
lmm_solve(maxminSystem_);
- XBT_DEBUG("After share resources, The size of modified actions set is %zd", modifiedSet_->size());
+ XBT_DEBUG("After share resources, The size of modified actions set is %zu", modifiedSet_->size());
while (not modifiedSet_->empty()) {
Action *action = &(modifiedSet_->front());
heapRemove(getModel()->getActionHeap());
}
-void Action::gapRemove() {}
-
-void Action::setPriority(double priority)
+void Action::setSharingWeight(double weight)
{
- XBT_IN("(%p,%g)", this, priority);
- priority_ = priority;
- lmm_update_variable_weight(getModel()->getMaxminSystem(), getVariable(), priority);
+ XBT_IN("(%p,%g)", this, weight);
+ sharingWeight_ = weight;
+ lmm_update_variable_weight(getModel()->getMaxminSystem(), getVariable(), weight);
if (getModel()->getUpdateMechanism() == UM_LAZY)
heapRemove(getModel()->getActionHeap());
lmm_update_variable_weight(getModel()->getMaxminSystem(), getVariable(), 0.0);
if (getModel()->getUpdateMechanism() == UM_LAZY){
heapRemove(getModel()->getActionHeap());
- if (getModel()->getUpdateMechanism() == UM_LAZY && stateSet_ == getModel()->getRunningActionSet() && priority_ > 0){
+ if (getModel()->getUpdateMechanism() == UM_LAZY && stateSet_ == getModel()->getRunningActionSet() &&
+ sharingWeight_ > 0) {
//If we have a lazy model, we need to update the remaining value accordingly
updateRemainingLazy(surf_get_clock());
}
{
XBT_IN("(%p)", this);
if (suspended_ != 2) {
- lmm_update_variable_weight(getModel()->getMaxminSystem(), getVariable(), priority_);
+ lmm_update_variable_weight(getModel()->getMaxminSystem(), getVariable(), sharingWeight_);
suspended_ = 0;
if (getModel()->getUpdateMechanism() == UM_LAZY)
heapRemove(getModel()->getActionHeap());
else
{
xbt_assert(stateSet_ == getModel()->getRunningActionSet(), "You're updating an action that is not running.");
- xbt_assert(priority_ > 0, "You're updating an action that seems suspended.");
+ xbt_assert(sharingWeight_ > 0, "You're updating an action that seems suspended.");
}
delta = now - lastUpdate_;
double_update(&maxDuration_, delta, sg_surf_precision);
//FIXME: duplicated code
- if ((remains_ <= 0) &&
- (lmm_get_variable_weight(getVariable()) > 0)) {
- finish();
- setState(Action::State::done);
- heapRemove(getModel()->getActionHeap());
- } else if (((maxDuration_ != NO_MAX_DURATION)
- && (maxDuration_ <= 0))) {
+ if (((remains_ <= 0) && (lmm_get_variable_weight(getVariable()) > 0)) ||
+ ((maxDuration_ > NO_MAX_DURATION) && (maxDuration_ <= 0))) {
finish();
setState(Action::State::done);
heapRemove(getModel()->getActionHeap());