Skip to content
Snippets Groups Projects
CMakeLists.txt 3.93 KiB
Newer Older
set(BUDDY_OPT_STRIP_MINING 256 CACHE STRING "Stride Size")
zhanghb97's avatar
zhanghb97 committed
set(MLIR_LINALG_TILE 2 CACHE STRING "MLIR Linalg Tile Size")
zhanghb97's avatar
zhanghb97 committed
set(LLVM_MLIR_BINARY_DIR ${BUDDY_OPT_BUILD_DIR}/../llvm/build/bin)
zhanghb97's avatar
zhanghb97 committed

message(STATUS "Configuring Stride Size: ${BUDDY_OPT_STRIP_MINING}")
zhanghb97's avatar
zhanghb97 committed
message(STATUS "Configuring MLIR Linalg Tile Size: ${MLIR_LINALG_TILE}")
#-------------------------------------------------------------------------------
zhanghb97's avatar
zhanghb97 committed
# MLIR Linalg Dialect Conv2D Operation + Upstream Lowering Passes
#-------------------------------------------------------------------------------

zhanghb97's avatar
zhanghb97 committed
add_custom_command(OUTPUT mlir-conv2d.o
  COMMAND ${LLVM_MLIR_BINARY_DIR}/mlir-opt
          ${BUDDY_SOURCE_DIR}/benchmarks/ImageProcessing/MLIRConv2D.mlir 
            -linalg-tile="tile-sizes=${MLIR_LINALG_TILE},${MLIR_LINALG_TILE}"
            -convert-linalg-to-loops
            -convert-scf-to-std -convert-linalg-to-llvm
            -lower-affine -convert-scf-to-std --convert-memref-to-llvm 
            -convert-std-to-llvm='emit-c-wrappers=1'
            -reconcile-unrealized-casts | 
          ${LLVM_MLIR_BINARY_DIR}/mlir-translate --mlir-to-llvmir |
          ${LLVM_MLIR_BINARY_DIR}/llc -mtriple=${BUDDY_OPT_TRIPLE} 
            -mattr=${BUDDY_OPT_ATTR} --filetype=obj 
            -o ${BUDDY_BINARY_DIR}/../benchmarks/ImageProcessing/mlir-conv2d.o
)
add_library(MLIRConv2D STATIC mlir-conv2d.o)
set_target_properties(MLIRConv2D PROPERTIES LINKER_LANGUAGE CXX)

#-------------------------------------------------------------------------------
# MLIR Linalg Dialect Conv2D Operation + Buddy CB Algorithm
#-------------------------------------------------------------------------------

add_custom_command(OUTPUT buddy-conv2d.o
  COMMAND ${BUDDY_OPT_BUILD_DIR}/bin/buddy-opt
zhanghb97's avatar
zhanghb97 committed
          ${BUDDY_SOURCE_DIR}/benchmarks/ImageProcessing/BuddyConv2D.mlir 
            -conv-vectorization="strip-mining=${BUDDY_OPT_STRIP_MINING}" 
            -lower-affine -convert-scf-to-std -convert-vector-to-llvm 
            -convert-memref-to-llvm -convert-std-to-llvm='emit-c-wrappers=1' 
            -reconcile-unrealized-casts | 
zhanghb97's avatar
zhanghb97 committed
          ${LLVM_MLIR_BINARY_DIR}/mlir-translate --mlir-to-llvmir |
          ${LLVM_MLIR_BINARY_DIR}/llc -mtriple=${BUDDY_OPT_TRIPLE} 
            -mattr=${BUDDY_OPT_ATTR} --filetype=obj 
zhanghb97's avatar
zhanghb97 committed
            -o ${BUDDY_BINARY_DIR}/../benchmarks/ImageProcessing/buddy-conv2d.o
zhanghb97's avatar
zhanghb97 committed
)
zhanghb97's avatar
zhanghb97 committed
add_library(BuddyConv2D STATIC buddy-conv2d.o)
set_target_properties(BuddyConv2D PROPERTIES LINKER_LANGUAGE CXX)
zhanghb97's avatar
zhanghb97 committed

#-------------------------------------------------------------------------------
# Buddy DIP Dialect Corr2D Operation + CB Algorithm
#-------------------------------------------------------------------------------

zhanghb97's avatar
zhanghb97 committed
add_custom_command(OUTPUT buddy-corr2d.o
  COMMAND ${BUDDY_OPT_BUILD_DIR}/bin/buddy-opt 
zhanghb97's avatar
zhanghb97 committed
          ${BUDDY_SOURCE_DIR}/benchmarks/ImageProcessing/BuddyCorr2D.mlir 
            -lower-dip="DIP-strip-mining=${BUDDY_OPT_STRIP_MINING}" 
            -lower-affine -convert-scf-to-std -convert-vector-to-llvm 
            -convert-memref-to-llvm -convert-std-to-llvm='emit-c-wrappers=1' 
            -reconcile-unrealized-casts | 
          ${LLVM_MLIR_BINARY_DIR}/mlir-translate --mlir-to-llvmir |
          ${LLVM_MLIR_BINARY_DIR}/llc -mtriple=${BUDDY_OPT_TRIPLE} 
            -mattr=${BUDDY_OPT_ATTR} --filetype=obj 
zhanghb97's avatar
zhanghb97 committed
            -o ${BUDDY_BINARY_DIR}/../benchmarks/ImageProcessing/buddy-corr2d.o
zhanghb97's avatar
zhanghb97 committed
add_library(BuddyCorr2D STATIC buddy-corr2d.o)
set_target_properties(BuddyCorr2D PROPERTIES LINKER_LANGUAGE CXX)

#-------------------------------------------------------------------------------
# Image Processing Benchmark Target
#-------------------------------------------------------------------------------

add_executable(image-processing-benchmark
  Main.cpp 
zhanghb97's avatar
zhanghb97 committed
  OpenCVFilter2DBenchmark.cpp
  MLIRConv2DBenchmark.cpp
  BuddyConv2DBenchmark.cpp
  BuddyCorr2DBenchmark.cpp
zhanghb97's avatar
zhanghb97 committed

target_link_libraries(image-processing-benchmark 
  GoogleBenchmark
  ${OpenCV_LIBS}
zhanghb97's avatar
zhanghb97 committed
  MLIRConv2D
  BuddyConv2D
  BuddyCorr2D
  PNGImage
zhanghb97's avatar
zhanghb97 committed
  )