}
for (auto const& link_name : names) {
simgrid::surf::LinkImpl* l =
- surf_network_model->createLink(link_name.c_str(), link->bandwidth, link->latency, link->policy);
+ surf_network_model->createLink(link_name, link->bandwidth, link->latency, link->policy);
if (link->properties) {
for (auto const& elm : *link->properties)
l->setProperty(elm.first, elm.second);
- delete link->properties;
}
if (link->latency_trace)
if (link->state_trace)
l->setStateTrace(link->state_trace);
}
+ delete link->properties;
}
void sg_platf_new_cluster(ClusterCreationArgs* cluster)
if(cluster->loopback_bw > 0 || cluster->loopback_lat > 0){
current_as->linkCountPerNode_++;
- current_as->hasLoopback_ = 1;
+ current_as->hasLoopback_ = true;
}
if(cluster->limiter_link > 0){
current_as->linkCountPerNode_++;
- current_as->hasLimiter_ = 1;
+ current_as->hasLimiter_ = true;
}
for (int const& i : *cluster->radicals) {
linkDown = simgrid::surf::LinkImpl::byName(tmp_link);
auto as_cluster = static_cast<ClusterZone*>(current_as);
- as_cluster->privateLinks_.insert({rankId * as_cluster->linkCountPerNode_, {linkUp, linkDown}});
+ as_cluster->privateLinks_.insert({as_cluster->nodePosition(rankId), {linkUp, linkDown}});
}
//add a limiter link (shared link to account for maximal bandwidth of the node)
sg_platf_new_link(&link);
linkDown = simgrid::surf::LinkImpl::byName(tmp_link);
linkUp = linkDown;
- current_as->privateLinks_.insert(
- {rankId * current_as->linkCountPerNode_ + current_as->hasLoopback_, {linkUp, linkDown}});
+ current_as->privateLinks_.insert({current_as->nodePositionWithLoopback(rankId), {linkUp, linkDown}});
}
//call the cluster function that adds the others links
if (cluster->topology == SURF_CLUSTER_FAT_TREE) {
static_cast<FatTreeZone*>(current_as)->addProcessingNode(i);
} else {
- current_as->create_links_for_node(cluster, i, rankId,
- rankId*current_as->linkCountPerNode_ + current_as->hasLoopback_ + current_as->hasLimiter_ );
+ current_as->create_links_for_node(cluster, i, rankId, current_as->nodePositionWithLimiter(rankId));
}
rankId++;
}
XBT_DEBUG("<router id=\"%s\"/>", cluster->router_id.c_str());
if (cluster->router_id.empty()) {
std::string newid = std::string(cluster->prefix) + cluster->id + "_router" + cluster->suffix;
- current_as->router_ = sg_platf_new_router(newid.c_str(), NULL);
+ current_as->router_ = sg_platf_new_router(newid, NULL);
} else {
current_as->router_ = sg_platf_new_router(cluster->router_id, NULL);
}
std::vector<std::string> args(process->argv, process->argv + process->argc);
std::function<void()> code = factory(std::move(args));
+ std::shared_ptr<std::map<std::string, std::string>> properties(process->properties);
smx_process_arg_t arg = nullptr;
arg->data = nullptr;
arg->host = host;
arg->kill_time = kill_time;
- arg->properties = process->properties;
+ arg->properties = properties;
host->extension<simgrid::simix::Host>()->boot_processes.push_back(arg);
arg->data = nullptr;
arg->host = host;
arg->kill_time = kill_time;
- arg->properties = process->properties;
+ arg->properties = properties;
XBT_DEBUG("Process %s@%s will be started at time %f", arg->name.c_str(), arg->host->getCname(), start_time);
SIMIX_timer_set(start_time, [arg, auto_restart]() {
smx_actor_t actor = simix_global->create_process_function(arg->name.c_str(), std::move(arg->code), arg->data,
- arg->host, arg->properties, nullptr);
+ arg->host, arg->properties.get(), nullptr);
if (arg->kill_time >= 0)
simcall_process_set_kill_time(actor, arg->kill_time);
if (auto_restart)
XBT_DEBUG("Starting Process %s(%s) right now", arg->name.c_str(), host->getCname());
smx_actor_t actor = simix_global->create_process_function(arg->name.c_str(), std::move(code), nullptr, host,
- arg->properties, nullptr);
+ arg->properties.get(), nullptr);
/* The actor creation will fail if the host is currently dead, but that's fine */
if (actor != nullptr) {
SIMIX_process_auto_restart_set(actor, auto_restart);
}
}
- current_property_set = nullptr;
}
void sg_platf_new_peer(PeerCreationArgs* peer)