Skip to content

Commit 7d18fd8

Browse files
authored
[Gluon] Move gluon-specific passes into gluon dialect (#7489)
This renames `--tritongpu-canonicalize` -> `--gluon-canonicalize` and also makes the gluon inliner pass into a real mlir pass so it can be called from `triton-opt` as `--gluon-inline`.
1 parent 4646873 commit 7d18fd8

File tree

9 files changed

+73
-34
lines changed

9 files changed

+73
-34
lines changed

include/triton/Dialect/Gluon/Transforms/Passes.td

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,28 @@ def GluonResolveAutoEncodingsPass : Pass<"gluon-resolve-auto-encodings", "mlir::
1111

1212
}
1313

14+
def GluonCanonicalize: Pass<"gluon-canonicalize"> {
15+
let summary = "reduced set of simplifications for TTGIR";
16+
17+
let description = [{
18+
The `gluon-canonicalize` pass applies a reduced set of simplification
19+
and canonicalization patterns to the module.
20+
}];
21+
let dependentDialects = [
22+
"mlir::arith::ArithDialect",
23+
"mlir::cf::ControlFlowDialect",
24+
"mlir::scf::SCFDialect",
25+
];
26+
}
27+
28+
def GluonInline: Pass<"gluon-inline"> {
29+
let summary = "reduced set of simplifications for TTGIR";
30+
31+
let description = [{
32+
The `gluon-inline` pass applies a reduced set of simplification
33+
and canonicalization patterns to the module.
34+
}];
35+
let dependentDialects = [];
36+
}
37+
1438
#endif

include/triton/Dialect/TritonGPU/Transforms/Passes.td

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -360,18 +360,4 @@ def TritonGPUCoalesceAsyncCopy: Pass<"tritongpu-coalesce-async-copy", "mlir::Mod
360360
"mlir::triton::TritonDialect"];
361361
}
362362

363-
def TritonGPUCanonicalize: Pass<"tritongpu-canonicalize"> {
364-
let summary = "reduced set of simplifications for TTGIR";
365-
366-
let description = [{
367-
The `tritongpu-canonicalize` pass applies a reduced set of simplification
368-
and canonicalization patterns to the module.
369-
}];
370-
let dependentDialects = [
371-
"mlir::arith::ArithDialect",
372-
"mlir::cf::ControlFlowDialect",
373-
"mlir::scf::SCFDialect",
374-
];
375-
}
376-
377363
#endif

