diff --git a/hpvm/test/dnn_benchmarks/benchmarks/run_dnn_pred.py b/hpvm/test/dnn_benchmarks/benchmarks/run_dnn_pred.py
new file mode 100644
index 0000000000000000000000000000000000000000..0ee963173781251d25f44d4f766a9498c506460d
--- /dev/null
+++ b/hpvm/test/dnn_benchmarks/benchmarks/run_dnn_pred.py
@@ -0,0 +1,125 @@
+import os.path
+from os import path
+import sys
+
+temp_file_name = "temp.txt"
+pred_binary_suffix = "_pred_loop_wrapperapi_linked" 
+
+rt_binary_suffix = "_loop_wrapperapi_linked"
+max_num_runs = 20
+
+
+def max_num_configs (config_file):
+    num_configs = 0
+    with open(config_file, "r") as f:
+    	for line in f:
+    		if "conf" in line:
+    			num_configs = num_configs + 1
+    return (num_configs + 1)
+
+
+def read_and_write_config (config_file, config_num, temp_file):
+    config = ""
+    with open(config_file, "r") as f:
+    	conf = "conf" + str(config_num)
+    	read_config = False
+    	read_first_line = False
+    	for line in f:
+    		if read_first_line == False:
+    			config = config + line
+    			read_first_line = True
+    			continue
+    		if "-----" in line and read_config == True:
+    			read_config = False
+    			config = config + line
+    			break
+    		if read_config == True:
+                        config = config + line
+                        continue
+    		if conf in line:
+    			read_config = True
+    			config = config + "+++++\n"
+    			config = config + line
+    print("config: ")
+    print(config)
+    with open(temp_file, "w") as f:
+    	f.write(config)
+
+
+def predictive_tuning_exec():
+    num_args = len(sys.argv)
+    binary_files = list()
+    bench_dir = sys.argv[2]
+    print(bench_dir)
+    arg = 3
+    while arg < num_args:
+    	binary_files.append(sys.argv[arg])
+    	arg = arg + 1
+
+    for dnn_name in binary_files:
+    	binary_dir = bench_dir + "/" + dnn_name
+    	binary_name = binary_dir + pred_binary_suffix
+    	pred_dir = binary_dir + "/predictive"
+    	config_file = pred_dir + "/" + dnn_name + ".txt"
+    	temp_file = pred_dir + "/" + temp_file_name
+    	print("binary_dir: " + binary_dir)
+    	print("binary name: " + binary_name)
+    	print("pred_dir: " + pred_dir)
+    	print("config_file: " + config_file)
+    	print("temp_file: " + temp_file)
+    	config_num = 1
+    	max_configs = max_num_configs(config_file)
+    	while config_num < max_configs:
+    		read_and_write_config(config_file, config_num, temp_file)
+    		exec_command = binary_name
+    		print(exec_command) 
+    		os.system(exec_command)
+    		config_num = config_num + 1
+
+
+def runtime_tuning_exec():
+    num_args = len(sys.argv)
+    binary_files = list()
+    bench_dir = sys.argv[2]
+    print(bench_dir)
+    arg = 3
+    while arg < num_args:
+        binary_files.append(sys.argv[arg])
+        arg = arg + 1
+
+    for dnn_name in binary_files:
+    	binary_dir = bench_dir + "/" + dnn_name
+    	binary_name = binary_dir + rt_binary_suffix
+    	conf_dir = binary_dir + "/data"
+    	print("binary_dir: " + binary_dir)
+    	print("binary name: " + binary_name)
+    	run = 0
+    	while run < max_num_runs:
+    		exec_command = binary_name
+    		print(exec_command)
+    		os.system(exec_command)
+    		exec_command = "/home/nvidia/poll 13"
+    		print(exec_command)
+    		os.system(exec_command)
+    		exec_command = "mv " + conf_dir + "/profile_info_0.txt " + conf_dir + "/profile_info_out-run-" + str(run) + ".txt"
+    		print(exec_command)
+    		os.system(exec_command)
+    		run = run + 1
+    	exec_command = "rm -rf " + conf_dir +  "/run_data"
+    	print(exec_command)
+    	os.system(exec_command)
+    	exec_command = "mkdir " + conf_dir + "/run_data"  
+    	print(exec_command)
+    	os.system(exec_command)  
+    		
+
+
+if __name__ == "__main__":
+    if sys.argv[1] == "--runtime_tuning":
+    	runtime_tuning_exec()
+    elif sys.argv[1] == "--predictive_tuning":
+    	predictive_tuning_exec()
+    else:
+    	print("Error: Use --runtime_tuning or --predictive_tuning flags!")
+    	sys.exit()
+
diff --git a/hpvm/test/dnn_benchmarks/benchmarks/run_dnns_pred.py b/hpvm/test/dnn_benchmarks/benchmarks/run_dnns_pred.py
new file mode 100644
index 0000000000000000000000000000000000000000..f401b670b2bd8e8f3b0db09e9042d2c70d09c229
--- /dev/null
+++ b/hpvm/test/dnn_benchmarks/benchmarks/run_dnns_pred.py
@@ -0,0 +1,20 @@
+import os
+import sys
+
+#dnns = "alexnet alexnet2 vgg16_cifar10 vgg16_cifar100 resnet18 mobilenet lenet_mnist"
+dnns = "alexnet"
+
+cur_dir = "/home/akashk4/merge/profiling/approxhpvm/temp/hpvm/llvm/test/VISC/DNN_Benchmarks/benchmarks"
+
+if sys.argv[1] == "--runtime_tuning":
+	exec_command = "python3 run_dnn_pred.py" + " --runtime_tuning  "  + cur_dir  +  " " + dnns
+	print(exec_command)
+	os.system(exec_command)
+elif sys.argv[1] == "--predictive_tuning":
+	exec_command = "python3 run_dnn_pred.py" + " --predictive_tuning  " + cur_dir  +  " " + dnns 
+	print(exec_command)
+	os.system(exec_command)
+else:
+	print("Error: Use --runtime_tuning or --predictive_tuning flags!")
+	sys.exit()
+