Bladeren bron

Add duplication ratio support

Youngbin Kim 4 maanden geleden
bovenliggende
commit
e272ca0d3c
2 gewijzigde bestanden met toevoegingen van 8 en 3 verwijderingen
  1. 4 1
      imc_extension.cmake
  2. 4 2
      setup_build_dir.py

+ 4 - 1
imc_extension.cmake

@@ -13,6 +13,7 @@ set(IMC_PRINT_INIT_TIME 0 CACHE BOOL "")
 set(IMC_PRINT_LATENCY_OVERHEAD 0 CACHE BOOL "")
 set(IMC_ENABLE_DYNAMIC_CHECKPOINT 0 CACHE BOOL "")
 
+set(IMC_DUPLICATION_RATIO 100 CACHE BOOL "")
 
 set(AVAILABLE_BENCHES "vBasicMath" "vStringSearch" "vFFT" "vSha" "vCrc" "vMatMul" "vConv2d" "adc_demo" "vAes" "fmc_expr" "vrefint_expr")
 if(NOT IMC_BENCH_NAME IN_LIST AVAILABLE_BENCHES)
@@ -220,6 +221,8 @@ function(compile_imc_files)
         list(APPEND PLUGIN_OPTIONS -load-pass-plugin=${PLUGIN})
     endforeach()
 
+    set(OPT_OPTIONS "-imc-loop-opt-duplication-ratio=${IMC_DUPLICATION_RATIO}")
+
     set(ADDITIONAL_DEFS
         "-D imcBENCH_REPEAT_COUNT=${IMC_BENCH_REPEAT_COUNT}"
         "-D imcCUSTOM_UNROLL=${IMC_CUSTOM_UNROLL}"
@@ -234,7 +237,7 @@ function(compile_imc_files)
             OUTPUT ${PROJECT_BINARY_DIR}/${APP_SRC}.s
             DEPENDS ${APP_SRC}
             COMMAND ${CMAKE_C_COMPILER} -g ${C_FLAGS} -O0 -Xclang -disable-O0-optnone ${INCLUDE_DIRS} -D USE_HAL_DRIVER -D STM32L552xx ${ADDITIONAL_DEFS} -c -emit-llvm ${PROJECT_SOURCE_DIR}/${APP_SRC} -o ${PROJECT_BINARY_DIR}/${APP_SRC}.bc
-            COMMAND ${OPT_BIN} -o ${PROJECT_BINARY_DIR}/${APP_SRC}_imc.bc ${PLUGIN_OPTIONS} -passes=${BASIC_OPT_PASSES},${IMC_OPT_PASSES} ${PROJECT_BINARY_DIR}/${APP_SRC}.bc
+            COMMAND ${OPT_BIN} -o ${PROJECT_BINARY_DIR}/${APP_SRC}_imc.bc ${PLUGIN_OPTIONS} -passes=${BASIC_OPT_PASSES},${IMC_OPT_PASSES} ${OPT_OPTIONS} ${PROJECT_BINARY_DIR}/${APP_SRC}.bc
             COMMAND ${OPT_BIN} ${OPT} ${ADDITIONAL_OPT_FLAGS} -o ${PROJECT_BINARY_DIR}/${APP_SRC}.opt.bc ${PROJECT_BINARY_DIR}/${APP_SRC}_imc.bc
             COMMAND ${LLC_BIN} ${CPU} ${OPT} -o ${PROJECT_BINARY_DIR}/${APP_SRC}.s ${PROJECT_BINARY_DIR}/${APP_SRC}.opt.bc
         )

+ 4 - 2
setup_build_dir.py

@@ -11,13 +11,13 @@ BUILD_DIR = f"{WORKSPACE_ROOT}/build"
 
 config = BuildConfigM33()
 config.bench_name = "vFFT"
-config.insert_compiler_checkpoints = False
+config.insert_compiler_checkpoints = True
 config.enable_extension = True
 config.use_checkpoint_pass_counter = False
 config.checkpoint_pass_count = 1000
 config.use_checkpoint_voltage_check = True
 config.bench_infinite_loop = True
-config.split_loop = False
+config.split_loop = True
 config.loop_pass_count = 30
 config.enable_static_loop_pass_count = False
 config.enable_adaptive_loop_pass_count = False
@@ -27,6 +27,8 @@ config.print_stats = True
 config.custom_unroll = False
 config.enable_dynamic_checkpoint = True
 
+config.duplication_ratio = 50
+
 env = TestEnv(WORKSPACE_ROOT, NVM_RESET_BIN, OPENOCD_SCRIPT)
 
 if os.path.exists(BUILD_DIR):