Skip to content

Commit

Permalink
Xsmm dialect cleanup
Browse files Browse the repository at this point in the history
  • Loading branch information
KavithaTipturMadhu committed Oct 9, 2024
1 parent 16b3480 commit 7bbcb5a
Show file tree
Hide file tree
Showing 33 changed files with 7 additions and 3,036 deletions.
5 changes: 1 addition & 4 deletions include/TPP/Dialect/Xsmm/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,8 +1,5 @@
add_mlir_dialect(XsmmOps xsmm)
add_mlir_doc(XsmmDialect XsmmDialect TPP/ -gen-dialect-doc)
add_mlir_doc(XsmmOps XsmmOps TPP/ -gen-op-doc)

set(LLVM_TARGET_DEFINITIONS XsmmEnum.td)
mlir_tablegen(XsmmEnum.h.inc -gen-enum-decls)
mlir_tablegen(XsmmEnum.cpp.inc -gen-enum-defs)
add_public_tablegen_target(MLIRXsmmAttrDefIncGen)

17 changes: 0 additions & 17 deletions include/TPP/Dialect/Xsmm/XsmmDialect.h

This file was deleted.

1 change: 0 additions & 1 deletion include/TPP/Dialect/Xsmm/XsmmEnum.td
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@

include "mlir/IR/AttrTypeBase.td"
include "mlir/IR/EnumAttr.td"
include "TPP/Dialect/Xsmm/XsmmDialect.td"

def Xsmm_DataType: I64EnumAttr<
"DataType", "see: libxsmm_datatype",
Expand Down
23 changes: 0 additions & 23 deletions include/TPP/Dialect/Xsmm/XsmmOps.h

This file was deleted.

28 changes: 0 additions & 28 deletions include/TPP/Dialect/Xsmm/XsmmUtils.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
#define TPP_DIALECT_XSMM_XSMMUTILS_H

#include "TPP/Dialect/Xsmm/XsmmEnum.h"
#include "TPP/Dialect/Xsmm/XsmmOps.h"
#include "TPP/IR/StructuredOpMatcher.h"
#include "mlir/Dialect/Func/IR/FuncOps.h"
#include "mlir/Dialect/Linalg/IR/LinalgInterfaces.h"
Expand Down Expand Up @@ -65,22 +64,6 @@ struct BinaryInfo {
int64_t ldo;
};

/// Represents a chain of XSMM ops that can be fused. All broadcast ops
/// should have already been converted to flags. All stray allocations
/// should have already been converted to in-place reuse.
struct FusedMatch {
// This is the (optional) zero op that precedes the GEMM op
UnaryOp zeroOp;
// This is the BRGEMM op
BrgemmOp brgemmOp;
// This is the (optional) binary op that follows the GEMM
BinaryOp binaryOp;
BinaryKind binaryKind;
// This is the (optional) unary op that follows the GEMM/Binary
UnaryOp unaryOp;
UnaryKind unaryKind;
};

