Skip to content

Commit

Permalink
renaming
Browse files Browse the repository at this point in the history
  • Loading branch information
Yu-Zhewen committed Nov 29, 2024
1 parent 8ff316c commit a53b7db
Show file tree
Hide file tree
Showing 11 changed files with 41 additions and 40 deletions.
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// This pipeline is obtained by going into Passes.cpp, and dumping the pass pipeline (at the end of addAMDAIEObjectFifoLoweringPasses) using `passManager.dump()`. This test is included, as it can be useful to have a reference in IR of all the passes that are run.

// RUN: iree-opt --pass-pipeline="builtin.module(fold-memref-alias-ops,iree-amdaie-distribute-l1-allocations,iree-amdaie-convert-to-dma,iree-amdaie-normalize-loop-bounds,iree-amdaie-insert-cores,iree-amdaie-localize-logicalobjectfifo,cse,iree-amdaie-distribute-cores-and-objectfifos,cse,canonicalize{ max-iterations=10 max-num-rewrites=-1 region-simplify=normal test-convergence=false top-down=true},iree-amdaie-split-logical-objectfifos-for-connection-reuse,cse,canonicalize{ max-iterations=10 max-num-rewrites=-1 region-simplify=normal test-convergence=false top-down=true},iree-amdaie-assign-tiles,cse,canonicalize{ max-iterations=10 max-num-rewrites=-1 region-simplify=normal test-convergence=false top-down=true},iree-amdaie-dma-to-circular-dma,func.func(iree-amdaie-create-aie-workgroup),cse,iree-amdaie-dma-cse,iree-amdaie-hoist-logical-objectfifo,iree-amdaie-canonicalize-doubly-strided-op{fold-single-dims=false},iree-amdaie-flatten-logicalobjectfifo,iree-amdaie-assign-logical-objectfifo-depth{l1-buffer-depth=2 l2-buffer-depth=2 l3-buffer-depth=1},iree-amdaie-access-to-acquire-release,iree-amdaie-none-access-to-temporary-buffer,iree-amdaie-assign-connection-types,cse,canonicalize{ max-iterations=10 max-num-rewrites=-1 region-simplify=normal test-convergence=false top-down=true},iree-amdaie-dma-composition{only-zero-stride-on-outer-dim=true},cse,canonicalize{ max-iterations=10 max-num-rewrites=-1 region-simplify=normal test-convergence=false top-down=true},iree-amdaie-dma-cse,iree-amdaie-assign-npu-dma-bd-ids,cse,canonicalize{ max-iterations=10 max-num-rewrites=-1 region-simplify=normal test-convergence=false top-down=true},iree-amdaie-controlcode-loop-unroll,cse,canonicalize{ max-iterations=10 max-num-rewrites=-1 region-simplify=normal test-convergence=false top-down=true},iree-amdaie-dma-cse,iree-amdaie-canonicalize-doubly-strided-op{fold-single-dims=false},canonicalize{ max-iterations=10 max-num-rewrites=-1 region-simplify=normal test-convergence=false top-down=true},iree-amdaie-convert-core-forall-to-for,canonicalize{ max-iterations=10 max-num-rewrites=-1 region-simplify=normal test-convergence=false top-down=true},iree-amdaie-assign-channels,cse,canonicalize{ max-iterations=10 max-num-rewrites=-1 region-simplify=normal test-convergence=false top-down=true},iree-amdaie-objfifo-bufferization,iree-amdaie-connection-to-flow,iree-amdaie-assign-packet-ids,iree-amdaie-controlcode-to-half-dma-cpy-nd,iree-amdaie-controlcode-to-npu,iree-amdaie-controlcode-to-transaction,iree-amdaie-acquire-release-to-use-lock,iree-amdaie-canonicalize-npu-dma-cpy-nd{nb-dimensions=4},canonicalize{ max-iterations=10 max-num-rewrites=-1 region-simplify=normal test-convergence=false top-down=true},iree-amdaie-sink-into-core,canonicalize{ max-iterations=10 max-num-rewrites=-1 region-simplify=normal test-convergence=false top-down=true},iree-amdaie-lower-to-aie,iree-amdaie-remove-memoryspace)" --split-input-file %s | FileCheck %s
// RUN: iree-opt --pass-pipeline="builtin.module(fold-memref-alias-ops,iree-amdaie-distribute-l1-allocations,iree-amdaie-convert-to-dma,iree-amdaie-normalize-loop-bounds,iree-amdaie-insert-cores,iree-amdaie-localize-logicalobjectfifo,cse,iree-amdaie-distribute-cores-and-objectfifos,cse,canonicalize{ max-iterations=10 max-num-rewrites=-1 region-simplify=normal test-convergence=false top-down=true},iree-amdaie-split-logical-objectfifos-for-connection-reuse,cse,canonicalize{ max-iterations=10 max-num-rewrites=-1 region-simplify=normal test-convergence=false top-down=true},iree-amdaie-assign-tiles,cse,canonicalize{ max-iterations=10 max-num-rewrites=-1 region-simplify=normal test-convergence=false top-down=true},iree-amdaie-dma-to-circular-dma,func.func(iree-amdaie-create-aie-workgroup),cse,iree-amdaie-dma-cse,iree-amdaie-hoist-logical-objectfifo,iree-amdaie-canonicalize-doubly-strided-op{fold-single-dims=false},iree-amdaie-flatten-logicalobjectfifo,iree-amdaie-assign-logical-objectfifo-depth{l1-buffer-depth=2 l2-buffer-depth=2 l3-buffer-depth=1},iree-amdaie-access-to-acquire-release,iree-amdaie-none-access-to-temporary-buffer,iree-amdaie-assign-connection-types,cse,canonicalize{ max-iterations=10 max-num-rewrites=-1 region-simplify=normal test-convergence=false top-down=true},iree-amdaie-dma-composition{only-zero-stride-on-outer-dim=true},cse,canonicalize{ max-iterations=10 max-num-rewrites=-1 region-simplify=normal test-convergence=false top-down=true},iree-amdaie-dma-cse,iree-amdaie-assign-npu-dma-bd-ids,cse,canonicalize{ max-iterations=10 max-num-rewrites=-1 region-simplify=normal test-convergence=false top-down=true},iree-amdaie-controlcode-loop-unroll,cse,canonicalize{ max-iterations=10 max-num-rewrites=-1 region-simplify=normal test-convergence=false top-down=true},iree-amdaie-dma-cse,iree-amdaie-canonicalize-doubly-strided-op{fold-single-dims=false},canonicalize{ max-iterations=10 max-num-rewrites=-1 region-simplify=normal test-convergence=false top-down=true},iree-amdaie-convert-core-forall-to-for,canonicalize{ max-iterations=10 max-num-rewrites=-1 region-simplify=normal test-convergence=false top-down=true},iree-amdaie-assign-channels,cse,canonicalize{ max-iterations=10 max-num-rewrites=-1 region-simplify=normal test-convergence=false top-down=true},iree-amdaie-objfifo-bufferization,iree-amdaie-connection-to-flow,iree-amdaie-assign-packet-ids,iree-amdaie-npu-dma-to-half-dma-cpy-nd,iree-amdaie-controlcode-lowering,iree-amdaie-controlcode-to-transaction,iree-amdaie-acquire-release-to-use-lock,iree-amdaie-canonicalize-npu-dma-cpy-nd{nb-dimensions=4},canonicalize{ max-iterations=10 max-num-rewrites=-1 region-simplify=normal test-convergence=false top-down=true},iree-amdaie-sink-into-core,canonicalize{ max-iterations=10 max-num-rewrites=-1 region-simplify=normal test-convergence=false top-down=true},iree-amdaie-lower-to-aie,iree-amdaie-remove-memoryspace)" --split-input-file %s | FileCheck %s



Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
#include "mlir/Transforms/DialectConversion.h"
#include "mlir/Transforms/GreedyPatternRewriteDriver.h"

