From 6a828121f549eef62257768b4f1f01735b4bef18 Mon Sep 17 00:00:00 2001
From: Yifan Zhao <yifanz16@illinois.edu>
Date: Wed, 27 Jan 2021 04:28:38 -0600
Subject: [PATCH] Added cmake targets to run benchmarks

---
 hpvm/test/dnn_benchmarks/CMakeLists.txt | 18 +++++++++++++++---
 1 file changed, 15 insertions(+), 3 deletions(-)

diff --git a/hpvm/test/dnn_benchmarks/CMakeLists.txt b/hpvm/test/dnn_benchmarks/CMakeLists.txt
index 887b2d1e6c..53ffc5ba35 100644
--- a/hpvm/test/dnn_benchmarks/CMakeLists.txt
+++ b/hpvm/test/dnn_benchmarks/CMakeLists.txt
@@ -40,10 +40,10 @@ list(
 )
 
 # The hpvm-rt runtime
-# This has to be explicitly set as hpvm-rt.ll is created in a custom_target
+# This has to be explicitly set as hpvm-rt.bc is created in a custom_target
 # and does not export its file location.
 # Keep this in sync with hpvm/projects/hpvm-rt/CMakeLists.txt.
-set(HPVM_RT_PATH ${PROJECT_BINARY_DIR}/tools/hpvm/projects/hpvm-rt/hpvm-rt.ll)
+set(HPVM_RT_PATH ${PROJECT_BINARY_DIR}/tools/hpvm/projects/hpvm-rt/hpvm-rt.bc)
 
 # Compile flags (clang++)
 set(CLANG_FLAGS -fno-exceptions -std=c++11 -O3)
@@ -89,7 +89,7 @@ function(compile_single_benchmark target src_file extra_passes extra_dfg_flags)
   )
   add_custom_command(
     OUTPUT "${WORK_DIR}/${target}.linked.bc"
-    DEPENDS "${WORK_DIR}/${target}.llvm.ll" hpvm-rt.ll llvm-link
+    DEPENDS "${WORK_DIR}/${target}.llvm.ll" hpvm-rt.bc llvm-link
     COMMAND ${LLVM_LINK} ${WORK_DIR}/${target}.llvm.ll ${HPVM_RT_PATH}
       -o ${WORK_DIR}/${target}.linked.bc
   )
@@ -106,12 +106,23 @@ function(compile_single_benchmark target src_file extra_passes extra_dfg_flags)
   set(test_compile_targets ${test_compile_targets} ${target} PARENT_SCOPE)
 endfunction(compile_single_benchmark)
 
+set(test_run_targets "")
+function(run_single_benchmark run_target benchmark)
+  add_custom_target(
+    ${run_target}
+    COMMAND ${WORK_DIR}/${benchmark}
+  )
+  add_dependencies(${run_target} ${benchmark})
+  set(test_run_targets ${test_run_targets} ${run_target} PARENT_SCOPE)
+endfunction(run_single_benchmark)
+
 file(GLOB entries ./benchmarks/*)
 foreach(dir ${entries})
   get_filename_component(dirname "${dir}" NAME)
   compile_single_benchmark(
     "test_${dirname}" ${dir}/${dirname}.cpp LLVMDFG2LLVM_CUDNN -dfg2llvm-cudnn
   )
+  run_single_benchmark("run_${dirname}" "test_${dirname}")
   set(
     loop_extra_flags
     -dfg2llvm-wrapperapi
@@ -122,6 +133,7 @@ foreach(dir ${entries})
     "test_${dirname}_loop" ${dir}/${dirname}_loop.cpp
     LLVMDFG2LLVM_WrapperAPI "${loop_extra_flags}"
   )
+  run_single_benchmark("run_${dirname}_loop" "test_${dirname}_loop")
 endforeach(dir)
 message(STATUS "List of test dnn benchmarks: ${test_compile_targets}")
 add_custom_target(dnn_benchmarks DEPENDS ${test_compile_targets})
-- 
GitLab