From 43dc1a1e0146f1e3e229e55b3e9fa3e4fefda43b Mon Sep 17 00:00:00 2001 From: gongsu832 Date: Mon, 8 Jun 2020 22:38:32 -0400 Subject: [PATCH] Fix header dep (#150) * Detect llvm-project commit change in utils/clone-mlir.sh and rebuild llvm-project for zLinux Jenkins build bot * Since many headers are generated and included indirectly through other headers, there are often missing dependencies that break parallel build. So we add header targets for KrnlOps, ONNXOps, and MLONNXOps, and add explicit dependencies for all the relevant headers. * fix copy-and-paste bug Co-authored-by: Tian Jin --- src/Builder/CMakeLists.txt | 3 +++ src/CMakeLists.txt | 2 ++ src/Conversion/ONNXToKrnl/CMakeLists.txt | 7 +++--- src/Dialect/Krnl/CMakeLists.txt | 6 +++++- src/Dialect/MLONNX/CMakeLists.txt | 12 +++++++++-- src/Dialect/ONNX/CMakeLists.txt | 10 ++++++++- src/Tool/ONNXMLIROpt/CMakeLists.txt | 2 +- src/Transform/CMakeLists.txt | 27 ++++++++++++------------ src/Transform/ONNX/CMakeLists.txt | 27 +++++++++++++++--------- 9 files changed, 65 insertions(+), 31 deletions(-) diff --git a/src/Builder/CMakeLists.txt b/src/Builder/CMakeLists.txt index bf89da7..d42a867 100644 --- a/src/Builder/CMakeLists.txt +++ b/src/Builder/CMakeLists.txt @@ -23,12 +23,15 @@ target_include_directories(OMBuilder ${ONNX_MLIR_SRC_ROOT}/third_party/onnx ${ONNX_MLIR_SRC_ROOT}/third_party/variant ${ONNX_MLIR_SRC_ROOT}) + # If you add onnx here, it will also cause onnx to be built. However, some # variable definitions when building onnx such as -DONNX_ML=1 -DONNX_NAMESPACE=onnx # will NOT be carried over when compiling FrontendDialectHelper.cpp, etc. so # the compilation will fail. +add_dependencies(OMBuilder OMONNXOpsInc) add_dependencies(OMBuilder OMONNXOps OMResultTypeInferenceOpInterface) if (INCLUDE_ONNX_ML) + add_dependencies(OMBuilder OMMLONNXOpsInc) add_dependencies(OMBuilder OMMLONNXOps) endif() diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 9f93e29..9a92f3c 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -63,9 +63,11 @@ target_link_libraries(MainUtils OMONNXRewrite ${MLIRLibs} ${CMAKE_DL_LIBS}) +add_dependencies(onnx-mlir OMKrnlOpsInc OMONNXOpsInc) if (INCLUDE_ONNX_ML) target_link_libraries(MainUtils OMMLONNXOps) + add_dependencies(MainUtils OMMLONNXOpsInc) endif() target_include_directories(onnx-mlir PRIVATE ${ONNX_MLIR_SRC_ROOT}) diff --git a/src/Conversion/ONNXToKrnl/CMakeLists.txt b/src/Conversion/ONNXToKrnl/CMakeLists.txt index aa2859c..27d6580 100644 --- a/src/Conversion/ONNXToKrnl/CMakeLists.txt +++ b/src/Conversion/ONNXToKrnl/CMakeLists.txt @@ -29,6 +29,7 @@ target_include_directories(OMONNXToKrnl ${ONNX_MLIR_BIN_ROOT} ${ONNX_MLIR_SRC_ROOT}) -# Linking dependencies: -add_dependencies(OMONNXToKrnl - OMKrnlOps) +# Header dependencies +add_dependencies(OMONNXToKrnl OMKrnlOpsInc OMONNXOpsInc) +# Linking dependencies +add_dependencies(OMONNXToKrnl OMKrnlOps) diff --git a/src/Dialect/Krnl/CMakeLists.txt b/src/Dialect/Krnl/CMakeLists.txt index b1dd052..eddd504 100644 --- a/src/Dialect/Krnl/CMakeLists.txt +++ b/src/Dialect/Krnl/CMakeLists.txt @@ -3,6 +3,10 @@ onnx_mlir_tablegen(KrnlOps.hpp.inc -gen-op-decls) onnx_mlir_tablegen(KrnlOps.cpp.inc -gen-op-defs) add_public_tablegen_target(OMKrnlOpsIncGen) +# Header dependencies target for KrnOps.hpp +add_custom_target(OMKrnlOpsInc + DEPENDS OMKrnlOpsIncGen) + add_library(OMKrnlOps KrnlOps.hpp KrnlOps.cpp @@ -15,4 +19,4 @@ target_include_directories(OMKrnlOps ${ONNX_MLIR_SRC_ROOT} ${ONNX_MLIR_BIN_ROOT} ${ONNX_MLIR_SRC_ROOT}) -add_dependencies(OMKrnlOps OMKrnlOpsIncGen) \ No newline at end of file +add_dependencies(OMKrnlOps OMKrnlOpsInc) diff --git a/src/Dialect/MLONNX/CMakeLists.txt b/src/Dialect/MLONNX/CMakeLists.txt index 6f50aea..7b29c75 100644 --- a/src/Dialect/MLONNX/CMakeLists.txt +++ b/src/Dialect/MLONNX/CMakeLists.txt @@ -5,6 +5,13 @@ onnx_mlir_tablegen(MLONNXOps.cpp.inc -gen-op-defs "-I${ONNX_MLIR_SRC_ROOT}/compi set(GEN_DOC_FILE ${CMAKE_BINARY_DIR}/docs/Dialects/mlonnx.md) add_public_tablegen_target(OMMLONNXOpsIncGen) +# Header dependencies target for MLONNXOps.hpp +add_custom_target(OMMLONNXOpsInc + DEPENDS OMMLONNXOpsIncGen + OMPromotableConstOperandsOpInterfaceIncGen + OMResultTypeInferenceOpInterfaceIncGen + ShapeInferenceOpInterfaceIncGen) + add_library(OMMLONNXOps MLONNXOps.cpp MLONNXOps.hpp) @@ -13,8 +20,9 @@ target_include_directories(OMMLONNXOps ${ONNX_MLIR_SRC_ROOT} ${ONNX_MLIR_BIN_ROOT} ${ONNX_MLIR_SRC_ROOT}) -add_dependencies(OMMLONNXOps OMMLONNXOpsIncGen) -# Linking dependencies: +# Header dependencies +add_dependencies(OMMLONNXOps OMMLONNXOpsInc) +# Linking dependencies add_dependencies(OMMLONNXOps OMPromotableConstOperandsOpInterface OMResultTypeInferenceOpInterface diff --git a/src/Dialect/ONNX/CMakeLists.txt b/src/Dialect/ONNX/CMakeLists.txt index cf9acfa..f22ded0 100644 --- a/src/Dialect/ONNX/CMakeLists.txt +++ b/src/Dialect/ONNX/CMakeLists.txt @@ -4,6 +4,13 @@ onnx_mlir_tablegen(ONNXOps.cpp.inc -gen-op-defs "-I${ONNX_MLIR_SRC_ROOT}/compile set(GEN_DOC_FILE ${CMAKE_BINARY_DIR}/docs/Dialects/onnx.md) add_public_tablegen_target(OMONNXOpsIncGen) +# Header dependencies target for ONNXOps.hpp +add_custom_target(OMONNXOpsInc + DEPENDS OMONNXOpsIncGen + OMPromotableConstOperandsOpInterfaceIncGen + OMResultTypeInferenceOpInterfaceIncGen + ShapeInferenceOpInterfaceIncGen) + add_library(OMONNXOps ONNXOps.cpp ONNXOps.hpp @@ -14,9 +21,10 @@ target_include_directories(OMONNXOps ${ONNX_MLIR_SRC_ROOT} ${ONNX_MLIR_BIN_ROOT} ${ONNX_MLIR_SRC_ROOT}) + +add_dependencies(OMONNXOps OMONNXOpsIncGen) target_link_libraries(OMONNXOps onnx) -add_dependencies(OMONNXOps OMONNXOpsIncGen) # Linking dependencies: add_dependencies(OMONNXOps OMPromotableConstOperandsOpInterface diff --git a/src/Tool/ONNXMLIROpt/CMakeLists.txt b/src/Tool/ONNXMLIROpt/CMakeLists.txt index d135c21..5de897b 100644 --- a/src/Tool/ONNXMLIROpt/CMakeLists.txt +++ b/src/Tool/ONNXMLIROpt/CMakeLists.txt @@ -1,5 +1,5 @@ add_executable(onnx-mlir-opt ONNXMLIROpt.cpp) -add_dependencies(onnx-mlir-opt OMKrnlOpsIncGen) +add_dependencies(onnx-mlir-opt OMKrnlOpsInc OMONNXOpsInc) target_include_directories(onnx-mlir-opt PRIVATE ${ONNX_MLIR_SRC_ROOT}) target_include_directories(onnx-mlir-opt PRIVATE ${ONNX_MLIR_BIN_ROOT}) diff --git a/src/Transform/CMakeLists.txt b/src/Transform/CMakeLists.txt index f3e2105..64a28ab 100644 --- a/src/Transform/CMakeLists.txt +++ b/src/Transform/CMakeLists.txt @@ -5,11 +5,10 @@ target_include_directories(OMKrnlToAffine ${ONNX_MLIR_SRC_ROOT} ${ONNX_MLIR_BIN_ROOT} ${ONNX_MLIR_SRC_ROOT}) - -# Linking dependencies: -add_dependencies(OMKrnlToAffine - OMKrnlOps - OMONNXOps) +# Header dependencies +add_dependencies(OMKrnlToAffine OMKrnlOpsInc) +# Linking dependencies +add_dependencies(OMKrnlToAffine OMKrnlOps) add_library(OMKrnlToLLVM LowerToLLVM.cpp) @@ -18,14 +17,15 @@ target_include_directories(OMKrnlToLLVM ${ONNX_MLIR_SRC_ROOT} ${ONNX_MLIR_BIN_ROOT} ${ONNX_MLIR_SRC_ROOT}) + +# Header dependencies +add_dependencies(OMKrnlToLLVM OMKrnlOpsInc OMONNXOpsInc) +# Linking dependencies +add_dependencies(OMKrnlToLLVM OMKrnlOps OMONNXOps) + target_link_libraries(OMKrnlToLLVM onnx) -#Linking dependencies: -add_dependencies(OMKrnlToLLVM - OMKrnlOps - OMONNXOps) - add_library(OMElideKrnlGlobalConstants ElideKrnlGlobalConstants.cpp) target_include_directories(OMElideKrnlGlobalConstants @@ -33,8 +33,9 @@ target_include_directories(OMElideKrnlGlobalConstants ${ONNX_MLIR_SRC_ROOT} ${ONNX_MLIR_BIN_ROOT} ${ONNX_MLIR_SRC_ROOT}) -add_dependencies(OMElideKrnlGlobalConstants - OMKrnlOps - OMONNXOps) +# Header dependencies +add_dependencies(OMElideKrnlGlobalConstants OMKrnlOpsInc) +# Linking dependencies +add_dependencies(OMElideKrnlGlobalConstants OMKrnlOps) add_subdirectory(ONNX) diff --git a/src/Transform/ONNX/CMakeLists.txt b/src/Transform/ONNX/CMakeLists.txt index 1f7f896..b243b17 100644 --- a/src/Transform/ONNX/CMakeLists.txt +++ b/src/Transform/ONNX/CMakeLists.txt @@ -3,8 +3,10 @@ add_library(OMAttributePromotion target_include_directories(OMAttributePromotion PRIVATE ${ONNX_MLIR_SRC_ROOT} ${ONNX_MLIR_BIN_ROOT} ${ONNF_MLIR_SRC_ROOT}) - -# Linking dependencies: +# Header dependencies +add_dependencies(OMAttributePromotion + OMONNXOpsInc OMPromotableConstOperandsOpInterfaceIncGen) +# Linking dependencies add_dependencies(OMAttributePromotion OMPromotableConstOperandsOpInterface) target_link_libraries(OMAttributePromotion @@ -16,8 +18,11 @@ target_include_directories(OMElideConstants PRIVATE ${ONNX_MLIR_SRC_ROOT} ${ONNX_MLIR_BIN_ROOT} ${ONNF_MLIR_SRC_ROOT}) -add_dependencies(OMElideConstants - OMONNXOps) +# Header dependencies +add_dependencies(OMElideConstants OMONNXOpsInc) +# Linking dependencies +add_dependencies(OMElideConstants OMONNXOps) + target_link_libraries(OMElideConstants onnx) @@ -45,14 +50,16 @@ add_library(OMONNXRewrite target_include_directories(OMONNXRewrite PRIVATE ${ONNX_MLIR_SRC_ROOT} ${ONNX_MLIR_BIN_ROOT} ${ONNF_MLIR_SRC_ROOT}) +# Header dependencies add_dependencies(OMONNXRewrite + OMONNXOpsInc OMONNXRewriteIncGen OMONNXDecomposeIncGen OMONNXCombineIncGen OMONNXConstPropIncGen) -# Linking dependencies: -add_dependencies(OMONNXRewrite - OMONNXOps) + +# Linking dependencies +add_dependencies(OMONNXRewrite OMONNXOps) target_link_libraries(OMONNXRewrite onnx) @@ -60,7 +67,7 @@ add_library(OMShapeInference ShapeInferencePass.cpp) target_include_directories(OMShapeInference PRIVATE ${ONNX_MLIR_SRC_ROOT} ${ONNX_MLIR_BIN_ROOT} ${ONNX_MLIR_SRC_ROOT}) +# Header dependencies add_dependencies(OMShapeInference ShapeInferenceOpInterfaceIncGen) -# Linking dependencies: -add_dependencies(OMShapeInference - OMShapeInferenceOpInterface) +# Linking dependencies +add_dependencies(OMShapeInference OMShapeInferenceOpInterface)