#define DEBUG_TYPE "iree-amdaie-controlcode-to-npu"
#define DEBUG_TYPE "iree-amdaie-controlcode-lowering"

namespace mlir::iree_compiler::AMDAIE {

Expand Down Expand Up @@ -216,16 +216,17 @@ struct HalfDmaCpyNdToNpuConverter final
};

namespace {
class AMDAIEControlCodeToNpuPass
: public impl::AMDAIEControlCodeToNpuBase<AMDAIEControlCodeToNpuPass> {
class AMDAIEControlCodeLoweringPass
: public impl::AMDAIEControlCodeLoweringBase<
AMDAIEControlCodeLoweringPass> {
public:
void getDependentDialects(DialectRegistry &registry) const override {
registry.insert<AMDAIEDialect>();
}
void runOnOperation() override;
};

void AMDAIEControlCodeToNpuPass::runOnOperation() {
void AMDAIEControlCodeLoweringPass::runOnOperation() {
Operation *parentOp = getOperation();
MLIRContext *context = &getContext();

Expand Down Expand Up @@ -254,8 +255,8 @@ void AMDAIEControlCodeToNpuPass::runOnOperation() {

} // namespace

std::unique_ptr<Pass> createAMDAIEControlCodeToNpuPass() {
return std::make_unique<AMDAIEControlCodeToNpuPass>();
std::unique_ptr<Pass> createAMDAIEControlCodeLoweringPass() {
return std::make_unique<AMDAIEControlCodeLoweringPass>();
}

} // namespace mlir::iree_compiler::AMDAIE
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,11 @@
#include "mlir/Transforms/DialectConversion.h"
#include "mlir/Transforms/GreedyPatternRewriteDriver.h"

#define DEBUG_TYPE "iree-amdaie-controlcode-to-half-dma-cpy-nd"
#define DEBUG_TYPE "iree-amdaie-npu-dma-to-half-dma-cpy-nd"

namespace mlir::iree_compiler::AMDAIE {

struct DmaCpyNdToHalfDmaCpyNdConverter final
struct NpuDmaToHalfDmaCpyNdConverter final
: OpConversionPattern<AMDAIE::NpuDmaCpyNdOp> {
using OpConversionPattern::OpConversionPattern;

Expand Down Expand Up @@ -93,24 +93,24 @@ struct DmaCpyNdToHalfDmaCpyNdConverter final
};

namespace {
class AMDAIEControlCodeToHalfDmaCpyNdPass
: public impl::AMDAIEControlCodeToHalfDmaCpyNdBase<
AMDAIEControlCodeToHalfDmaCpyNdPass> {
class AMDAIENpuDmaToHalfDmaCpyNdPass
: public impl::AMDAIENpuDmaToHalfDmaCpyNdBase<
AMDAIENpuDmaToHalfDmaCpyNdPass> {
public:
void getDependentDialects(DialectRegistry &registry) const override {
registry.insert<AMDAIEDialect>();
}
void runOnOperation() override;
};

void AMDAIEControlCodeToHalfDmaCpyNdPass::runOnOperation() {
void AMDAIENpuDmaToHalfDmaCpyNdPass::runOnOperation() {
Operation *parentOp = getOperation();
MLIRContext *context = &getContext();
RewritePatternSet patterns(context);
ConversionTarget conversionTarget(*context);
conversionTarget.addLegalDialect<AMDAIEDialect>();
conversionTarget.addIllegalOp<AMDAIE::NpuDmaCpyNdOp>();
patterns.insert<DmaCpyNdToHalfDmaCpyNdConverter>(context);
patterns.insert<NpuDmaToHalfDmaCpyNdConverter>(context);
if (failed(applyPartialConversion(parentOp, conversionTarget,
std::move(patterns)))) {
return signalPassFailure();
Expand All @@ -119,8 +119,8 @@ void AMDAIEControlCodeToHalfDmaCpyNdPass::runOnOperation() {

} // namespace

std::unique_ptr<Pass> createAMDAIEControlCodeToHalfDmaCpyNdPass() {
return std::make_unique<AMDAIEControlCodeToHalfDmaCpyNdPass>();
std::unique_ptr<Pass> createAMDAIENpuDmaToHalfDmaCpyNdPass() {
return std::make_unique<AMDAIENpuDmaToHalfDmaCpyNdPass>();
}

} // namespace mlir::iree_compiler::AMDAIE
Original file line number Diff line number Diff line change
Expand Up @@ -60,8 +60,7 @@ iree_cc_library(
"AMDAIEConnectionToFlow.cpp"
"AMDAIEConvertToDma.cpp"
"AMDAIEControlCodeForallToFor.cpp"
"AMDAIEControlCodeToHalfDmaCpyNd.cpp"
"AMDAIEControlCodeToNpu.cpp"
"AMDAIEControlCodeLowering.cpp"
"AMDAIEControlCodeLoopUnroll.cpp"
"AMDAIEControlCodeToTransaction.cpp"
"AMDAIEConvertCoreForallToFor.cpp"
Expand Down Expand Up @@ -96,6 +95,7 @@ iree_cc_library(
"AMDAIEMapForallToCores.cpp"
"AMDAIENoneAccessToTemporaryBuffer.cpp"
"AMDAIENormalizeLoopBounds.cpp"
"AMDAIENpuDmaToHalfDmaCpyNd.cpp"
"AMDAIEObjFifoBufferization.cpp"
"AMDAIEPackAndTranspose.cpp"
"AMDAIEPad.cpp"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,7 @@ namespace mlir::iree_compiler::AMDAIE {
#define GEN_PASS_DEF_AMDAIECONNECTIONTOFLOW
#define GEN_PASS_DEF_AMDAIECONTROLCODEFORALLTOFOR
#define GEN_PASS_DEF_AMDAIECONTROLCODELOOPUNROLL
#define GEN_PASS_DEF_AMDAIECONTROLCODETOHALFDMACPYND
#define GEN_PASS_DEF_AMDAIECONTROLCODETONPU
#define GEN_PASS_DEF_AMDAIECONTROLCODELOWERING
#define GEN_PASS_DEF_AMDAIECONTROLCODETOTRANSACTION
#define GEN_PASS_DEF_AMDAIECONVERTCOREFORALLTOFOR
#define GEN_PASS_DEF_AMDAIECREATEAIEWORKGROUP
Expand Down Expand Up @@ -74,6 +73,7 @@ namespace mlir::iree_compiler::AMDAIE {
#define GEN_PASS_DEF_AMDAIEMAPFORALLTOCORES
#define GEN_PASS_DEF_AMDAIENONEACCESSTOTEMPORARYBUFFER
#define GEN_PASS_DEF_AMDAIENORMALIZELOOPBOUNDS
#define GEN_PASS_DEF_AMDAIENPUDMATOHALFDMACPYND
#define GEN_PASS_DEF_AMDAIEOBJFIFOBUFFERIZATION
#define GEN_PASS_DEF_AMDAIEPACKANDTRANSPOSE
#define GEN_PASS_DEF_AMDAIECONVERTTODMA
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -664,8 +664,8 @@ void addAMDAIEObjectFifoLoweringPasses(
passManager.addPass(createAMDAIEConnectionToFlowPass());
passManager.addPass(createAMDAIEAssignPacketIdsPass());

passManager.addPass(createAMDAIEControlCodeToHalfDmaCpyNdPass());
passManager.addPass(createAMDAIEControlCodeToNpuPass());
passManager.addPass(createAMDAIENpuDmaToHalfDmaCpyNdPass());
passManager.addPass(createAMDAIEControlCodeLoweringPass());
passManager.addPass(createAMDAIEControlCodeToTransactionPass());

addAMDAIEToAIEPasses(passManager, insertLoopAroundCoreBlock);
Expand Down
10 changes: 5 additions & 5 deletions compiler/plugins/target/AMD-AIE/iree-amd-aie/Transforms/Passes.h
Original file line number Diff line number Diff line change
Expand Up @@ -121,12 +121,9 @@ std::unique_ptr<Pass> createAMDAIEControlCodeForallToForPass();
/// Pass to unroll the loops within the control code regions.
std::unique_ptr<Pass> createAMDAIEControlCodeLoopUnrollPass();

/// Pass to convert control code DMA operations into HalfDmaCpyNd
std::unique_ptr<Pass> createAMDAIEControlCodeToHalfDmaCpyNdPass();

/// Pass to convert control code HalfDmaCpyNd into NPU WriteBd, AddressPatch,
/// PushToQueue operations
std::unique_ptr<Pass> createAMDAIEControlCodeToNpuPass();
/// PushToQueue operations.
std::unique_ptr<Pass> createAMDAIEControlCodeLoweringPass();

/// Pass to convert control code into a transaction binary.
std::unique_ptr<Pass> createAMDAIEControlCodeToTransactionPass(
Expand Down Expand Up @@ -258,6 +255,9 @@ std::unique_ptr<Pass> createAMDAIENoneAccessToTemporaryBufferPass();
/// Normalize the loop bounds of `scf.for` and `scf.forall`.
std::unique_ptr<Pass> createAMDAIENormalizeLoopBoundsPass();

/// Pass to convert control code DMA operations into HalfDmaCpyNd.
std::unique_ptr<Pass> createAMDAIENpuDmaToHalfDmaCpyNdPass();

/// Create a pass to bufferize logical objectFifos.
std::unique_ptr<Pass> createAMDAIEObjFifoBufferizationPass();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -165,16 +165,10 @@ def AMDAIEControlCodeLoopUnroll :
let constructor = "mlir::iree_compiler::AMDAIE::createAMDAIEControlCodeLoopUnrollPass()";
}

def AMDAIEControlCodeToHalfDmaCpyNd :
Pass<"iree-amdaie-controlcode-to-half-dma-cpy-nd", ""> {
let summary = "Lower control code ops to HalfDmaCpyNd operations";
let constructor = "mlir::iree_compiler::AMDAIE::createAMDAIEControlCodeToHalfDmaCpyNdPass()";
}

def AMDAIEControlCodeToNpu :
Pass<"iree-amdaie-controlcode-to-npu", ""> {
def AMDAIEControlCodeLowering :
Pass<"iree-amdaie-controlcode-lowering", ""> {
let summary = "Lower control code ops to the most basic NPU write/sync/patch instructions";
let constructor = "mlir::iree_compiler::AMDAIE::createAMDAIEControlCodeToNpuPass()";
let constructor = "mlir::iree_compiler::AMDAIE::createAMDAIEControlCodeLoweringPass()";
}


Expand Down Expand Up @@ -543,6 +537,12 @@ def AMDAIENormalizeLoopBounds :
let constructor = "mlir::iree_compiler::AMDAIE::createAMDAIENormalizeLoopBoundsPass()";
}

def AMDAIENpuDmaToHalfDmaCpyNd :
Pass<"iree-amdaie-npu-dma-to-half-dma-cpy-nd", ""> {
let summary = "Lower DmaCpNd ops to HalfDmaCpyNd ops";
let constructor = "mlir::iree_compiler::AMDAIE::createAMDAIENpuDmaToHalfDmaCpyNdPass()";
}

def AMDAIEObjFifoBufferization :
Pass<"iree-amdaie-objfifo-bufferization", ""> {
let summary = "Bufferize logical objectFifos.";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,7 @@ iree_lit_test_suite(
"connection_to_flow.mlir"
"controlcode_forall_to_for.mlir"
"controlcode_loop_unrolling.mlir"
"controlcode_to_half_dma_cpy_nd.mlir"
"controlcode_to_npu.mlir"
"controlcode_lowering.mlir"
"controlcode_to_transaction.mlir"
"convert_core_forall_to_for.mlir"
"create_aie_workgroup.mlir"
Expand Down Expand Up @@ -65,6 +64,7 @@ iree_lit_test_suite(
"map_forall_to_cores.mlir"
"none_access_to_temporary_buffer.mlir"
"normalize_loop_bounds.mlir"
"npu_dma_to_half_dma_cpy_nd.mlir"
"obj_fifo_bufferization.mlir"
"pack_and_transpose_level1.mlir"
"pack_and_transpose_level2.mlir"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// RUN: iree-opt --pass-pipeline="builtin.module(iree-amdaie-controlcode-to-npu)" --split-input-file --verify-diagnostics %s | FileCheck %s
// RUN: iree-opt --pass-pipeline="builtin.module(iree-amdaie-controlcode-lowering)" --split-input-file --verify-diagnostics %s | FileCheck %s

// expected-error @+1 {{op has no AMDAIEDevice in the target attribute configuration}}
module {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// RUN: iree-opt --pass-pipeline="builtin.module(iree-amdaie-controlcode-to-half-dma-cpy-nd)" --split-input-file --verify-diagnostics %s | FileCheck %s
// RUN: iree-opt --pass-pipeline="builtin.module(iree-amdaie-npu-dma-to-half-dma-cpy-nd)" --split-input-file --verify-diagnostics %s | FileCheck %s

// CHECK-LABEL: @no_amdaie_device
module {
Expand Down

0 comments on commit a53b7db

Please sign in to comment.