| # Copyright 2020 Google LLC | |
| # | |
| # Licensed under the Apache License, Version 2.0 (the "License"); | |
| # you may not use this file except in compliance with the License. | |
| # You may obtain a copy of the License at | |
| # | |
| # https://www.apache.org/licenses/LICENSE-2.0 | |
| # | |
| # Unless required by applicable law or agreed to in writing, software | |
| # distributed under the License is distributed on an "AS IS" BASIS, | |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| # See the License for the specific language governing permissions and | |
| # limitations under the License. | |
| # Tests for ModelBuilder. | |
| load("//iree:lit_test.bzl", "iree_lit_test_suite") | |
| package( | |
| default_visibility = ["//visibility:public"], | |
| features = ["layering_check"], | |
| licenses = ["notice"], # Apache 2.0 | |
| ) | |
| iree_lit_test_suite( | |
| name = "lit", | |
| srcs = glob( | |
| ["*.cpp"], | |
| exclude = [ | |
| "Bench*", | |
| ], | |
| ), | |
| data = [ | |
| # runtime libraries | |
| "@llvm-project//mlir:tools/libvulkan-runtime-wrappers.so", | |
| "runtime-support.so", | |
| # Tests. | |
| ":test-dot-prod", | |
| "test-mnist-jit", | |
| "test-simple-jit", | |
| "test-simple-jit-vulkan", | |
| "test-simple-mlir", | |
| "test-vector-transfers-jit", | |
| "test-matmul-vulkan", | |
| "test-vec-to-gpu", | |
| # FileChecker. | |
| "//iree/tools:IreeFileCheck", | |
| ], | |
| ) | |
| cc_binary( | |
| name = "test-dot-prod", | |
| srcs = ["TestDotProdJIT.cpp"], | |
| deps = [ | |
| "//experimental/ModelBuilder", | |
| "//experimental/ModelBuilder:ModelRunner", | |
| "@llvm-project//llvm:Support", | |
| "@llvm-project//mlir:EDSC", | |
| "@llvm-project//mlir:IR", | |
| "@llvm-project//mlir:SCFTransforms", | |
| ], | |
| ) | |
| cc_binary( | |
| name = "test-vector-transfers-jit", | |
| srcs = ["TestVectorTransfersJIT.cpp"], | |
| deps = [ | |
| ":runtime-support.so", | |
| "//experimental/ModelBuilder", | |
| "//experimental/ModelBuilder:ModelRunner", | |
| "@llvm-project//llvm:Support", | |
| "@llvm-project//mlir:EDSC", | |
| "@llvm-project//mlir:IR", | |
| "@llvm-project//mlir:SCFTransforms", | |
| ], | |
| ) | |
| cc_binary( | |
| name = "test-mnist-jit", | |
| srcs = ["TestMNISTJIT.cpp"], | |
| deps = [ | |
| "//experimental/ModelBuilder", | |
| "//experimental/ModelBuilder:ModelRunner", | |
| "@llvm-project//mlir:EDSC", | |
| "@llvm-project//mlir:IR", | |
| "@llvm-project//mlir:SCFTransforms", | |
| # mlir_runner_utils with iostream needed for printMemRef atm | |
| "@llvm-project//mlir:mlir_runner_utils", | |
| ], | |
| ) | |
| cc_binary( | |
| name = "test-simple-jit", | |
| srcs = ["TestSimpleJIT.cpp"], | |
| deps = [ | |
| "//experimental/ModelBuilder", | |
| "//experimental/ModelBuilder:ModelRunner", | |
| "@llvm-project//llvm:Support", | |
| "@llvm-project//mlir:EDSC", | |
| "@llvm-project//mlir:IR", | |
| "@llvm-project//mlir:SCFTransforms", | |
| ], | |
| ) | |
| cc_binary( | |
| name = "test-simple-jit-vulkan", | |
| srcs = ["TestSimpleJITVulkan.cpp"], | |
| deps = [ | |
| "//experimental/ModelBuilder", | |
| "//experimental/ModelBuilder:ModelRunner", | |
| "@llvm-project//llvm:Support", | |
| "@llvm-project//mlir:IR", | |
| "@llvm-project//mlir:Parser", | |
| "@llvm-project//mlir:SPIRVDialect", | |
| "@llvm-project//mlir:mlir_runner_utils", | |
| ], | |
| ) | |
| cc_binary( | |
| name = "test-matmul-vulkan", | |
| srcs = ["TestMatMulVulkan.cpp"], | |
| deps = [ | |
| "//experimental/ModelBuilder", | |
| "@llvm-project//mlir:SPIRVTransforms", | |
| "//experimental/ModelBuilder:ModelRunner", | |
| "//experimental/ModelBuilder:VulkanLaunchWrapper", | |
| "//iree/compiler/Conversion/CodegenUtils", | |
| "//iree/compiler/Conversion/LinalgToSPIRV", | |
| "@llvm-project//llvm:Support", | |
| "@llvm-project//mlir:ExecutionEngine", | |
| "@llvm-project//mlir:ExecutionEngineUtils", | |
| "@llvm-project//mlir:GPUToSPIRVTransforms", | |
| "@llvm-project//mlir:GPUToVulkanTransforms", | |
| "@llvm-project//mlir:GPUTransforms", | |
| "@llvm-project//mlir:IR", | |
| "@llvm-project//mlir:LLVMTransforms", | |
| "@llvm-project//mlir:LinalgOps", | |
| "@llvm-project//mlir:LinalgToLLVM", | |
| "@llvm-project//mlir:LinalgTransforms", | |
| "@llvm-project//mlir:Parser", | |
| "@llvm-project//mlir:Pass", | |
| "@llvm-project//mlir:SPIRVDialect", | |
| "@llvm-project//mlir:StandardToSPIRVConversions", | |
| "@llvm-project//mlir:Support", | |
| "@llvm-project//mlir:TargetLLVMIR", | |
| "@llvm-project//mlir:TransformUtils", | |
| "@llvm-project//mlir:VectorToLLVM", | |
| # mlir_runner_utils with iostream needed for printMemRef atm | |
| "@llvm-project//mlir:mlir_runner_utils", | |
| ], | |
| ) | |
| cc_binary( | |
| name = "test-vec-to-gpu", | |
| srcs = ["TestVectorToGPU.cpp"], | |
| tags = [ | |
| "noga", | |
| ], | |
| deps = [ | |
| "//experimental/ModelBuilder", | |
| "//experimental/ModelBuilder:ModelRunner", | |
| "//experimental/ModelBuilder:VulkanLaunchWrapper", | |
| "@llvm-project//mlir:SPIRVTransforms", | |
| "//iree/compiler/Conversion/CodegenUtils", | |
| "//iree/compiler/Conversion/LinalgToSPIRV", | |
| "@llvm-project//llvm:Support", | |
| "@llvm-project//mlir:GPUToVulkanTransforms", | |
| "@llvm-project//mlir:GPUTransforms", | |
| "@llvm-project//mlir:IR", | |
| "@llvm-project//mlir:LLVMTransforms", | |
| "@llvm-project//mlir:LinalgOps", | |
| "@llvm-project//mlir:LinalgToLLVM", | |
| "@llvm-project//mlir:LinalgTransforms", | |
| "@llvm-project//mlir:Parser", | |
| "@llvm-project//mlir:Pass", | |
| "@llvm-project//mlir:SPIRVDialect", | |
| "@llvm-project//mlir:StandardToSPIRVConversions", | |
| "@llvm-project//mlir:TransformUtils", | |
| "@llvm-project//mlir:VectorOps", | |
| "@llvm-project//mlir:mlir_c_runner_utils", | |
| # mlir_runner_utils with iostream needed for printMemRef atm | |
| "@llvm-project//mlir:mlir_runner_utils", | |
| ], | |
| ) | |
| cc_binary( | |
| name = "bench-matmul-gpu", | |
| srcs = ["BenchMatMulVectorGPU.cpp"], | |
| tags = [ | |
| "noga", | |
| ], | |
| deps = [ | |
| "//experimental/ModelBuilder", | |
| "//experimental/ModelBuilder:ModelRunner", | |
| "//experimental/ModelBuilder:VulkanLaunchWrapper", | |
| "//iree/compiler/Conversion/CodegenUtils", | |
| "//iree/compiler/Conversion/LinalgToSPIRV", | |
| "@llvm-project//llvm:Support", | |
| "@llvm-project//mlir:GPUToVulkanTransforms", | |
| "@llvm-project//mlir:GPUTransforms", | |
| "@llvm-project//mlir:IR", | |
| "@llvm-project//mlir:LLVMTransforms", | |
| "@llvm-project//mlir:LinalgOps", | |
| "@llvm-project//mlir:LinalgToLLVM", | |
| "@llvm-project//mlir:LinalgTransforms", | |
| "@llvm-project//mlir:Parser", | |
| "@llvm-project//mlir:Pass", | |
| "@llvm-project//mlir:SPIRVDialect", | |
| "@llvm-project//mlir:SPIRVTransforms", | |
| "@llvm-project//mlir:StandardToSPIRVConversions", | |
| "@llvm-project//mlir:TransformUtils", | |
| "@llvm-project//mlir:VectorOps", | |
| "@llvm-project//mlir:mlir_c_runner_utils", | |
| # mlir_runner_utils with iostream needed for printMemRef atm | |
| "@llvm-project//mlir:mlir_runner_utils", | |
| ], | |
| ) | |
| cc_binary( | |
| name = "test-simple-mlir", | |
| srcs = ["TestSimpleMLIR.cpp"], | |
| deps = [ | |
| "//experimental/ModelBuilder", | |
| "//experimental/ModelBuilder:ModelRunner", | |
| ], | |
| ) | |
| # Benchmarks. | |
| # Matrix x Vector expressed in Vector dialect. | |
| cc_binary( | |
| name = "bench-matvec-vector-jit", | |
| srcs = ["BenchMatVecVectorJIT.cpp"], | |
| deps = [ | |
| "//experimental/ModelBuilder", | |
| "//experimental/ModelBuilder:ModelRunner", | |
| "@com_google_benchmark//:benchmark", | |
| "@llvm-project//mlir:EDSC", | |
| "@llvm-project//mlir:IR", | |
| ], | |
| ) | |
| # Matrix x Matrix expressed in Vector dialect. | |
| cc_binary( | |
| name = "bench-matmul-vector-jit", | |
| srcs = ["BenchMatMulVectorJIT.cpp"], | |
| deps = [ | |
| "//experimental/ModelBuilder", | |
| "//experimental/ModelBuilder:ModelRunner", | |
| "@com_google_benchmark//:benchmark", | |
| "@llvm-project//mlir:EDSC", | |
| "@llvm-project//mlir:IR", | |
| ], | |
| ) | |
| # Matrix x Matrix expressed in Vector dialect (using intrinsics). | |
| cc_binary( | |
| name = "bench-matmul-vector-column-major-llvm-intrinsics-jit", | |
| srcs = ["BenchMatMulVectorColumnMajorLLVMIntrinsicsJIT.cpp"], | |
| copts = ["-O3"], | |
| deps = [ | |
| "//experimental/ModelBuilder", | |
| "//experimental/ModelBuilder:ModelRunner", | |
| "@com_google_benchmark//:benchmark", | |
| "@llvm-project//mlir:EDSC", | |
| "@llvm-project//mlir:IR", | |
| ], | |
| ) | |
| # Runtime support library (for printing vectors). | |
| cc_binary( | |
| name = "runtime-support.so", | |
| linkshared = True, | |
| linkstatic = False, | |
| deps = [ | |
| "@llvm-project//mlir:mlir_c_runner_utils", | |
| ], | |
| ) |