Skip to content
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

Rebase xsmm to main #177

Closed
wants to merge 17 commits into from
Closed
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Dynamic shape/stride/offset support by way of memref.extract_strided_…
…metadata (#11)
rolfmorel authored and Devjiu committed Jan 20, 2025
commit b3554c65da539f494baaa060cdd7f8fcd5c2e4f1
15 changes: 7 additions & 8 deletions third_party/cpu/lib/Xsmm/ConvertTritonToXsmm.cpp
Original file line number Diff line number Diff line change
@@ -224,14 +224,13 @@ struct DotToXsmm : public OpRewritePattern<triton::DotOp> {

auto brgemmInfo = xsmm::utils::isMappableToBrgemm(rewriter, dotOp, inputs,
outputs, indexingMaps);
if (failed(brgemmInfo))
return rewriter.notifyMatchFailure(dotOp, "not mappable to XSMM");
if (brgemmInfo->isVnni)
return rewriter.notifyMatchFailure(dotOp, "VNNI support NYI");

auto xsmmFuncs = xsmm::utils::buildBrgemmCalls(
rewriter, dotOp, ValueRange{lhsBuf, rhsBuf, accBuf}, *brgemmInfo,
flags);
if (failed(brgemmInfo)) {
assert(false); // FIXME: getMemrefSource above already modified IR...
// return rewriter.notifyMatchFailure(dotOp, "not mappable to XSMM");
}

auto xsmmFuncs = xsmm::utils::buildBrgemmCalls(rewriter, dotOp, inputs,
indexingMaps, flags);

if (hoistedAcc) {
// Hoisting already updated all uses correctly.
12 changes: 6 additions & 6 deletions third_party/cpu/lib/Xsmm/ConvertVectorToXsmm.cpp
Original file line number Diff line number Diff line change
@@ -180,14 +180,14 @@ struct ContractToXsmm : public OpRewritePattern<vector::ContractionOp> {
auto brgemmInfo =
xsmm::utils::isMappableToBrgemm(rewriter, contractOp, inputs, outputs,
contractOp.getIndexingMapsArray());
if (failed(brgemmInfo))
return rewriter.notifyMatchFailure(contractOp, "not mappable to XSMM");
if (brgemmInfo->isVnni)
return rewriter.notifyMatchFailure(contractOp, "VNNI support NYI");
if (failed(brgemmInfo)) {
assert(false); // FIXME: getMemrefSource above already modified IR...
// return rewriter.notifyMatchFailure(contractOp, "not mappable to XSMM");
}

auto xsmmFuncs = xsmm::utils::buildBrgemmCalls(
rewriter, contractOp, ValueRange{lhsBuf, rhsBuf, accBuf}, *brgemmInfo,
flags);
rewriter, contractOp, ValueRange{lhsBuf, rhsBuf, accBuf},
contractOp.getIndexingMapsArray(), flags);

if (hoistedAcc) {
// Hoisting already updated all uses correctly.
Loading