namespace utils {

DataTypeAttr getDataType(RewriterBase &rewriter, Type type);
Expand Down Expand Up @@ -114,23 +97,12 @@ FailureOr<BinaryFlags> getBinaryFlagsVectorType(Type operandType,

FailureOr<int64_t> getLeadingDim(Type type, size_t pos = 0);

FailureOr<FusedMatch> getFusedBrgemmSequenceFromProducer(Operation *op);

ArrayAttr getUnaryDispatchFlags(UnaryOp op);

ArrayAttr getBinaryDispatchFlags(BinaryOp op);

int64_t getOredFlags(ArrayAttr flags);

SmallVector<Type> extractInvokeOperandTypes(OpBuilder &builder,
ValueRange operands);
SmallVector<Value> getOperands(OpBuilder &builder, Location loc,
ValueRange operands, IntegerAttr dataTypeAttr);
template <typename DispatchOpTy>
FailureOr<SmallVector<Attribute>> getBrgemmFlags(PatternRewriter &rewriter,
DispatchOpTy dispatchOpTy,
bool returnNone);

FailureOr<BrgemmInfo> isMappableToBrgemm(PatternRewriter &rewriter,
vector::ContractionOp contractOp,
SmallVector<Value> &inputs,
Expand Down
9 changes: 0 additions & 9 deletions include/TPP/PassBundles.td
Original file line number Diff line number Diff line change
Expand Up @@ -61,21 +61,13 @@ def TppMapping : Pass<"tpp-mapping", "ModuleOp"> {
];
}

def LinalgLowering : Pass<"linalg-lowering", "func::FuncOp"> {
let summary = "Lower Linalg operations to XSMM operations.";
let dependentDialects = ["xsmm::XsmmDialect",
"scf::SCFDialect",
"memref::MemRefDialect"];
}

def LowLevelParallelization : Pass<"low-level-parallel", "ModuleOp"> {
let summary = "Low level parallelization (multi-threading, AMX config).";
let dependentDialects = ["affine::AffineDialect",
"arith::ArithDialect",
"func::FuncDialect",
"memref::MemRefDialect",
"scf::SCFDialect",
"xsmm::XsmmDialect",
"LLVM::LLVMDialect"];
let options = [
ListOption<"parallelTaskGrid", "parallel-task-grid",
Expand All @@ -94,7 +86,6 @@ def LocalDialectsLowering : Pass<"lower-local-dialects", "ModuleOp"> {
"perf::PerfDialect",
"scf::SCFDialect",
"tensor::TensorDialect",
"xsmm::XsmmDialect",
"LLVM::LLVMDialect"];
}

Expand Down
4 changes: 0 additions & 4 deletions include/TPP/Passes.h
Original file line number Diff line number Diff line change
Expand Up @@ -84,10 +84,6 @@ namespace vector {
class VectorDialect;
} // namespace vector

namespace xsmm {
class XsmmDialect;
} // namespace xsmm

namespace xegpu {
class XeGPUDialect;
} // namespace xegpu
Expand Down
57 changes: 0 additions & 57 deletions include/TPP/Passes.td
Original file line number Diff line number Diff line change
Expand Up @@ -11,18 +11,6 @@

include "mlir/Pass/PassBase.td"

def ConvertLinalgToXsmm : Pass<"convert-linalg-to-xsmm", "func::FuncOp"> {
let summary = "Convert linalg to xsmm";
let description = [{
Convert linalg operations to XSMM operations.
}];
let dependentDialects = ["func::FuncDialect",
"memref::MemRefDialect",
"linalg::LinalgDialect",
"xsmm::XsmmDialect",
"tensor::TensorDialect"];
}

def ConvertVectorToXsmm : Pass<"convert-vector-to-xsmm", "func::FuncOp"> {
let summary = "Convert vector to xsmm";
let description = [{
Expand All @@ -36,15 +24,6 @@ def ConvertVectorToXsmm : Pass<"convert-vector-to-xsmm", "func::FuncOp"> {
}


def VerifyXsmmCalls : Pass<"verify-xsmm-calls", "func::FuncOp"> {
let summary = "Verify XSMM calls (dispatch and invoke)";
let description = [{
Make sure XSMM dispatch and invoke call are in a consistent
state and they do not contradict each others.
}];
let dependentDialects = [ "xsmm::XsmmDialect" ];
}

def ConvertLinalgToFunc : Pass<"convert-linalg-to-func", "ModuleOp"> {
let summary = "Convert linalg to func";
let description = [{
Expand All @@ -67,17 +46,6 @@ def VectorizationPass : Pass<"vectorization-pass",
}


def ConvertXsmmToFunc : Pass<"convert-xsmm-to-func", "ModuleOp"> {
let summary = "Convert xsmm to func";
let description = [{
Convert XSMM operations to libXSMM function calls.
}];
let dependentDialects = ["func::FuncDialect",
"memref::MemRefDialect",
"xsmm::XsmmDialect",
"LLVM::LLVMDialect"];
}

def ConvertCheckToLoops : Pass<"convert-check-to-loops", "func::FuncOp"> {
let summary = "Convert check to loops";
let description = [{
Expand Down Expand Up @@ -215,15 +183,6 @@ def RewriteBatchMatmulToMatmul : Pass<"rewrite-batch-matmul-to-matmul",
let dependentDialects = ["scf::SCFDialect", "linalg::LinalgDialect"];
}

def CombineXsmmOpPass : Pass<"combine-xsmm-op-optimization", "func::FuncOp"> {
let summary = "Fuse brgemm-add-relu ops into a fused brgemm op";
let description =
[{Fuse brgemm-add-relu ops into a fused brgemm op}];

let dependentDialects = ["xsmm::XsmmDialect"];

}

def PropagatePackUnPack : Pass<"propagate-pack-and-unpack", "func::FuncOp"> {
let summary = "Propagate tensor.pack and tensor.unpack";
let description = [{
Expand Down Expand Up @@ -353,22 +312,6 @@ def GpuDataTransfer : Pass<"gpu-data-transfer", "func::FuncOp"> {
"gpu::GPUDialect"];
}

def FoldXsmmFlags : Pass<"fold-xsmm-flags", "func::FuncOp"> {
let summary = "Attempt to fold dispatch op as flags in XSMM.";
let description = [{
Attempt to fold dispatch operations as flags in consumer dispatch
operations, for example:
```mlir
%alloc = memref.alloc
xsmm.unary zero (%alloc)
xsmm.gemm.dispatch (%alloc)
```
the zero is folded as `beta_0` in `xsmm.gemm.dispatch`.
}];
let dependentDialects = [ "memref::MemRefDialect", "xsmm::XsmmDialect" ];
}


def SCFParallelLoopTiling : Pass<"scf-parallel-loop-tiling-pass"> {
let summary = "Tile parallel loops";
let options = [
Expand Down
2 changes: 0 additions & 2 deletions lib/TPP/Conversion/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
add_subdirectory(ConvertCheckToLoops)
add_subdirectory(ConvertLinalgToFunc)
add_subdirectory(ConvertLinalgToXsmm)
add_subdirectory(ConvertPerfToFunc)
add_subdirectory(ConvertPerfToLoops)
add_subdirectory(ConvertXsmmToFunc)
add_subdirectory(ConvertVectorToXsmm)
19 changes: 0 additions & 19 deletions lib/TPP/Conversion/ConvertLinalgToXsmm/CMakeLists.txt

This file was deleted.

Loading

0 comments on commit 7bbcb5a

Please sign in to comment.