From fbf0084f5fd0c37f35083b9715e3e5148edf2c4d Mon Sep 17 00:00:00 2001
From: Yifan Zhao <yifanz16@illinois.edu>
Date: Tue, 22 Dec 2020 05:39:57 -0600
Subject: [PATCH] Deprecates manually-set LLVM_SRC_ROOT in tensor_runtime

---
 hpvm/projects/hpvm-tensor-rt/CMakeLists.txt   | 28 ++++++++++---
 .../tensor_runtime/include/config.h.in        |  1 +
 .../tensor_runtime/src/approx_knobs_utils.cc  | 39 +++----------------
 3 files changed, 28 insertions(+), 40 deletions(-)
 create mode 100644 hpvm/projects/hpvm-tensor-rt/tensor_runtime/include/config.h.in

diff --git a/hpvm/projects/hpvm-tensor-rt/CMakeLists.txt b/hpvm/projects/hpvm-tensor-rt/CMakeLists.txt
index 489d38313b..2b41397dfe 100644
--- a/hpvm/projects/hpvm-tensor-rt/CMakeLists.txt
+++ b/hpvm/projects/hpvm-tensor-rt/CMakeLists.txt
@@ -32,13 +32,29 @@ add_definitions(-DNO_INJECTION)
 add_definitions(-DPROMISE_TUNER_ENABLED)
 add_definitions(-DSIMULATION_MODE=true)
 
+# Config path configuration file
+if(NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/global_knobs.txt)
+  message(FATAL_ERROR "global_knobs.txt not found")
+endif()
+# GLOBAL_KNOBS_FILE is used in a string in C,
+# so whatever you do, please don't have quotation mark (") in your filename.
+get_filename_component(GLOBAL_KNOBS_FILE ${CMAKE_CURRENT_SOURCE_DIR}/global_knobs.txt REALPATH)
+configure_file(
+  tensor_runtime/include/config.h.in
+  ${CMAKE_CURRENT_BINARY_DIR}/tensor_runtime/include/config.h
+)
+
 # Default include/link directories
-include_directories($ENV{CUDNN_PATH} $ENV{CUDNN_PATH}/include)
-include_directories(./tensor_runtime/include)
-include_directories(./dnn_sources/include)
-include_directories(../gpu_profiler/include)
-include_directories(../soc_simulator/include)
-link_directories(${CUDA_TOOLKIT_ROOT_DIR}/lib64 $ENV{CUDNN_PATH} $ENV{CUDNN_PATH}/lib $ENV{CUDNN_PATH}/lib64)
+include_directories(
+  $ENV{CUDNN_PATH} $ENV{CUDNN_PATH}/include
+  ./tensor_runtime/include ${CMAKE_CURRENT_BINARY_DIR}/tensor_runtime/include
+  ./dnn_sources/include
+  ../gpu_profiler/include ../soc_simulator/include
+)
+link_directories(
+  ${CUDA_TOOLKIT_ROOT_DIR}/lib64 $ENV{CUDNN_PATH}
+  $ENV{CUDNN_PATH}/lib $ENV{CUDNN_PATH}/lib64
+)
 
 # Source files of runtime
 set(
diff --git a/hpvm/projects/hpvm-tensor-rt/tensor_runtime/include/config.h.in b/hpvm/projects/hpvm-tensor-rt/tensor_runtime/include/config.h.in
new file mode 100644
index 0000000000..27606bcf7e
--- /dev/null
+++ b/hpvm/projects/hpvm-tensor-rt/tensor_runtime/include/config.h.in
@@ -0,0 +1 @@
+#define GLOBAL_KNOBS_FILE "@GLOBAL_KNOBS_FILE@"
diff --git a/hpvm/projects/hpvm-tensor-rt/tensor_runtime/src/approx_knobs_utils.cc b/hpvm/projects/hpvm-tensor-rt/tensor_runtime/src/approx_knobs_utils.cc
index 9d7cb4976f..c5d79020ac 100644
--- a/hpvm/projects/hpvm-tensor-rt/tensor_runtime/src/approx_knobs_utils.cc
+++ b/hpvm/projects/hpvm-tensor-rt/tensor_runtime/src/approx_knobs_utils.cc
@@ -8,6 +8,7 @@
 
 #include "approx_knob_utils.h"
 #include "debug.h"
+#include "config.h"
 
 PerfParams::PerfParams() {
   row = 1;
@@ -22,23 +23,8 @@ PerfParams::PerfParams(int row1, int col1, int skip_offset1) {
 }
 
 PerfParamSet::PerfParamSet() {
-
-  char llvm_src_root[100];
-  char *env_str = getenv("LLVM_SRC_ROOT");
-
-  if (env_str == NULL) {
-    ERROR("ERROR: SET LLVM_SRC_ROOT \n");
-  }
-
-  strcpy(llvm_src_root, env_str);
-  printf("*LLVM_SRC_ROOT = %s", llvm_src_root);
-
-  char *knobs_file_path =
-      strcat(llvm_src_root,
-             "/projects/hpvm-tensor-rt/autotuner/data/global_knobs.txt");
-  printf("- knobs_file_path = %s \n", knobs_file_path);
-
-  std::ifstream file(knobs_file_path);
+  printf("- knobs_file_path = %s \n", GLOBAL_KNOBS_FILE);
+  std::ifstream file(GLOBAL_KNOBS_FILE);
 
   std::string line;
   std::string partial;
@@ -106,23 +92,8 @@ SampParams::SampParams(int skip_rate1, int skip_offset1,
 }
 
 SampParamSet::SampParamSet() {
-
-  char llvm_src_root[100];
-  char *env_str = getenv("LLVM_SRC_ROOT");
-
-  if (env_str == NULL) {
-    ERROR("ERROR: SET LLVM_SRC_ROOT \n");
-  }
-
-  strcpy(llvm_src_root, env_str);
-  printf("* LLVM_SRC_ROOT = %s \n", llvm_src_root);
-
-  char *knobs_file_path =
-      strcat(llvm_src_root,
-             "/projects/hpvm-tensor-rt/autotuner/data/global_knobs.txt");
-  printf("- knobs_file_path = %s \n", knobs_file_path);
-
-  std::ifstream file(knobs_file_path);
+  printf("- knobs_file_path = %s \n", GLOBAL_KNOBS_FILE);
+  std::ifstream file(GLOBAL_KNOBS_FILE);
 
   std::string line;
   std::string partial;
-- 
GitLab