A
lgorithmique
N
umérique
D
istribuée
Public GIT Repository
projects
/
simgrid.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[sonar] don't mix public/private issues in jedule
[simgrid.git]
/
src
/
instr
/
jedule
/
jedule_platform.cpp
diff --git
a/src/instr/jedule/jedule_platform.cpp
b/src/instr/jedule/jedule_platform.cpp
index a228b90dbde9c4600d89c975b117d1e456e4f7f4..53e657a3bcdfc7ad58ed389f4cd78ec2abd354d3 100644
(file)
--- a/
src/instr/jedule/jedule_platform.cpp
+++ b/
src/instr/jedule/jedule_platform.cpp
@@
-1,4
+1,4
@@
-/* Copyright (c) 2010-20
19
. The SimGrid Team. All rights reserved. */
+/* Copyright (c) 2010-20
20
. The SimGrid Team. All rights reserved. */
/* This program is free software; you can redistribute it and/or modify it
* under the terms of the license (GNU LGPL) which comes with this package. */
/* This program is free software; you can redistribute it and/or modify it
* under the terms of the license (GNU LGPL) which comes with this package. */
@@
-19,35
+19,26
@@
std::unordered_map<std::string, jed_container_t> container_name2container;
namespace simgrid {
namespace jedule {
Subset::Subset(int start_idx, int end_idx, Container* parent)
namespace simgrid {
namespace jedule {
Subset::Subset(int start_idx, int end_idx, Container* parent)
-
: start_idx(start_idx
), parent(parent)
+
: start_idx(start_idx), nres(end_idx - start_idx + 1
), parent(parent)
{
{
- nres=end_idx-start_idx+1;
}
}
-Container::Container(
std::string name) : name(std::move(name)
)
+Container::Container(
const std::string& name) : name(name
)
{
container_name2container.insert({this->name, this});
}
{
container_name2container.insert({this->name, this});
}
-Container::~Container()
-{
- if (not this->children.empty())
- for (auto const& child : this->children)
- delete child;
-}
-
void Container::add_child(jed_container_t child)
{
xbt_assert(child != nullptr);
void Container::add_child(jed_container_t child)
{
xbt_assert(child != nullptr);
-
this->children.push
_back(child);
- child->
parent = this
;
+
children_.emplace
_back(child);
+ child->
set_parent(this)
;
}
void Container::add_resources(std::vector<sg_host_t> hosts)
{
}
void Container::add_resources(std::vector<sg_host_t> hosts)
{
- this->is_lowest_ = 1;
- this->children.clear();
- this->last_id_ = 0;
+ children_.clear();
+ last_id_ = 0;
for (auto const& host : hosts) {
const char *host_name = sg_host_get_name(host);
for (auto const& host : hosts) {
const char *host_name = sg_host_get_name(host);
@@
-58,9
+49,8
@@
void Container::add_resources(std::vector<sg_host_t> hosts)
}
}
}
}
-void Container::create_hierarchy(sg_netzone_t from_as)
+void Container::create_hierarchy(
const_
sg_netzone_t from_as)
{
{
-
if (from_as->get_children().empty()) {
// I am no AS
// add hosts to jedule platform
if (from_as->get_children().empty()) {
// I am no AS
// add hosts to jedule platform
@@
-75,27
+65,32
@@
void Container::create_hierarchy(sg_netzone_t from_as)
}
}
}
}
-
std::vector<int> Container::get_hierarchy(
)
+
int Container::get_child_position(Container* child
)
{
{
- if(this->parent != nullptr ) {
+ unsigned int i = 0;
+ int child_nb = -1;
- if (not this->parent->children.empty()) {
+ for (auto const& c : children_) {
+ if (c.get() == child) {
+ child_nb = i;
+ break;
+ }
+ i++;
+ }
+ return child_nb;
+}
+
+std::vector<int> Container::get_hierarchy()
+{
+ if (parent_ != nullptr) {
+ if (not parent_->has_children()) {
// we are in the last level
// we are in the last level
- return
this->parent
->get_hierarchy();
+ return
parent_
->get_hierarchy();
} else {
} else {
- unsigned int i =0;
- int child_nb = -1;
-
- for (auto const& child : this->parent->children) {
- if( child == this) {
- child_nb = i;
- break;
- }
- i++;
- }
+ int child_nb = parent_->get_child_position(this);
xbt_assert( child_nb > - 1);
xbt_assert( child_nb > - 1);
- std::vector<int> heir_list =
this->parent
->get_hierarchy();
+ std::vector<int> heir_list =
parent_
->get_hierarchy();
heir_list.insert(heir_list.begin(), child_nb);
return heir_list;
}
heir_list.insert(heir_list.begin(), child_nb);
return heir_list;
}
@@
-147,8
+142,8
@@
void Container::print_resources(FILE* jed_file)
void Container::print(FILE* jed_file)
{
fprintf(jed_file, " <res name=\"%s\">\n", this->name.c_str());
void Container::print(FILE* jed_file)
{
fprintf(jed_file, " <res name=\"%s\">\n", this->name.c_str());
- if (not
this->children
.empty()) {
- for (auto const& child :
this->children
) {
+ if (not
children_
.empty()) {
+ for (auto const& child :
children_
) {
child->print(jed_file);
}
} else {
child->print(jed_file);
}
} else {
@@
-157,10
+152,11
@@
void Container::print(FILE* jed_file)
fprintf(jed_file, " </res>\n");
}
fprintf(jed_file, " </res>\n");
}
-}
-}
+}
// namespace jedule
+}
// namespace simgrid
-static void add_subsets_to(std::vector<jed_subset_t> *subset_list, std::vector<const char*> hostgroup, jed_container_t parent)
+static void add_subsets_to(std::vector<simgrid::jedule::Subset>& subset_list, std::vector<const char*> hostgroup,
+ jed_container_t parent)
{
// get ids for each host
// sort ids
{
// get ids for each host
// sort ids
@@
-174,7
+170,7
@@
static void add_subsets_to(std::vector<jed_subset_t> *subset_list, std::vector<c
for (auto const& host_name : hostgroup) {
xbt_assert( host_name != nullptr );
jed_container_t parent_cont = host2_simgrid_parent_container.at(host_name);
for (auto const& host_name : hostgroup) {
xbt_assert( host_name != nullptr );
jed_container_t parent_cont = host2_simgrid_parent_container.at(host_name);
- unsigned int id = parent_cont->
name2id.at
(host_name);
+ unsigned int id = parent_cont->
get_id_by_name
(host_name);
id_list.push_back(id);
}
unsigned int nb_ids = id_list.size();
id_list.push_back(id);
}
unsigned int nb_ids = id_list.size();
@@
-185,38
+181,37
@@
static void add_subsets_to(std::vector<jed_subset_t> *subset_list, std::vector<c
int pos = start;
for(unsigned int i=0; i<nb_ids; i++) {
if( id_list[i] - id_list[pos] > 1 ) {
int pos = start;
for(unsigned int i=0; i<nb_ids; i++) {
if( id_list[i] - id_list[pos] > 1 ) {
- subset_list
->push_back(new simgrid::jedule::Subset(id_list[start], id_list[pos], parent)
);
+ subset_list
.emplace_back(id_list[start], id_list[pos], parent
);
start = i;
if( i == nb_ids-1 ) {
start = i;
if( i == nb_ids-1 ) {
-
subset_list->push_back(new simgrid::jedule::Subset(id_list[i], id_list[i], parent)
);
+
subset_list.emplace_back(id_list[i], id_list[i], parent
);
}
} else {
if( i == nb_ids-1 ) {
}
} else {
if( i == nb_ids-1 ) {
- subset_list
->push_back(new simgrid::jedule::Subset(id_list[start], id_list[i], parent)
);
+ subset_list
.emplace_back(id_list[start], id_list[i], parent
);
}
}
pos = i;
}
}
}
}
pos = i;
}
}
-
}
}
-void get_resource_selection_by_hosts(std::vector<jed_subset_t> *subset_list, std::vector<sg_host_t> *host_list)
+void get_resource_selection_by_hosts(std::vector<simgrid::jedule::Subset>& subset_list,
+ const std::vector<sg_host_t>& host_list)
{
{
- xbt_assert( host_list != nullptr );
// for each host name
// find parent container
// group by parent container
std::unordered_map<const char*, std::vector<const char*>> parent2hostgroup;
// for each host name
// find parent container
// group by parent container
std::unordered_map<const char*, std::vector<const char*>> parent2hostgroup;
- for (auto const& host :
*
host_list) {
+ for (auto const& host : host_list) {
const char *host_name = sg_host_get_name(host);
const char *host_name = sg_host_get_name(host);
-
jed_container_t
parent = host2_simgrid_parent_container.at(host_name);
+
const simgrid::jedule::Container*
parent = host2_simgrid_parent_container.at(host_name);
xbt_assert( parent != nullptr );
xbt_assert( parent != nullptr );
- auto host_group = parent2hostgroup.find(parent->
name.c_str
());
+ auto host_group = parent2hostgroup.find(parent->
get_cname
());
if (host_group == parent2hostgroup.end())
if (host_group == parent2hostgroup.end())
- parent2hostgroup.insert({parent->
name.c_str(), std::vector<const char*>(1,
host_name)});
+ parent2hostgroup.insert({parent->
get_cname(), std::vector<const char*>(1,
host_name)});
else
host_group->second.push_back(host_name);
}
else
host_group->second.push_back(host_name);
}