diff --git a/include/BUILD b/include/BUILD new file mode 100644 index 0000000..ad43049 --- /dev/null +++ b/include/BUILD @@ -0,0 +1,18 @@ +package( + default_visibility = ["//visibility:public"], +) + +cc_library( + name = "include", + srcs = [], + hdrs = [ + "OnnxMlirRuntime.h", + "onnx-mlir/Runtime/OMTensor.h", + "onnx-mlir/Runtime/OMTensorList.h", + "onnx-mlir/Runtime/OnnxDataType.h", + "onnx-mlir/Runtime/OnnxDataTypeMetaData.inc", + ], + strip_include_prefix = "//include", + # visibility = ["//visibility:public"], + deps = [], +) diff --git a/src/BUILD b/src/BUILD index b1106d5..0f0d4e5 100644 --- a/src/BUILD +++ b/src/BUILD @@ -1,35 +1,53 @@ +package( + default_visibility = ["//visibility:public"], +) -cc_binary( - name = "MainUtils", - srcs = ["MainUtils.hpp","MainUtils.cpp"], - copts = [], - deps = [ - "@onnx", - "//Builder:OMBuilder", - OMKrnlOps - OMONNXOps - OMKrnlToAffine - OMKrnlToLLVM - OMONNXToKrnl - OMONNXRewrite - OMShapeInference - OMShapeInferenceOpInterface - OMAttributePromotion - OMPromotableConstOperandsOpInterface - OMResultTypeInferenceOpInterface - OMElideConstants - OMElideKrnlGlobalConstants - OMPackKrnlGlobalConstants - OMEnableMemoryPool - OMBundleMemoryPools - OMDisconnectKrnlDimFromAlloc - OMLowerKrnlShape - ], +genrule( + name = "ExternalUtil", + srcs = [ + "ExternalUtil.hpp.in", + ], + outs = [ + "ExternalUtil.hpp", + ], + cmd = "cp $(location :ExternalUtil.hpp.in) $(location :ExternalUtil.hpp)", +) + +cc_library( + name = "MainUtils", + srcs = ["MainUtils.cpp"], + hdrs = [ + "MainUtils.hpp", + ":ExternalUtil", + ], + deps = [ + "//src/Builder:OMBuilder", + "//src/Dialect/Krnl:OMKrnlOps", + "//src/Dialect/ONNX:OMONNXOps", + "//src/Pass:Passes", + "@llvm-project//mlir:AllPassesAndDialectsNoRegistration", + "@onnx", + ], ) cc_binary( - name = "onnx-mlir", - srcs = ["main.cpp"], - copts = [], - deps = [":MainUtils"], -) \ No newline at end of file + name = "onnx-mlir", + srcs = ["main.cpp"], + copts = [], + deps = [ + ":MainUtils", + "//src/Conversion/KrnlToAffine:OMKrnlToAffine", + "//src/Conversion/KrnlToLLVM:OMKrnlToLLVM", + "//src/Conversion/ONNXToKrnl:OMONNXToKrnl", + "//src/Transform:OMBundleMemoryPools", + "//src/Transform:OMDisconnectKrnlDimFromAlloc", + "//src/Transform:OMElideKrnlGlobalConstants", + "//src/Transform:OMEnableMemoryPool", + "//src/Transform:OMLowerKrnlShape", + "//src/Transform:OMPackKrnlGlobalConstants", + "//src/Transform/ONNX:OMAttributePromotion", + "//src/Transform/ONNX:OMElideConstants", + "//src/Transform/ONNX:OMONNXRewrite", + "//src/Transform/ONNX:OMShapeInference", + ], +) diff --git a/src/Builder/BUILD b/src/Builder/BUILD index fc9cfe9..502b7ee 100644 --- a/src/Builder/BUILD +++ b/src/Builder/BUILD @@ -1,11 +1,24 @@ +package( + default_visibility = ["//visibility:public"], +) + cc_library( name = "OMBuilder", srcs = [ "FrontendDialectHelper.cpp", - "FrontendDialectHelper.hpp", "FrontendDialectTransformer.cpp", - "FrontendDialectTransformer.hpp", ], - hdrs = ["header files"], - deps = ["header files"], + hdrs = [ + "FrontendDialectHelper.hpp", + "FrontendDialectTransformer.hpp", + "OpBuildTable.inc", + ], + deps = [ + "@llvm-project//llvm:Support", + "@onnx", + "@llvm-project//mlir:IR", + "@llvm-project//mlir:StandardOps", + "//src/Dialect/ONNX:OMONNXOps", + + ], ) diff --git a/src/Conversion/KrnlToAffine/BUILD b/src/Conversion/KrnlToAffine/BUILD new file mode 100644 index 0000000..1ee6f5a --- /dev/null +++ b/src/Conversion/KrnlToAffine/BUILD @@ -0,0 +1,16 @@ +package( + default_visibility = ["//visibility:public"], +) + +cc_library( + name = "OMKrnlToAffine", + srcs = [ + "KrnlToAffine.cpp", + ], + hdrs = [ + ], + deps = [ + "//src/Dialect/Krnl:OMKrnlOps", + "//src/Pass:Passes", + ], +) diff --git a/src/Conversion/KrnlToLLVM/BUILD b/src/Conversion/KrnlToLLVM/BUILD new file mode 100644 index 0000000..380d8a5 --- /dev/null +++ b/src/Conversion/KrnlToLLVM/BUILD @@ -0,0 +1,23 @@ +package( + default_visibility = ["//visibility:public"], +) + +cc_library( + name = "OMKrnlToLLVM", + srcs = [ + "KrnlToLLVM.cpp", + ], + hdrs = [ + "KrnlToLLVM.hpp", + ], + deps = [ + "//src/Conversion/ONNXToKrnl:OMONNXToKrnl", + "//src/Dialect/Krnl:OMKrnlOps", + "//src/Dialect/ONNX:OMONNXOps", + "//src/Pass:Passes", + "@llvm-project//llvm:FrontendOpenMP", + "@llvm-project//mlir:OpenMPToLLVM", + "@llvm-project//mlir:Shape", + "@onnx", + ], +) diff --git a/src/Conversion/ONNXToKrnl/BUILD b/src/Conversion/ONNXToKrnl/BUILD new file mode 100644 index 0000000..ff09572 --- /dev/null +++ b/src/Conversion/ONNXToKrnl/BUILD @@ -0,0 +1,46 @@ +package( + default_visibility = ["//visibility:public"], +) + +cc_library( + name = "OMONNXToKrnl", + srcs = [ + "ConvertONNXToKrnl.cpp", + "Math/Elementwise.cpp", + "Math/Gemm.cpp", + "Math/MatMul.cpp", + "Math/Reduction.cpp", + "Math/Softmax.cpp", + "NN/Conv.cpp", + "NN/Normalization.cpp", + "NN/Pooling.cpp", + "ONNXToKrnlCommon.cpp", + "ONNXToKrnlCommon.hpp", + "RNN/LSTM.cpp", + "RNN/RNNBase.cpp", + "RNN/RNNBase.hpp", + "Tensor/Concat.cpp", + "Tensor/Constant.cpp", + "Tensor/ConstantOfShape.cpp", + "Tensor/Gather.cpp", + "Tensor/Identity.cpp", + "Tensor/Pad.cpp", + "Tensor/PadConstantValuePad.cpp", + "Tensor/Reshape.cpp", + "Tensor/Size.cpp", + "Tensor/Split.cpp", + "Tensor/Squeeze.cpp", + "Tensor/Tile.cpp", + "Tensor/Transpose.cpp", + "Tensor/Unsqueeze.cpp", + ], + hdrs = [ + ], + deps = [ + "//src/Dialect/Krnl:OMKrnlOps", + "//src/Dialect/ONNX:OMONNXOps", + "//src/Pass:Passes", + "@llvm-project//mlir:ConversionPasses", + "@onnx", + ], +) diff --git a/src/Dialect/Krnl/BUILD b/src/Dialect/Krnl/BUILD index 859eaa8..a8438f4 100644 --- a/src/Dialect/Krnl/BUILD +++ b/src/Dialect/Krnl/BUILD @@ -1,3 +1,7 @@ +package( + default_visibility = ["//visibility:public"], +) + load("@llvm-project//mlir:tblgen.bzl", "gentbl") gentbl( diff --git a/src/Dialect/ONNX/BUILD b/src/Dialect/ONNX/BUILD index ffce732..f0b36b4 100644 --- a/src/Dialect/ONNX/BUILD +++ b/src/Dialect/ONNX/BUILD @@ -31,11 +31,9 @@ cc_library( ]), deps = [ ":OMONNXOpsIncGen", - - "@//src/Interface:OMPromotableConstOperandsOpInterface", - "@//src/Interface:OMShapeInferenceOpInterface", - "@//src/Interface:OMResultTypeInferenceOpInterface", - + "//src/Interface:OMPromotableConstOperandsOpInterface", + "//src/Interface:OMShapeInferenceOpInterface", + "//src/Interface:OMResultTypeInferenceOpInterface", "@onnx", # "@onnx//:onnx_proto_genproto", # "@llvm-project//mlir:Affine", @@ -57,3 +55,22 @@ cc_library( # "@llvm-project//mlir:TableGen", ], ) + +# "@llvm-project//llvm:core", +# "@llvm-project//llvm:dtu_asm_parser", +# "@llvm-project//llvm:dtu_code_gen", +# "@llvm-project//llvm:dtu_desc", +# "@llvm-project//llvm:orc_jit", +# "@llvm-project//llvm:passes", +# "@llvm-project//llvm:x86_asm_parser", +# "@llvm-project//llvm:x86_code_gen", +# "@llvm-project//mlir:AffineOps", +# "@llvm-project//mlir:Dialect", +# "@llvm-project//mlir:ExecutionEngine", +# "@llvm-project//mlir:LLVMDialect", +# "@llvm-project//mlir:LoopOps", +# "@llvm-project//mlir:MlirOptLib", +# "@llvm-project//mlir:Parser", +# "@llvm-project//mlir:StandardOps", +# "@llvm-project//mlir:Support", +# "@llvm-project//mlir:VectorOps", diff --git a/src/Pass/BUILD b/src/Pass/BUILD new file mode 100644 index 0000000..892dafc --- /dev/null +++ b/src/Pass/BUILD @@ -0,0 +1,10 @@ +package( + default_visibility = ["//visibility:public"], +) + +cc_library( + name = "Passes", + srcs = [], + hdrs = ["Passes.hpp"], + deps = [], +) \ No newline at end of file diff --git a/src/Runtime/BUILD b/src/Runtime/BUILD index e69de29..f896980 100644 --- a/src/Runtime/BUILD +++ b/src/Runtime/BUILD @@ -0,0 +1,73 @@ +package( + default_visibility = ["//visibility:public"], +) + +cc_library( + name = "cruntime", + srcs = [ + "OMTensor.c", + "OMTensor.inc", + "OMTensorList.c", + "OMTensorList.inc", + "OnnxDataType.cpp", + ], + hdrs = [], + deps = [ + "//include", + ], + alwayslink = 1, +) + +cc_library( + name = "OMTensorUtils", + srcs = [ + "OMTensor.cpp", + "OMTensor.inc", + "OMTensorList.cpp", + "OMTensorList.inc", + "OnnxDataType.cpp", + ], + hdrs = ["OMTensorHelper.h"], + deps = [ + "//include", + ], +) + +cc_library( + name = "ExecutionSession", + srcs = [ + "ExecutionSession.cpp", + ], + hdrs = ["ExecutionSession.hpp"], + deps = [ + "//include", + ], +) + +cc_binary( + name = "PyRuntime.so", + srcs = [ + "PyExecutionSession.cpp", + "PyExecutionSession.hpp", + ], + copts = ["-I/usr/include/python3.6"], + linkshared = True, + deps = [ + ":ExecutionSession", + ":OMTensorUtils", + "@onnx", + "@pybind11", + ], +) + +cc_library( + name = "EmbeddedDataLoader", + srcs = [ + "GetEmbeddedConstPool.cpp", + ], + hdrs = ["GetEmbeddedConstPool.h"], + deps = [ + "//include", + ], + alwayslink = 1, +) diff --git a/src/Tool/BinaryDecoder/BUILD b/src/Tool/BinaryDecoder/BUILD new file mode 100644 index 0000000..cebb7cc --- /dev/null +++ b/src/Tool/BinaryDecoder/BUILD @@ -0,0 +1,13 @@ +package( + default_visibility = ["//visibility:public"], +) + +cc_binary( + name = "binary-decoder", + srcs = ["BinaryDecoder.cpp"], + copts = [], + deps = [ + "@llvm-project//llvm:Core", + "@onnx", + ], +) diff --git a/src/Tool/ONNXMLIROpt/BUILD b/src/Tool/ONNXMLIROpt/BUILD new file mode 100644 index 0000000..fed716a --- /dev/null +++ b/src/Tool/ONNXMLIROpt/BUILD @@ -0,0 +1,16 @@ +package( + default_visibility = ["//visibility:public"], +) + +cc_binary( + name = "onnx-mlir-opt", + srcs = ["ONNXMLIROpt.cpp"], + copts = [], + deps = [ + "@llvm-project//llvm:Core", + "@llvm-project//mlir:IR", + "@llvm-project//mlir:mlir-opt", + "//src/Dialect/Krnl:OMKrnlOps", + "@onnx", + ], +) diff --git a/src/Transform/BUILD b/src/Transform/BUILD index e69de29..b47de4b 100644 --- a/src/Transform/BUILD +++ b/src/Transform/BUILD @@ -0,0 +1,60 @@ +package( + default_visibility = ["//visibility:public"], +) + +cc_library( + name = "OMElideKrnlGlobalConstants", + srcs = ["ElideKrnlGlobalConstants.cpp"], + hdrs = ["ElideKrnlGlobalConstants.hpp"], + deps = [ + "//src/Dialect/Krnl:OMKrnlOps", + "//src/Pass:Passes", + # "@onnx", + ], +) + +cc_library( + name = "OMPackKrnlGlobalConstants", + srcs = ["PackKrnlGlobalConstants.cpp"], + deps = [ + "//src/Dialect/Krnl:OMKrnlOps", + "//src/Pass:Passes", + ":OMElideKrnlGlobalConstants", + # "@onnx", + ], +) + +cc_library( + name = "OMEnableMemoryPool", + srcs = ["EnableMemoryPool.cpp"], + deps = [ + "//src/Conversion/ONNXToKrnl:OMONNXToKrnl", + # "@onnx", + ], +) + +cc_library( + name = "OMBundleMemoryPools", + srcs = ["BundleMemoryPools.cpp"], + deps = [ + "//src/Conversion/ONNXToKrnl:OMONNXToKrnl", + # "@onnx", + ], +) + +cc_library( + name = "OMDisconnectKrnlDimFromAlloc", + srcs = ["DisconnectKrnlDimFromAlloc.cpp"], + deps = [ + "//src/Conversion/ONNXToKrnl:OMONNXToKrnl", + # "@onnx", + ], +) + +cc_library( + name = "OMLowerKrnlShape", + srcs = ["LowerKrnlShape.cpp"], + deps = [ + "//src/Conversion/ONNXToKrnl:OMONNXToKrnl", + ], +) diff --git a/src/Transform/ONNX/BUILD b/src/Transform/ONNX/BUILD new file mode 100644 index 0000000..c7b7748 --- /dev/null +++ b/src/Transform/ONNX/BUILD @@ -0,0 +1,116 @@ +package( + default_visibility = ["//visibility:public"], +) + +cc_library( + name = "OMAttributePromotion", + srcs = ["AttributePromotion.cpp"], + copts = [], + deps = [ + "//src/Dialect/ONNX:OMONNXOps", + "//src/Pass:Passes", + "@llvm-project//mlir:StandardOps", + "@onnx", + ], +) + +cc_library( + name = "OMElideConstants", + srcs = ["ElideConstants.cpp"], + copts = [], + deps = [ + "//src/Dialect/ONNX:OMONNXOps", + "//src/Pass:Passes", + "@llvm-project//mlir:StandardOps", + "@onnx", + ], +) + +load("@llvm-project//mlir:tblgen.bzl", "gentbl") + +gentbl( + name = "OMONNXRewriteIncGen", + tbl_outs = [ + ("-gen-rewriters", "ONNXRewrite.inc"), + ], + tblgen = "@llvm-project//mlir:mlir-tblgen", + td_file = "Rewrite.td", + td_includes = ["."], + td_srcs = [ + "@llvm-project//mlir:TdFiles", + ], +) + +gentbl( + name = "OMONNXCombineIncGen", + tbl_outs = [ + ("-gen-rewriters", "ONNXCombine.inc"), + ], + tblgen = "@llvm-project//mlir:mlir-tblgen", + td_file = "Combine.td", + td_includes = ["."], + td_srcs = [ + "@llvm-project//mlir:TdFiles", + ], +) + +gentbl( + name = "OMONNXDecomposeIncGen", + tbl_outs = [ + ("-gen-rewriters", "ONNXDecompose.inc"), + ], + tblgen = "@llvm-project//mlir:mlir-tblgen", + td_file = "Decompose.td", + td_includes = ["."], + td_srcs = [ + "@llvm-project//mlir:TdFiles", + ], +) + +gentbl( + name = "OMONNXConstPropIncGen", + tbl_outs = [ + ("-gen-rewriters", "ONNXConstProp.inc"), + ], + tblgen = "@llvm-project//mlir:mlir-tblgen", + td_file = "ConstProp.td", + td_includes = ["."], + td_srcs = [ + "@llvm-project//mlir:TdFiles", + ], +) + +cc_library( + name = "OMONNXRewrite", + srcs = [ + "Combine.cpp", + "ConstProp.cpp", + "Decompose.cpp", + "Rewrite.cpp", + ], + copts = [], + deps = [ + ":OMONNXCombineIncGen", + ":OMONNXConstPropIncGen", + ":OMONNXDecomposeIncGen", + ":OMONNXRewriteIncGen", + "//src/Dialect/ONNX:OMONNXOps", + "//src/Pass:Passes", + "@llvm-project//mlir:StandardOps", + "@onnx", + ], + alwayslink = 1, +) + +cc_library( + name = "OMShapeInference", + srcs = [ + "ShapeInferencePass.cpp", + ], + copts = [], + deps = [ + "//src/Interface:OMShapeInferenceOpInterface", + "//src/Pass:Passes", + "@llvm-project//mlir:StandardOps", + ], +) diff --git a/third_party/llvm-project b/third_party/llvm-project deleted file mode 160000 index 1d01fc1..0000000 --- a/third_party/llvm-project +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 1d01fc100bb5bef5f5eaf92520b2e52f64ee1d6e diff --git a/third_party/pybind11.BUILD b/third_party/pybind11.BUILD new file mode 100644 index 0000000..9605ca4 --- /dev/null +++ b/third_party/pybind11.BUILD @@ -0,0 +1,8 @@ +package(default_visibility = ["//visibility:public"]) + +cc_library( + name = "pybind11", + hdrs = glob(["include/**/*."]), + includes = ["include"], +) +