-
Notifications
You must be signed in to change notification settings - Fork 14.1k
[mlir][test] Shard the Test Dialect (NFC) #89628
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
This PR uses the new op sharding mechanism in tablegen to shard the test dialect's op definitions. This breaks the definition of ops into multiple source files, speeding up compile time of the test dialect dramatically. This improves developer cycle times when iterating on the test dialect. stack-info: PR: #89628, branch: users/Mogball/stack/1
498ea49
to
478b4e8
Compare
@llvm/pr-subscribers-llvm-ir @llvm/pr-subscribers-mlir Author: Jeff Niu (Mogball) ChangesStacked PRs:
[mlir][test] Shard the Test Dialect (NFC)This PR uses the new op sharding mechanism in tablegen to shard the test Full diff: https://github.com/llvm/llvm-project/pull/89628.diff 4 Files Affected:
diff --git a/mlir/test/lib/Dialect/Test/CMakeLists.txt b/mlir/test/lib/Dialect/Test/CMakeLists.txt
index f63e4d330e6ac1..fab89378093326 100644
--- a/mlir/test/lib/Dialect/Test/CMakeLists.txt
+++ b/mlir/test/lib/Dialect/Test/CMakeLists.txt
@@ -31,8 +31,6 @@ mlir_tablegen(TestOpEnums.cpp.inc -gen-enum-defs)
add_public_tablegen_target(MLIRTestEnumDefIncGen)
set(LLVM_TARGET_DEFINITIONS TestOps.td)
-mlir_tablegen(TestOps.h.inc -gen-op-decls)
-mlir_tablegen(TestOps.cpp.inc -gen-op-defs)
mlir_tablegen(TestOpsDialect.h.inc -gen-dialect-decls -dialect=test)
mlir_tablegen(TestOpsDialect.cpp.inc -gen-dialect-defs -dialect=test)
mlir_tablegen(TestPatterns.inc -gen-rewriters)
@@ -43,6 +41,8 @@ mlir_tablegen(TestOpsSyntax.h.inc -gen-op-decls)
mlir_tablegen(TestOpsSyntax.cpp.inc -gen-op-defs)
add_public_tablegen_target(MLIRTestOpsSyntaxIncGen)
+add_sharded_ops(TestOps 20)
+
# Exclude tests from libMLIR.so
add_mlir_library(MLIRTestDialect
TestAttributes.cpp
@@ -56,6 +56,7 @@ add_mlir_library(MLIRTestDialect
TestTypes.cpp
TestOpsSyntax.cpp
TestDialectInterfaces.cpp
+ ${SHARDED_SRCS}
EXCLUDE_FROM_LIBMLIR
@@ -66,6 +67,7 @@ add_mlir_library(MLIRTestDialect
MLIRTestTypeDefIncGen
MLIRTestOpsIncGen
MLIRTestOpsSyntaxIncGen
+ MLIRTestOpsShardGen
LINK_LIBS PUBLIC
MLIRControlFlowInterfaces
diff --git a/mlir/test/lib/Dialect/Test/TestDialect.cpp b/mlir/test/lib/Dialect/Test/TestDialect.cpp
index 77fd7e61bd3a06..bfb9592e638288 100644
--- a/mlir/test/lib/Dialect/Test/TestDialect.cpp
+++ b/mlir/test/lib/Dialect/Test/TestDialect.cpp
@@ -326,12 +326,9 @@ struct TestOpEffectInterfaceFallback
void TestDialect::initialize() {
registerAttributes();
registerTypes();
- addOperations<
-#define GET_OP_LIST
-#include "TestOps.cpp.inc"
- >();
registerOpsSyntax();
addOperations<ManualCppOpWithFold>();
+ registerTestDialectOperations(this);
registerDynamicOp(getDynamicGenericOp(this));
registerDynamicOp(getDynamicOneOperandTwoResultsOp(this));
registerDynamicOp(getDynamicCustomParserPrinterOp(this));
diff --git a/mlir/test/lib/Dialect/Test/TestOps.cpp b/mlir/test/lib/Dialect/Test/TestOps.cpp
index ce7e476be74e65..47d5b1b19121ef 100644
--- a/mlir/test/lib/Dialect/Test/TestOps.cpp
+++ b/mlir/test/lib/Dialect/Test/TestOps.cpp
@@ -14,5 +14,4 @@
using namespace mlir;
using namespace test;
-#define GET_OP_CLASSES
#include "TestOps.cpp.inc"
diff --git a/utils/bazel/llvm-project-overlay/mlir/test/BUILD.bazel b/utils/bazel/llvm-project-overlay/mlir/test/BUILD.bazel
index dc5f4047c286db..b98f7eb5613af4 100644
--- a/utils/bazel/llvm-project-overlay/mlir/test/BUILD.bazel
+++ b/utils/bazel/llvm-project-overlay/mlir/test/BUILD.bazel
@@ -4,7 +4,7 @@
load("@bazel_skylib//rules:expand_template.bzl", "expand_template")
load("//llvm:lit_test.bzl", "package_path")
-load("//mlir:tblgen.bzl", "gentbl_cc_library", "td_library")
+load("//mlir:tblgen.bzl", "gentbl_cc_library", "td_library", "gentbl_sharded_ops", "td_library")
package(
default_visibility = ["//visibility:public"],
@@ -151,14 +151,6 @@ gentbl_cc_library(
name = "TestOpsIncGen",
strip_include_prefix = "lib/Dialect/Test",
tbl_outs = [
- (
- ["-gen-op-decls"],
- "lib/Dialect/Test/TestOps.h.inc",
- ),
- (
- ["-gen-op-defs"],
- "lib/Dialect/Test/TestOps.cpp.inc",
- ),
(
[
"-gen-dialect-decls",
@@ -370,12 +362,25 @@ cc_library(
],
)
+gentbl_sharded_ops(
+ name = "TestDialectOpSrcs",
+ hdr_out = "lib/Dialect/Test/TestOps.h.inc",
+ shard_count = 20,
+ sharder = "//mlir:mlir-src-sharder",
+ src_file = "lib/Dialect/Test/TestOps.cpp",
+ src_out = "lib/Dialect/Test/TestOps.cpp.inc",
+ tblgen = "//mlir:mlir-tblgen",
+ td_file = "lib/Dialect/Test/TestOps.td",
+ test = True,
+ deps = [":TestOpTdFiles"],
+)
+
cc_library(
name = "TestDialect",
srcs = glob(
["lib/Dialect/Test/*.cpp"],
exclude = ["lib/Dialect/Test/TestToLLVMIRTranslation.cpp"],
- ),
+ ) + [":TestDialectOpSrcs"],
hdrs = glob(["lib/Dialect/Test/*.h"]),
includes = [
"lib/Dialect/Test",
|
5bfaf90
to
75068fa
Compare
75068fa
to
478b4e8
Compare
This reverts commit ae22ac9.
* [LLVM] Add LLVM_full, LLVM_full_assert 19 recipes * Update patch * Test fixes * Test another fix * Try less targeted fix * Remove assert bundled * Add assert bundled * Adapt to llvm/llvm-project#89628 * Workaround llvm/llvm-project#106899 * Include less patches to llvm * Fix `DMLIR_SRC_SHARDER_TABLEGEN` * Just set `LLVM_NATIVE_TOOL_DIR` instead * Trigger rebuilds * Build off of Julia Fork * Fix tag * Set correct version * Set correct version * Update L/LLVM/common.jl * Update L/LLVM/common.jl * [LLVM] Upgrade to v19.1.1 * Bump LLVM version * Apply suggestions from code review * Bump LLVM Co-authored-by: Mosè Giordano <[email protected]> * rebuild * rebuild --------- Co-authored-by: Zentrik <[email protected]> Co-authored-by: Mosè Giordano <[email protected]> Co-authored-by: Mosè Giordano <[email protected]>
* [LLVM] Add LLVM_full, LLVM_full_assert 19 recipes * Update patch * Test fixes * Test another fix * Try less targeted fix * Remove assert bundled * Add assert bundled * Adapt to llvm/llvm-project#89628 * Workaround llvm/llvm-project#106899 * Include less patches to llvm * Fix `DMLIR_SRC_SHARDER_TABLEGEN` * Just set `LLVM_NATIVE_TOOL_DIR` instead * Trigger rebuilds * Build off of Julia Fork * Fix tag * Set correct version * Set correct version * Update L/LLVM/common.jl * Update L/LLVM/common.jl * [LLVM] Upgrade to v19.1.1 * Bump LLVM version * Apply suggestions from code review * Bump LLVM Co-authored-by: Mosè Giordano <[email protected]> * rebuild * rebuild --------- Co-authored-by: Zentrik <[email protected]> Co-authored-by: Mosè Giordano <[email protected]> Co-authored-by: Mosè Giordano <[email protected]>
Stacked PRs:
[mlir][test] Shard the Test Dialect (NFC)
This PR uses the new op sharding mechanism in tablegen to shard the test
dialect's op definitions. This breaks the definition of ops into
multiple source files, speeding up compile time of the test dialect
dramatically. This improves developer cycle times when iterating on the
test dialect.