From d2d71858a87fe42d11f988d17b09d437a0c7e2c2 Mon Sep 17 00:00:00 2001
From: Hashim Sharif <hsharif3@tyler.cs.illinois.edu>
Date: Mon, 20 Apr 2020 00:06:25 -0500
Subject: [PATCH] Adding rules for building install-time binaries using FP16
 routine

---
 llvm/projects/hpvm-tensor-rt/CMakeLists.txt | 126 +++++++++++++++-----
 1 file changed, 98 insertions(+), 28 deletions(-)

diff --git a/llvm/projects/hpvm-tensor-rt/CMakeLists.txt b/llvm/projects/hpvm-tensor-rt/CMakeLists.txt
index 4150d533f8..2434e773b0 100644
--- a/llvm/projects/hpvm-tensor-rt/CMakeLists.txt
+++ b/llvm/projects/hpvm-tensor-rt/CMakeLists.txt
@@ -1,11 +1,6 @@
 cmake_minimum_required (VERSION 2.6)
 project (hpvm-tensor-rt)
 
-#set(CMAKE_C_COMPILER  gcc)
-#set(CMAKE_CXX_COMPILER g++)
-#if (CMAKE_COMPILER_IS_GNUCC AND CMAKE_COMPILER_VERSION VERSION_LESS 7.2)
-#  message(FATAL_ERROR "Build Requires atleast gcc-7.2")
-#endif()
 
 
 SET(CUDA_SEPARABLE_COMPILATION ON)
@@ -97,15 +92,24 @@ if(USE_GFLAGS)
   list(APPEND LINK_LIBS gflags)
 endif()
 
+
 # Adding new rule for building a cuDNN runtime library
 # Offline version
 cuda_add_library(tensor_runtime ${RUNTIME_SRCS})
 cuda_add_cublas_to_target(tensor_runtime)
 target_link_libraries(tensor_runtime ${LINK_LIBS})
 
+
+cuda_add_library(tensor_runtime_install ${RUNTIME_SRCS})
+cuda_add_cublas_to_target(tensor_runtime_install)
+target_link_libraries(tensor_runtime_install ${LINK_LIBS})
+
+
 # Online version
 remove_definitions(-DONLINE_PROFILING=false)
 add_definitions(-DONLINE_PROFILING=true)
+remove_definitions(-DFP16_tuning=true)
+add_definitions(-DFP16_tuning=false)
 cuda_add_library(tensor_runtime_online ${RUNTIME_SRCS})
 cuda_add_cublas_to_target(tensor_runtime_online)
 target_link_libraries(tensor_runtime_online  ${LINK_LIBS}) 
