Skip to content

Commit 6c1d11b

Browse files
authored
Merge branch 'buddy-compiler:main' into compareImg_dev
2 parents 5195a53 + 43bdf3f commit 6c1d11b

34 files changed

+2351
-261
lines changed

CMakeLists.txt

+9
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,15 @@ set(BUDDY_OPT_TRIPLE x86_64-unknown-linux-gnu CACHE STRING "Target Triple.")
3232
message(STATUS "Configuring Target Architecture: ${BUDDY_OPT_ATTR}")
3333
message(STATUS "Configuring Target Triple: ${BUDDY_OPT_TRIPLE}")
3434

35+
set(BUILD_TESTS OFF CACHE BOOL "Build tests")
36+
set(BUILD_VALIDATION OFF CACHE BOOL "Build validations")
37+
set(BUILD_CORRECTNESS OFF CACHE BOOL "Build correctness checking")
3538
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${BUDDY_BINARY_DIR})
3639

3740
# Add BUDDY files to the include path
3841
include_directories(${BUDDY_MAIN_INCLUDE_DIR})
3942
include_directories(${BUDDY_MLIR_INTERFACE_DIR})
43+
include_directories(${BUDDY_THIRDPARTY_INCLUDE_DIR})
4044

4145
# MLIR binary directory.
4246
set(LLVM_MLIR_BINARY_DIR ${BUDDY_MLIR_BUILD_DIR}/../llvm/build/bin)
@@ -111,3 +115,8 @@ check_simd()
111115

112116
add_subdirectory(benchmarks)
113117
add_subdirectory(utils)
118+
119+
if (BUILD_VALIDATION)
120+
add_subdirectory(validation)
121+
endif()
122+

benchmarks/AudioProcessing/CMakeLists.txt

+22-18
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,13 @@ add_subdirectory(${KFR_DIR} ./kfr)
3030
include_directories(${KFR_DIR}/include)
3131

3232
#-------------------------------------------------------------------------------
33-
# DAP Dialect Buddy Biquad Operation
33+
# MLIR Biquad Operation
3434
#-------------------------------------------------------------------------------
3535