lib/Dialect/Gluon/Transforms/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
add_triton_library(GluonTransforms
2+
Canonicalize.cpp
3+
Inline.cpp
24
ResolveAutoEncodings.cpp
35

46
DEPENDS

lib/Dialect/TritonGPU/Transforms/Canonicalize.cpp renamed to lib/Dialect/Gluon/Transforms/Canonicalize.cpp

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,28 @@
1+
#include "triton/Dialect/Gluon/Transforms/Passes.h"
2+
3+
#include "triton/Dialect/TritonGPU/IR/Dialect.h"
4+
#include "triton/Dialect/TritonGPU/Transforms/Utility.h"
5+
#include "triton/Dialect/TritonNvidiaGPU/IR/Dialect.h"
6+
17
#include "mlir/Dialect/Arith/IR/Arith.h"
28
#include "mlir/Dialect/ControlFlow/IR/ControlFlow.h"
39
#include "mlir/Dialect/SCF/IR/SCF.h"
410
#include "mlir/Pass/Pass.h"
511
#include "mlir/Transforms/GreedyPatternRewriteDriver.h"
6-
#include "triton/Dialect/TritonGPU/IR/Dialect.h"
7-
#include "triton/Dialect/TritonGPU/Transforms/Utility.h"
8-
#include "triton/Dialect/TritonNvidiaGPU/IR/Dialect.h"
912

1013
using namespace mlir;
1114
using namespace triton;
1215
namespace ttg = triton::gpu;
1316
namespace ttng = triton::nvidia_gpu;
17+
namespace gluon = mlir::triton::gluon;
1418

15-
namespace mlir::triton::gpu {
16-
#define GEN_PASS_DEF_TRITONGPUCANONICALIZE
17-
#include "triton/Dialect/TritonGPU/Transforms/Passes.h.inc"
18-
} // namespace mlir::triton::gpu
19+
namespace mlir::triton::gluon {
20+
#define GEN_PASS_DEF_GLUONCANONICALIZE
21+
#include "triton/Dialect/Gluon/Transforms/Passes.h.inc"
22+
} // namespace mlir::triton::gluon
1923

2024
namespace {
21-
struct Canonicalize
22-
: public ttg::impl::TritonGPUCanonicalizeBase<Canonicalize> {
25+
struct Canonicalize : public gluon::impl::GluonCanonicalizeBase<Canonicalize> {
2326
void runOnOperation() override;
2427
};
2528
} // namespace
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
#include "triton/Dialect/Gluon/Transforms/Passes.h"
2+
3+
#include "mlir/Pass/Pass.h"
4+
#include "mlir/Pass/PassManager.h"
5+
#include "mlir/Transforms/Passes.h"
6+
7+
using namespace mlir;
8+
using namespace triton;
9+
namespace gluon = mlir::triton::gluon;
10+
11+
namespace mlir::triton::gluon {
12+
#define GEN_PASS_DEF_GLUONINLINE
13+
#include "triton/Dialect/Gluon/Transforms/Passes.h.inc"
14+
} // namespace mlir::triton::gluon
15+
16+
namespace {
17+
struct Inline : public gluon::impl::GluonInlineBase<Inline> {
18+
void runOnOperation() override;
19+
};
20+
} // namespace
21+
22+
void Inline::runOnOperation() {
23+
mlir::PassManager pm(&getContext());
24+
pm.addPass(createInlinerPass(/*opPipelines=*/{}, [](OpPassManager &pm) {
25+
pm.addPass(gluon::createGluonCanonicalize());
26+
}));
27+
if (failed(pm.run(getOperation())))
28+
return signalPassFailure();
29+
}

lib/Dialect/TritonGPU/Transforms/CMakeLists.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
add_triton_library(TritonGPUTransforms
22
AccelerateMatmul.cpp
3-
Canonicalize.cpp
43
Coalesce.cpp
54
F32DotTC.cpp
65
FuseNestedLoops.cpp

python/src/passes.cc

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -89,12 +89,6 @@ void init_triton_passes_ttgpuir(py::module &&m) {
8989
ADD_PASS_WRAPPER_0("add_fuse_nested_loops", createTritonGPUFuseNestedLoops);
9090
ADD_PASS_WRAPPER_0("add_coalesce_async_copy",
9191
createTritonGPUCoalesceAsyncCopy);
92-
ADD_PASS_WRAPPER_0("add_canonicalizer", createTritonGPUCanonicalize);
93-
ADD_PASS_WRAPPER_0("add_inliner", [] {
94-
return createInlinerPass(/*opPipelines=*/{}, [](OpPassManager &pm) {
95-
pm.addPass(createTritonGPUCanonicalize());
96-
});
97-
});
9892
ADD_PASS_WRAPPER_0("add_concurrency_sanitizer",
9993
createTritonInstrumentConcurrencySanitizer);
10094
}
@@ -117,6 +111,8 @@ void init_gluon_passes(py::module &&m) {
117111
namespace gluon = mlir::triton::gluon;
118112
ADD_PASS_WRAPPER_0("add_resolve_auto_encodings",
119113
gluon::createGluonResolveAutoEncodingsPass);
114+
ADD_PASS_WRAPPER_0("add_canonicalizer", gluon::createGluonCanonicalize);
115+
ADD_PASS_WRAPPER_0("add_inliner", gluon::createGluonInline);
120116
}
121117

122118
void init_triton_passes(py::module &&m) {

third_party/amd/backend/compiler.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -270,11 +270,11 @@ def gluon_to_ttgir(src, metadata, options):
270270
pm = ir.pass_manager(mod.context)
271271
pm.enable_debug()
272272

273-
passes.ttgpuir.add_inliner(pm)
273+
passes.gluon.add_inliner(pm)
274274
passes.gluon.add_resolve_auto_encodings(pm)
275275
passes.common.add_sccp(pm)
276276
passes.ttir.add_loop_aware_cse(pm)
277-
passes.ttgpuir.add_canonicalizer(pm)
277+
passes.gluon.add_canonicalizer(pm)
278278
passes.ttgpuir.add_combine_tensor_select_and_if(pm)
279279

280280
pm.run(mod)

third_party/nvidia/backend/compiler.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -314,11 +314,11 @@ def gluon_to_ttgir(self, src, metadata, options, capability):
314314
pm = ir.pass_manager(mod.context)
315315
pm.enable_debug()
316316

317-
passes.ttgpuir.add_inliner(pm)
317+
passes.gluon.add_inliner(pm)
318318
passes.gluon.add_resolve_auto_encodings(pm)
319319
passes.common.add_sccp(pm)
320320
passes.ttir.add_loop_aware_cse(pm)
321-
passes.ttgpuir.add_canonicalizer(pm)
321+
passes.gluon.add_canonicalizer(pm)
322322
passes.ttgpuir.add_combine_tensor_select_and_if(pm)
323323

324324
pm.run(mod)

0 commit comments

Comments
 (0)