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");
+  
 }
+