36-
add_custom_command(OUTPUT buddy-biquad.o
36+
add_custom_command(OUTPUT mlir-biquad.o
3737
COMMAND ${BUDDY_MLIR_BUILD_DIR}/bin/buddy-opt
38-
${BUDDY_SOURCE_DIR}/benchmarks/AudioProcessing/BuddyBiquad.mlir
39-
-lower-dap="DAP-vector-splitting=${SPLITING_SIZE}" -convert-linalg-to-affine-loops
38+
${BUDDY_SOURCE_DIR}/benchmarks/AudioProcessing/MLIRBiquad.mlir
39+
-convert-linalg-to-affine-loops
4040
-lower-affine -convert-scf-to-cf -convert-vector-to-llvm
4141
--llvm-request-c-wrappers
4242
-convert-arith-to-llvm
@@ -45,21 +45,21 @@ add_custom_command(OUTPUT buddy-biquad.o
4545
${LLVM_MLIR_BINARY_DIR}/mlir-translate --mlir-to-llvmir |
4646
${LLVM_MLIR_BINARY_DIR}/llc -mtriple=${BUDDY_OPT_TRIPLE}
4747
-mattr=${BUDDY_OPT_ATTR} --filetype=obj
48-
-o ${BUDDY_BINARY_DIR}/../benchmarks/AudioProcessing/buddy-biquad.o
48+
-o ${BUDDY_BINARY_DIR}/../benchmarks/AudioProcessing/mlir-biquad.o
4949
)
50-
add_library(BuddyBiquad STATIC buddy-biquad.o)
51-
set_target_properties(BuddyBiquad PROPERTIES LINKER_LANGUAGE CXX)
50+
add_library(MLIRBiquad STATIC mlir-biquad.o)
51+
set_target_properties(MLIRBiquad PROPERTIES LINKER_LANGUAGE CXX)
5252

5353
#-------------------------------------------------------------------------------
54-
# DAP Dialect Buddy IIR Operation
54+
# MLIR IIR Operation
5555
#-------------------------------------------------------------------------------
5656

5757
# TODO:
5858
# Support only when input audio size is multiple of splitting size.
5959
# Add a support for all input audio size.
60-
add_custom_command(OUTPUT buddy-iir.o
60+
add_custom_command(OUTPUT mlir-iir.o
6161
COMMAND ${BUDDY_MLIR_BUILD_DIR}/bin/buddy-opt
62-
${BUDDY_SOURCE_DIR}/benchmarks/AudioProcessing/BuddyIir.mlir
62+
${BUDDY_SOURCE_DIR}/benchmarks/AudioProcessing/MLIRIir.mlir
6363
-lower-dap="DAP-vector-splitting=64" -convert-linalg-to-affine-loops
6464
-lower-affine
6565
-convert-scf-to-cf
@@ -71,27 +71,31 @@ add_custom_command(OUTPUT buddy-iir.o
7171
${LLVM_MLIR_BINARY_DIR}/mlir-translate --mlir-to-llvmir |
7272
${LLVM_MLIR_BINARY_DIR}/llc -mtriple=${BUDDY_OPT_TRIPLE}
7373
-mattr=${BUDDY_OPT_ATTR} --filetype=obj
74-
-o ${BUDDY_BINARY_DIR}/../benchmarks/AudioProcessing/buddy-iir.o
74+
-o ${BUDDY_BINARY_DIR}/../benchmarks/AudioProcessing/mlir-iir.o
7575
)
76-
add_library(BuddyIir STATIC buddy-iir.o)
77-
set_target_properties(BuddyIir PROPERTIES LINKER_LANGUAGE CXX)
78-
76+
add_library(MLIRIir STATIC mlir-iir.o)
77+
set_target_properties(MLIRIir PROPERTIES LINKER_LANGUAGE CXX)
7978
add_executable(audio-processing-benchmark
8079
KFRFft.cpp
81-
KFRFir.cpp
8280
KFRIir.cpp
8381
KFRBiquad.cpp
8482
BuddyBiquadBenchmark.cpp
8583
BuddyIirBenchmark.cpp
8684
Main.cpp
8785
)
8886

89-
target_link_directories(audio-processing-benchmark PRIVATE ${KFR_DIR}/build/)
87+
target_link_directories(audio-processing-benchmark
88+
PRIVATE
89+
${KFR_DIR}/build/
90+
${BUDDY_MLIR_LIB_DIR}
91+
)
92+
9093
target_link_libraries(audio-processing-benchmark
9194
PRIVATE
9295
kfr_io
9396
kfr_dft
94-
BuddyBiquad
95-
BuddyIir
97+
MLIRBiquad
98+
MLIRIir
99+
BuddyLibDAP
96100
GoogleBenchmark
97101
)

benchmarks/AudioProcessing/KFRFft.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -55,4 +55,4 @@ void generateResultKFRFft() {
5555
println("-------------------------------------------------------");
5656
println("[ KFR FFT Result Information ]");
5757
println("FFT operation finished!");
58-
}
58+
}

benchmarks/AudioProcessing/KFRFir.cpp

-72
This file was deleted.

benchmarks/AudioProcessing/BuddyBiquad.mlir renamed to benchmarks/AudioProcessing/MLIRBiquad.mlir

-5
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,3 @@ func.func @mlir_biquad(%in : memref<?xf32>, %filter : memref<?xf32>, %out : memr
5151
}
5252
return
5353
}
54-
55-
func.func @buddy_biquad(%in : memref<?xf32>, %filter : memref<?xf32>, %out : memref<?xf32>) -> () {
56-
dap.biquad %in, %filter, %out : memref<?xf32>, memref<?xf32>, memref<?xf32>
57-
return
58-
}
+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
//===- BuddyFir.mlir ---------------------------------------------------===//
2+
//
3+
// Licensed under the Apache License, Version 2.0 (the "License");
4+
// you may not use this file except in compliance with the License.
5+
// You may obtain a copy of the License at
6+
//
7+
// http://www.apache.org/licenses/LICENSE-2.0
8+
//
9+
// Unless required by applicable law or agreed to in writing, software
10+
// distributed under the License is distributed on an "AS IS" BASIS,
11+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
// See the License for the specific language governing permissions and
13+
// limitations under the License.
14+
//
15+
//===----------------------------------------------------------------------===//
16+
//
17+
// This file provides the MLIR Fir (Conv 1d) function.
18+
//
19+
//===----------------------------------------------------------------------===//
20+
21+
func.func @conv1d_linalg(%in : memref<?xf32>, %filter : memref<?xf32>, %out : memref<?xf32>) -> () {
22+
linalg.conv_1d ins(%in, %filter : memref<?xf32>, memref<?xf32>)
23+
outs(%out : memref<?xf32>)
24+
return
25+
}

benchmarks/AudioProcessing/BuddyIir.mlir renamed to benchmarks/AudioProcessing/MLIRIir.mlir

-5
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,3 @@ func.func @mlir_iir(%in : memref<?xf32>, %filter : memref<?x?xf32>, %out : memre
5353
}
5454
return
5555
}
56-
57-
func.func @buddy_iir(%in : memref<?xf32>, %filter : memref<?x?xf32>, %out : memref<?xf32>) -> () {
58-
dap.iir %in, %filter, %out : memref<?xf32>, memref<?x?xf32>, memref<?xf32>
59-
return
60-
}

benchmarks/AudioProcessing/Main.cpp

-4
Original file line numberDiff line numberDiff line change
@@ -20,22 +20,19 @@
2020

2121
#include <benchmark/benchmark.h>
2222

23-
void initializeKFRFir();
2423
void initializeKFRBiquad();
2524
void initializeKFRFft();
2625
void initializeKFRIir();
2726
void initializeBuddyBiquad();
2827
void initializeBuddyIir();
2928

30-
void generateResultKFRFir();
3129
void generateResultKFRBiquad();
3230
void generateResultKFRFft();
3331
void generateResultKFRIir();
3432
void generateResultBuddyBiquad();
3533
void generateResultBuddyIir();
3634

3735
int main(int argc, char **argv) {
38-
initializeKFRFir();
3936
initializeKFRBiquad();
4037
initializeKFRFft();
4138
initializeKFRIir();
@@ -45,7 +42,6 @@ int main(int argc, char **argv) {
4542
::benchmark::Initialize(&argc, argv);
4643
::benchmark::RunSpecifiedBenchmarks();
4744

48-
generateResultKFRFir();
4945
generateResultKFRBiquad();
5046
generateResultKFRFft();
5147
generateResultKFRIir();

benchmarks/DeepLearning/Models/CMakeLists.txt

+1
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,4 @@ add_subdirectory(ResNet-V2-50)
33
add_subdirectory(MobileNet-V3)
44
add_subdirectory(Inception-V3)
55
add_subdirectory(ResNet-18)
6+
add_subdirectory(EfficientNet-Quant)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
set(QUANT_TOSA_PIPELINE "builtin.module(func.func(tosa-to-linalg-named),func.func(tosa-to-linalg),func.func(tosa-to-tensor))")
2+
3+
# Compile MLIR file to object file.
4+
add_custom_command(OUTPUT efficientnet-quant.o
5+
COMMAND
6+
${LLVM_MLIR_BINARY_DIR}/mlir-opt ${CMAKE_CURRENT_SOURCE_DIR}/efficientnet.mlir
7+
--pass-pipeline="${QUANT_TOSA_PIPELINE}" |
8+
${LLVM_MLIR_BINARY_DIR}/mlir-opt
9+
--tosa-to-arith="include-apply-rescale=1"
10+
--test-linalg-transform-patterns="test-generalize-pad-tensor"
11+
--linalg-bufferize
12+
--convert-linalg-to-loops
13+
--func-bufferize
14+
--arith-bufferize
15+
--tensor-bufferize
16+
--finalizing-bufferize
17+
--convert-vector-to-scf
18+
--convert-scf-to-cf
19+
--expand-strided-metadata
20+
--lower-affine
21+
--convert-vector-to-llvm
22+
--memref-expand
23+
--arith-expand
24+
--convert-arith-to-llvm
25+
--finalize-memref-to-llvm
26+
--convert-math-to-llvm
27+
--llvm-request-c-wrappers
28+
--convert-func-to-llvm
29+
--reconcile-unrealized-casts |
30+
${LLVM_MLIR_BINARY_DIR}/mlir-translate --mlir-to-llvmir |
31+
${LLVM_MLIR_BINARY_DIR}/llc -mtriple=${BUDDY_OPT_TRIPLE} -mattr=${BUDDY_OPT_ATTR}
32+
--filetype=obj -o ${CMAKE_CURRENT_BINARY_DIR}/efficientnet-quant.o
33+
)
34+
35+
add_library(EfficientNetQuant STATIC efficientnet-quant.o)
36+
set_target_properties(EfficientNetQuant PROPERTIES LINKER_LANGUAGE CXX)
37+
38+
add_executable(efficientnet-quant-benchmark Main.cpp EfficientNetQuantBenchmark.cpp)
39+
# Link libraries
40+
target_link_directories(efficientnet-quant-benchmark PRIVATE ${LLVM_MLIR_LIBRARY_DIR})
41+
target_link_libraries(efficientnet-quant-benchmark
42+
EfficientNetQuant
43+
GoogleBenchmark
44+
mlir_c_runner_utils
45+
${OpenCV_LIBS}
46+
)

0 commit comments

Comments
 (0)