diff --git a/llvm/projects/hpvm-tensor-rt/autotuner/tuner_driver_src/knob_pruning.py b/llvm/projects/hpvm-tensor-rt/autotuner/tuner_driver_src/knob_pruning.py
index 94d445370d023f0227525549d5ff97d967f697b9..dfcab4f36bf425615debad880a0e2a828867d7ba 100644
--- a/llvm/projects/hpvm-tensor-rt/autotuner/tuner_driver_src/knob_pruning.py
+++ b/llvm/projects/hpvm-tensor-rt/autotuner/tuner_driver_src/knob_pruning.py
@@ -50,6 +50,11 @@ def getPrunedKnobs(binary_path, layer_file, global_knobs_file, \
           acc_loss = baseline_acc - accuracy
           if acc_loss <= acc_slack:
               pruned_layer_knobs.append(l_knob)
+              print ("\n + l_knob = ", l_knob, " - layer_ind = ", layer_ind)
+              print ("- acc_loss = ", acc_loss, " **** SELECTED *** ")
+          else:
+              print ("\n -- l_knob = ", l_knob, " - layer_ind = ", layer_ind)
+              print ("- acc_loss = ", acc_loss, " --- REJECTED --- ")
 
       pruned_knobs.append(pruned_layer_knobs)
           
@@ -65,8 +70,17 @@ def getPrunedKnobs(binary_path, layer_file, global_knobs_file, \
 if __name__ == "__main__":
 
     
-  pruned_knobs = getPrunedKnobs("alexnet2_promise",  "../autotuner/data/alexnet2/alexnet2_layers.txt", \
-                                "../autotuner/data/global_knobs.txt", 84.5, 3)
+  #pruned_knobs = getPrunedKnobs("alexnet2_promise",  "../autotuner/data/alexnet2/alexnet2_layers.txt", \
+  #                              "../autotuner/data/global_knobs.txt", 84.5, 3)
 
+  pruned_knobs = getPrunedKnobs("lenet_promise",  "../autotuner/data/lenet/lenet_layers.txt", \
+                                "../autotuner/data/global_knobs.txt", 99.7, 1)
+
+
+    
   print ("*** pruned_knobs = ", pruned_knobs)
   
+
+  utils.dumpKnobsFile(pruned_knobs, "install_knobs.txt")
+  
+  
diff --git a/llvm/projects/hpvm-tensor-rt/autotuner/tuner_driver_src/run_install_tuner.py b/llvm/projects/hpvm-tensor-rt/autotuner/tuner_driver_src/run_install_tuner.py
index 8813d6c6ae1e8d01636310a22a80d61f80c56458..6fe682eb4eb715ce3dd290ef77f20a06e5e18856 100644
--- a/llvm/projects/hpvm-tensor-rt/autotuner/tuner_driver_src/run_install_tuner.py
+++ b/llvm/projects/hpvm-tensor-rt/autotuner/tuner_driver_src/run_install_tuner.py
@@ -13,17 +13,19 @@ import buildRtConfig
 import genPlots
 from run_devtime_tuner import DevTimeTuner
 import validation
+import knob_pruning
 
 
 class InstallTimeTuner(DevTimeTuner):
 
   def __init__(self, Bench):
 
+    self.knob_pruning = True
     self.piped_execution = True
-    self.autotuner_runs = 10000
-    self.validation_runs = 30
+    self.autotuner_runs = 10000      #  Bench.autotuner_runs
+    self.validation_runs = 15
     self.abort_after = 3
-    self.conf_threshold = 95
+    self.conf_threshold = 100
 
     self.promise_binary = Bench.promise_binary
     
@@ -33,13 +35,30 @@ class InstallTimeTuner(DevTimeTuner):
       self.binary_path = Bench.promise_binary
 
     self.num_layers = Bench.num_layers
-    self.gold_accuracy = Bench.promise_accuracy
+    #self.gold_accuracy = Bench.promise_accuracy
+    self.setBaselineAccuracy()
+
+    
     self.cost_file = global_paths.tensorRT_dir + "/" + Bench.cost_file
     self.layer_file = global_paths.tensorRT_dir + "/" + Bench.layer_file
 
+    
     global_knobs_file = global_paths.tensorRT_dir + "/autotuner/data/global_knobs.txt"
     buildRtConfig.initializeApproxMap(global_knobs_file) # Initialize knobs - configfile gen
-    utils.createInstallAndDevKnobs(self.layer_file, global_knobs_file, "install_knobs.txt")
+
+
+    if self.knob_pruning == False:     
+      utils.createInstallAndDevKnobs(self.layer_file, global_knobs_file, "install_knobs.txt")
+
+    elif self.knob_pruning == True:
+       pruned_knobs = knob_pruning.getPrunedKnobs(self.promise_binary, self.layer_file, \
+                                     global_knobs_file, self.gold_accuracy, 3)
+       
+       print ("*** pruned_knobs = ", pruned_knobs)
+       utils.dumpKnobsFile(pruned_knobs, "install_knobs.txt")
+  
+ 
+    
     self.layer_knobs = "install_knobs.txt"
     
     self.result_dir = global_paths.tensorRT_dir + "/" + Bench.base_dir + \
@@ -62,7 +81,10 @@ class InstallTimeTuner(DevTimeTuner):
                                                                 accuracy_slack, self.validation_runs, \
                                                                 self.abort_after)
 
-      if confidence > self.conf_threshold:
+      print ("avg_acc, confidence = ", avg_acc, confidence)
+      
+      
+      if confidence >= self.conf_threshold:
         config.avg_accuracy = avg_acc
         filtered_configs.append(config)
 
@@ -73,9 +95,19 @@ class InstallTimeTuner(DevTimeTuner):
     
   def dumpValidatedConfigs(self, accuracy_slack):
 
+    #input_dir = self.result_dir + "/high_confidence/"
     input_dir = self.result_dir + "/high_confidence/"
-    
-    configurations = buildRtConfig.loadConfigsFromDir(input_dir, self.gold_accuracy)
+    output_dir = self.result_dir + "/pareto/"
+    utils.createDir(output_dir)
+
+    # Get Pareto Points with a "BAND" -- enable_band below is 'True'
+    configurations = pareto_utils.dumpParetoConfigsToDir(input_dir, \
+                                                         output_dir, self.gold_accuracy, True)   
+
+    print ("**** pareto config count = ", len(configurations), "\n")
+    time.sleep(10)
+           
+    #configurations = buildRtConfig.loadConfigsFromDir(input_dir, self.gold_accuracy)
     bench_layer_composition = utils.getLayerComposition(self.layer_file)
 
     
@@ -110,10 +142,15 @@ class InstallTimeTuner(DevTimeTuner):
 
     self.setBaselineAccuracy()
     
-    self.invokeDevTunerScript(0.8, 2.1, self.autotuner_runs)
-    self.invokeDevTunerScript(1.5, 2.1, self.autotuner_runs)
+    #self.invokeDevTunerScript(0.8, 2.1, self.autotuner_runs)
+    #self.invokeDevTunerScript(1.5, 2.1, self.autotuner_runs)
+    #self.invokeDevTunerScript(2.1, 2.1, self.autotuner_runs)
+    #self.invokeDevTunerScript(0.9, 2.1, self.autotuner_runs)
+
+    # NOTE: for purposes of comparison with fedtuning
     self.invokeDevTunerScript(2.1, 2.1, self.autotuner_runs)
-  
+
+    
     #--- self.dumpParetoFiles()
     self.dumpValidatedConfigs(2.1)
 
diff --git a/llvm/projects/hpvm-tensor-rt/autotuner/tuner_driver_src/utils.py b/llvm/projects/hpvm-tensor-rt/autotuner/tuner_driver_src/utils.py
index ece4f5161e979bcab731cb853ba5b89bf4175f78..9ff3622d13c1c0c65a21938d487d968efae428f0 100644
--- a/llvm/projects/hpvm-tensor-rt/autotuner/tuner_driver_src/utils.py
+++ b/llvm/projects/hpvm-tensor-rt/autotuner/tuner_driver_src/utils.py
@@ -219,6 +219,66 @@ def createInstallAndDevKnobs(layer_file, global_knobs_file, out_file):
   f_out.close()
   
 
+
+
+  
+def getInstallAndDevKnobs(layer_file, global_knobs_file):
+
+  f = open(layer_file, "r")
+
+  conv_knobs_dev = readConvKnobs(global_knobs_file, "dev")
+  fc_knobs_dev = readFCKnobs(global_knobs_file, "dev")
+  red_knobs_dev = readRedKnobs(global_knobs_file, "dev")
+
+  conv_knobs_install = readConvKnobs(global_knobs_file, "install")
+  fc_knobs_install = readFCKnobs(global_knobs_file, "install")
+  red_knobs_install = readRedKnobs(global_knobs_file, "install")
+
+  
+  conv_knobs = conv_knobs_dev + conv_knobs_install 
+  fc_knobs = fc_knobs_dev + fc_knobs_install 
+  red_knobs = red_knobs_dev + red_knobs_install 
+  
+  print (conv_knobs, fc_knobs, red_knobs)
+
+
+  bench_knobs = []
+  
+  ind = 0
+  for x in f:
+    if "conv" in x:
+      layer_conv_knobs = conv_knobs
+      if ind == 0:
+        layer_conv_knobs = removePromiseKnobs(conv_knobs)
+      bench_knobs.append(layer_conv_knobs)  
+    if "dense" in x:
+      bench_knobs.append(fc_knobs)    
+    if "red" in x:
+      bench_knobs.append(red_knobs)    
+
+    ind += 1
+
+
+  return bench_knobs
+  
+
+
+
+
+
+def dumpKnobsFile(knobs, out_file):
+
+
+  f_out = open(out_file, "w+")
+
+  for layer_knobs in knobs:
+      f_out.write(",".join(layer_knobs) + "\n")
+      
+  f_out.close()
+
+  
+
+
   
 
 
@@ -226,5 +286,11 @@ def createInstallAndDevKnobs(layer_file, global_knobs_file, out_file):
 if __name__ == "__main__":
 
 
-  createDevKnobs("../data/alexnet2/alexnet2_layers.txt", \
-                 "../data/global_knobs.txt", "dev_knobs.txt")
+  #createDevKnobs("../data/alexnet2/alexnet2_layers.txt", \
+  #               "../data/global_knobs.txt", "dev_knobs.txt")
+
+
+  knobs = getInstallAndDevKnobs("../data/alexnet2/alexnet2_layers.txt", \
+                                "../data/global_knobs.txt")
+
+  print ("*** knobs = ", knobs)