@@ -132,6 +136,7 @@ target_link_libraries(test_ops  tensor_runtime ${GPU_PROFILER_LIB} ${SOC_SIMULAT
 #-- target_link_libraries(mio_test  tensor_runtime ${GPU_PROFILER_LIB} ${SOC_SIMULATOR_LIB})
 
 
+
 add_executable(lenet_keras  dnn_sources/src/lenet_keras.cc)
 target_link_libraries(lenet_keras  tensor_runtime ${GPU_PROFILER_LIB} ${SOC_SIMULATOR_LIB})
 
@@ -197,16 +202,11 @@ target_link_libraries(resnet_imagenet  tensor_runtime_online  ${GPU_PROFILER_LIB
 
 
 
-
 #********* Promise API sources
 add_executable(lenet_promise  dnn_sources/src/promise/lenet_promise.cc)
 target_link_libraries(lenet_promise  tensor_runtime_online  ${GPU_PROFILER_LIB} ${SOC_SIMULATOR_LIB})
 
-#add_executable(lenet_quantize_promise  dnn_sources/src/promise/lenet_quantize_promise.cc)
-#target_link_libraries(lenet_quantize_promise  tensor_runtime_online  ${GPU_PROFILER_LIB} ${SOC_SIMULATOR_LIB})
-
 
-# Quantized PROMISE sources
 add_executable(alexnet_promise  dnn_sources/src/promise/alexnet_promise.cc)
 target_link_libraries(alexnet_promise  tensor_runtime_online  ${GPU_PROFILER_LIB} ${SOC_SIMULATOR_LIB})
 
@@ -239,13 +239,50 @@ target_link_libraries(resnet50_imagenet_promise  tensor_runtime_online  ${GPU_PR
 
 
 
+
+
 # testing binaries
 
 #-- add_executable(alexnet2_sampsim  dnn_sources/src/alexnet2_sampsim.cc)
 #-- target_link_libraries(alexnet2_sampsim  tensor_runtime ${GPU_PROFILER_LIB} ${SOC_SIMULATOR_LIB})
 
-add_executable(alexnet2_approxhalf  dnn_sources/src/alexnet2_approxhalf.cc)
-target_link_libraries(alexnet2_approxhalf  tensor_runtime ${GPU_PROFILER_LIB} ${SOC_SIMULATOR_LIB})
+#add_executable(alexnet2_approxhalf  dnn_sources/src/alexnet2_approxhalf.cc)
+#target_link_libraries(alexnet2_approxhalf  tensor_runtime ${GPU_PROFILER_LIB} ${SOC_SIMULATOR_LIB})
+
+
+
+#********* Promise API sources
+add_executable(lenet_promise_install  dnn_sources/src/promise/lenet_promise.cc)
+target_link_libraries(lenet_promise_install  tensor_runtime_install  ${GPU_PROFILER_LIB} ${SOC_SIMULATOR_LIB})
+
+
+add_executable(alexnet_promise_install  dnn_sources/src/promise/alexnet_promise.cc)
+target_link_libraries(alexnet_promise_install  tensor_runtime_install  ${GPU_PROFILER_LIB} ${SOC_SIMULATOR_LIB})
+
+add_executable(alexnet2_promise_install  dnn_sources/src/promise/alexnet2_promise.cc)
+target_link_libraries(alexnet2_promise_install  tensor_runtime_install  ${GPU_PROFILER_LIB} ${SOC_SIMULATOR_LIB})
+
+add_executable(resnet18_promise_install  dnn_sources/src/promise/resnet18_promise.cc)
+target_link_libraries(resnet18_promise_install  tensor_runtime_install  ${GPU_PROFILER_LIB} ${SOC_SIMULATOR_LIB})
+
+add_executable(vgg16_cifar100_promise_install  dnn_sources/src/promise/vgg16_cifar100_promise.cc)
+target_link_libraries(vgg16_cifar100_promise_install  tensor_runtime_install   ${GPU_PROFILER_LIB} ${SOC_SIMULATOR_LIB})
+
+add_executable(vgg16_cifar10_promise_install  dnn_sources/src/promise/vgg16_cifar10_promise.cc)
+target_link_libraries(vgg16_cifar10_promise_install  tensor_runtime_install   ${GPU_PROFILER_LIB} ${SOC_SIMULATOR_LIB})
+
+add_executable(mobilenet_promise_install  dnn_sources/src/promise/mobilenet_promise.cc)
+target_link_libraries(mobilenet_promise_install  tensor_runtime_install   ${GPU_PROFILER_LIB} ${SOC_SIMULATOR_LIB})
+
+add_executable(mobilenet_shallow_promise_install  dnn_sources/src/promise/mobilenet_shallow_promise.cc)
+target_link_libraries(mobilenet_shallow_promise_install  tensor_runtime_install  ${GPU_PROFILER_LIB} ${SOC_SIMULATOR_LIB})
+
+add_executable(vgg16_imagenet_promise_install  dnn_sources/src/promise/vgg16_imagenet_promise.cc)
+target_link_libraries(vgg16_imagenet_promise_install  tensor_runtime_install  ${GPU_PROFILER_LIB} ${SOC_SIMULATOR_LIB})
+
+add_executable(resnet50_imagenet_promise_install  dnn_sources/src/promise/resnet50_imagenet_promise.cc)
+target_link_libraries(resnet50_imagenet_promise_install  tensor_runtime_install  ${GPU_PROFILER_LIB} ${SOC_SIMULATOR_LIB})
+
 
 
 
@@ -254,29 +291,29 @@ target_link_libraries(alexnet2_approxhalf  tensor_runtime ${GPU_PROFILER_LIB} ${
 #********* Half Precision Sources ****** 
 
 
-add_executable(lenet_half   dnn_sources/src/half/lenet_keras_half.cc)
-target_link_libraries(lenet_half  tensor_runtime_online ${GPU_PROFILER_LIB} ${SOC_SIMULATOR_LIB})
+#--- add_executable(lenet_half   dnn_sources/src/half/lenet_keras_half.cc)
+#--- target_link_libraries(lenet_half  tensor_runtime_online ${GPU_PROFILER_LIB} ${SOC_SIMULATOR_LIB})
 
-add_executable(alexnet_half   dnn_sources/src/half/alexnet_cifar10_half.cc)
-target_link_libraries(alexnet_half  tensor_runtime_online ${GPU_PROFILER_LIB} ${SOC_SIMULATOR_LIB})
+#--- add_executable(alexnet_half   dnn_sources/src/half/alexnet_cifar10_half.cc)
+#--- target_link_libraries(alexnet_half  tensor_runtime_online ${GPU_PROFILER_LIB} ${SOC_SIMULATOR_LIB})
 
-add_executable(alexnet2_half  dnn_sources/src/half/alexnet2_cifar10_half.cc)
-target_link_libraries(alexnet2_half  tensor_runtime_online ${GPU_PROFILER_LIB} ${SOC_SIMULATOR_LIB})
+#--- add_executable(alexnet2_half  dnn_sources/src/half/alexnet2_cifar10_half.cc)
+#--- target_link_libraries(alexnet2_half  tensor_runtime_online ${GPU_PROFILER_LIB} ${SOC_SIMULATOR_LIB})
 
-add_executable(resnet18_half  dnn_sources/src/half/resnet18_cifar10_half.cc)
-target_link_libraries(resnet18_half  tensor_runtime_online ${GPU_PROFILER_LIB} ${SOC_SIMULATOR_LIB})
+#--- add_executable(resnet18_half  dnn_sources/src/half/resnet18_cifar10_half.cc)
+#--- target_link_libraries(resnet18_half  tensor_runtime_online ${GPU_PROFILER_LIB} ${SOC_SIMULATOR_LIB})
 
-add_executable(vgg16_cifar10_half  dnn_sources/src/half/vgg16_cifar10_half.cc)
-target_link_libraries(vgg16_cifar10_half  tensor_runtime_online  ${GPU_PROFILER_LIB} ${SOC_SIMULATOR_LIB})
+#--- add_executable(vgg16_cifar10_half  dnn_sources/src/half/vgg16_cifar10_half.cc)
+#--- target_link_libraries(vgg16_cifar10_half  tensor_runtime_online  ${GPU_PROFILER_LIB} ${SOC_SIMULATOR_LIB})
 
-add_executable(vgg16_cifar100_half  dnn_sources/src/half/vgg16_cifar100_half.cc)
-target_link_libraries(vgg16_cifar100_half  tensor_runtime_online  ${GPU_PROFILER_LIB} ${SOC_SIMULATOR_LIB})
+#--- add_executable(vgg16_cifar100_half  dnn_sources/src/half/vgg16_cifar100_half.cc)
+#--- target_link_libraries(vgg16_cifar100_half  tensor_runtime_online  ${GPU_PROFILER_LIB} ${SOC_SIMULATOR_LIB})
 
-add_executable(mobilenet_half  dnn_sources/src/half/mobilenet_depthwise_half.cc)
-target_link_libraries(mobilenet_half  tensor_runtime_online  ${GPU_PROFILER_LIB} ${SOC_SIMULATOR_LIB})
+#--- add_executable(mobilenet_half  dnn_sources/src/half/mobilenet_depthwise_half.cc)
+#--- target_link_libraries(mobilenet_half  tensor_runtime_online  ${GPU_PROFILER_LIB} ${SOC_SIMULATOR_LIB})
 
-add_executable(mobilenet_shallow_half  dnn_sources/src/half/mobilenet_shallow_depthwise_half.cc)
-target_link_libraries(mobilenet_shallow_half   tensor_runtime_online  ${GPU_PROFILER_LIB} ${SOC_SIMULATOR_LIB})
+#--- add_executable(mobilenet_shallow_half  dnn_sources/src/half/mobilenet_shallow_depthwise_half.cc)
+#--- target_link_libraries(mobilenet_shallow_half   tensor_runtime_online  ${GPU_PROFILER_LIB} ${SOC_SIMULATOR_LIB})
 
 
 
@@ -314,6 +351,39 @@ target_link_libraries(resnet50_imagenet_piped  tensor_runtime_online  ${GPU_PROF
 
 
 
+# OpenTuner Piped Sources - FP16 supported version --- used for install-time tuning
+add_executable(alexnet_piped_install  dnn_sources/src/promise/alexnet_piped.cc)
+target_link_libraries(alexnet_piped_install tensor_runtime_install  ${GPU_PROFILER_LIB} ${SOC_SIMULATOR_LIB})
+
+add_executable(alexnet2_piped_install  dnn_sources/src/promise/alexnet2_piped.cc)
+target_link_libraries(alexnet2_piped_install  tensor_runtime_install  ${GPU_PROFILER_LIB} ${SOC_SIMULATOR_LIB})
+
+add_executable(lenet_piped_install  dnn_sources/src/promise/lenet_piped.cc)
+target_link_libraries(lenet_piped_install  tensor_runtime_install  ${GPU_PROFILER_LIB} ${SOC_SIMULATOR_LIB})
+
+add_executable(resnet18_piped_install  dnn_sources/src/promise/resnet18_piped.cc)
+target_link_libraries(resnet18_piped_install tensor_runtime_install  ${GPU_PROFILER_LIB} ${SOC_SIMULATOR_LIB})
+
+add_executable(vgg16_cifar10_piped_install  dnn_sources/src/promise/vgg16_cifar10_piped.cc)
+target_link_libraries(vgg16_cifar10_piped_install  tensor_runtime_install  ${GPU_PROFILER_LIB} ${SOC_SIMULATOR_LIB})
+
+add_executable(vgg16_cifar100_piped_install  dnn_sources/src/promise/vgg16_cifar100_piped.cc)
+target_link_libraries(vgg16_cifar100_piped_install  tensor_runtime_install  ${GPU_PROFILER_LIB} ${SOC_SIMULATOR_LIB})
+
+add_executable(mobilenet_piped_install  dnn_sources/src/promise/mobilenet_piped.cc)
+target_link_libraries(mobilenet_piped_install  tensor_runtime_install  ${GPU_PROFILER_LIB} ${SOC_SIMULATOR_LIB})
+
+add_executable(mobilenet_shallow_piped_install  dnn_sources/src/promise/mobilenet_shallow_piped.cc)
+target_link_libraries(mobilenet_shallow_piped_install  tensor_runtime_install  ${GPU_PROFILER_LIB} ${SOC_SIMULATOR_LIB})
+
+add_executable(vgg16_imagenet_piped_install  dnn_sources/src/promise/vgg16_imagenet_piped.cc)
+target_link_libraries(vgg16_imagenet_piped_install  tensor_runtime_install  ${GPU_PROFILER_LIB} ${SOC_SIMULATOR_LIB})
+
+add_executable(resnet50_imagenet_piped_install  dnn_sources/src/promise/resnet50_imagenet_piped.cc)
+target_link_libraries(resnet50_imagenet_piped_install  tensor_runtime_install  ${GPU_PROFILER_LIB} ${SOC_SIMULATOR_LIB})
+
+
+
 
 ## Image processing benchmarks
 add_executable(canny_25 dnn_sources/src/promise/canny_25.cpp)
-- 
GitLab