xbt_assert(argc == 2, "Usage: %s platform_file\n\tExample: %s msg_platform.xml\n", argv[0], argv[0]);
e.loadPlatform(argv[1]); /* - Load the platform description */
- std::vector<simgrid::s4u::Host*> list;
- e.getHostList(&list);
+ std::vector<simgrid::s4u::Host*> list = e.getHostList();
simgrid::s4u::Actor::createActor("dream_master", list.front(), dream_master);
e.run(); /* - Run the simulation */
HostBittorrent::EXTENSION_ID = simgrid::s4u::Host::extension_create<HostBittorrent>();
- std::vector<simgrid::s4u::Host*> list;
- simgrid::s4u::Engine::getInstance()->getHostList(&list);
+ std::vector<simgrid::s4u::Host*> list = simgrid::s4u::Engine::getInstance()->getHostList();
for (auto const& host : list)
host->extension_set(new HostBittorrent(host));
XBT_INFO("Number of hosts '%zu'", e.getHostCount());
int id = 0;
- std::vector<simgrid::s4u::Host*> list;
- e.getHostList(&list);
+ std::vector<simgrid::s4u::Host*> list = e.getHostList();
for (auto const& host : list) {
/* - Give a unique rank to each host and create a @ref relay_runner process on each */
simgrid::s4u::Actor::createActor((std::to_string(id)).c_str(), host, RelayRunner());
HostChord::EXTENSION_ID = simgrid::s4u::Host::extension_create<HostChord>();
- std::vector<simgrid::s4u::Host*> list;
- simgrid::s4u::Engine::getInstance()->getHostList(&list);
+ std::vector<simgrid::s4u::Host*> list = simgrid::s4u::Engine::getInstance()->getHostList();
for (auto const& host : list)
host->extension_set(new HostChord(host));
}
static void runner()
{
/* Retrieve the list of all hosts as an array of hosts */
- std::vector<simgrid::s4u::Host*> hosts;
- simgrid::s4u::Engine::getInstance()->getHostList(&hosts);
+ std::vector<simgrid::s4u::Host*> hosts = simgrid::s4u::Engine::getInstance()->getHostList();
int hosts_count = hosts.size();
XBT_INFO("First, build a classical parallel task, with 1 Gflop to execute on each node, "
size_t totalHosts = sg_host_count();
XBT_INFO("There are %zu hosts in the environment", totalHosts);
- std::vector<simgrid::s4u::Host*> hosts;
- e.getHostList(&hosts);
+ std::vector<simgrid::s4u::Host*> hosts = e.getHostList();
for (unsigned int i = 0; i < hosts.size(); i++)
XBT_INFO("Host '%s' runs at %.0f flops/s", hosts[i]->getCname(), hosts[i]->getSpeed());
simgrid::s4u::Host* hostByNameOrNull(std::string name);
size_t getHostCount();
void getHostList(std::vector<Host*> * whereTo);
+ std::vector<Host*> getHostList();
size_t getLinkCount();
void getLinkList(std::vector<Link*> * list);
for (auto const& kv : pimpl->hosts_)
list->push_back(kv.second);
}
+/** @brief Returns the list of all hosts found in the platform */
+std::vector<Host*> Engine::getHostList()
+{
+ std::vector<Host*> res;
+ for (auto const& kv : pimpl->hosts_)
+ res.push_back(kv.second);
+ return res;
+}
void Engine::addHost(std::string name, simgrid::s4u::Host* host)
{
pimpl->hosts_[name] = host;
if(schedule){
if (schedule_success) {
- std::vector<simgrid::s4u::Host*> hosts;
- simgrid::s4u::Engine::getInstance()->getHostList(&hosts);
+ std::vector<simgrid::s4u::Host*> hosts = simgrid::s4u::Engine::getInstance()->getHostList();
for (auto const& elm : computers) {
SD_task_t previous_task = nullptr;
*/
sg_host_t *sg_host_list() {
xbt_assert(sg_host_count() > 0, "There is no host!");
- std::vector<simgrid::s4u::Host*> hosts;
- simgrid::s4u::Engine::getInstance()->getHostList(&hosts);
+ std::vector<simgrid::s4u::Host*> hosts = simgrid::s4u::Engine::getInstance()->getHostList();
sg_host_t* res = (sg_host_t*)malloc(sizeof(sg_host_t) * hosts.size());
memcpy(res, hosts.data(), sizeof(sg_host_t) * hosts.size());
{
xbt_dynar_t res = xbt_dynar_new(sizeof(sg_host_t),nullptr);
- std::vector<simgrid::s4u::Host*> list;
- simgrid::s4u::Engine::getInstance()->getHostList(&list);
+ std::vector<simgrid::s4u::Host*> list = simgrid::s4u::Engine::getInstance()->getHostList();
for (auto const& host : list) {
if (host && host->pimpl_netpoint && host->pimpl_netpoint->isHost())
static int already_called = 0;
if (not already_called) {
already_called = 1;
- std::vector<simgrid::s4u::Host*> list;
- simgrid::s4u::Engine::getInstance()->getHostList(&list);
+ std::vector<simgrid::s4u::Host*> list = simgrid::s4u::Engine::getInstance()->getHostList();
for (auto const& host : list) {
host->extension_set(new simgrid::smpi::SmpiHost(host));
}
static void onSimulationEnd()
{
- std::vector<simgrid::s4u::Host*> hosts;
- simgrid::s4u::Engine::getInstance()->getHostList(&hosts);
+ std::vector<simgrid::s4u::Host*> hosts = simgrid::s4u::Engine::getInstance()->getHostList();
double total_energy = 0.0; // Total energy consumption (whole platform)
double used_hosts_energy = 0.0; // Energy consumed by hosts that computed something
void sg_host_energy_update_all()
{
simgrid::simix::kernelImmediate([]() {
- std::vector<simgrid::s4u::Host*> list;
- simgrid::s4u::Engine::getInstance()->getHostList(&list);
+ std::vector<simgrid::s4u::Host*> list = simgrid::s4u::Engine::getInstance()->getHostList();
for (auto const& host : list)
if (dynamic_cast<simgrid::s4u::VirtualMachine*>(host) == nullptr) // Ignore virtual machines
host->extension<HostEnergy>()->update();
std::string msg = std::string("Cannot create actor '") + actor->function + "': host '" + actor->host +
"' does not exist\nExisting hosts: '";
- std::vector<simgrid::s4u::Host*> list;
- simgrid::s4u::Engine::getInstance()->getHostList(&list);
+ std::vector<simgrid::s4u::Host*> list = simgrid::s4u::Engine::getInstance()->getHostList();
for (auto const& host : list) {
msg += host->getName();
}
xbt_assert(argSend.front().size() == argRecv.front().size(), "Sender and receiver spec must be of the same size");
- std::vector<simgrid::s4u::Host*> hosts;
- e.getHostList(&hosts);
+ std::vector<simgrid::s4u::Host*> hosts = e.getHostList();
simgrid::s4u::Actor::createActor("sender", hosts[0], sender, argSend);
simgrid::s4u::Actor::createActor("recver", hosts[1], receiver, argRecv);