diff --git a/hpvm/projects/hpvm-tensor-rt/tensor_runtime/src/configuration.cpp b/hpvm/projects/hpvm-tensor-rt/tensor_runtime/src/configuration.cpp index 063112ab78641dc57f4d79259df837fa12177b42..54e9420e6cec35507feb46521263bae90229f621 100644 --- a/hpvm/projects/hpvm-tensor-rt/tensor_runtime/src/configuration.cpp +++ b/hpvm/projects/hpvm-tensor-rt/tensor_runtime/src/configuration.cpp @@ -9,6 +9,8 @@ //===----------------------------------------------------------------------===// #include "configuration.h" +#include <algorithm> +#include <string> using G_APPROX = GPUNodeConfiguration::APPROX; using C_APPROX = CPUNodeConfiguration::APPROX; @@ -263,18 +265,45 @@ void CPUNodeConfiguration::print() { printf("\n"); } + +struct NodeConfigID{ + + int hpvm_id; + NodeConfiguration* node_config; + + bool operator < (const NodeConfigID& obj) const + { + return (hpvm_id < obj.hpvm_id); + } +}; + + + void Configuration::print() { - printf("+++++\n"); - printf("%s %f %f %f %f\n", name.c_str(), speedup, energy, accuracy, - accuracyLoss); + std::vector<NodeConfigID> config_vector; for (std::map<std::string, NodeConfiguration *>::const_iterator it = - setup.begin(); + setup.begin(); it != setup.end(); ++it) { - printf("%s :", it->first.c_str()); - it->second->print(); + NodeConfigID node; + node.hpvm_id = std::stoi(it->first); + node.node_config = it->second; + config_vector.push_back(node); } + + std::sort(config_vector.begin(), config_vector.end()); + + printf("+++++\n"); + printf("%s %f %f %f %f\n", name.c_str(), speedup, energy, accuracy, + accuracyLoss); + for (unsigned int i = 0; i < config_vector.size(); i++){ + NodeConfigID conf = config_vector[i]; + printf(" %d : ", conf.hpvm_id); + conf.node_config->print(); + } printf("-----\n"); + } +