[FRONTEND][BACKEND] dd memory synchronization scope parameter to atomic ops. (#2562)

Co-authored-by: Keren Zhou <kerenzhou@openai.com>
This commit is contained in:
Chris Jones
2023-10-31 02:18:27 +00:00
committed by GitHub
parent 70fca00b67
commit 2398b82f18
9 changed files with 128 additions and 46 deletions

View File

@@ -1006,7 +1006,8 @@ struct AtomicCASOpConversion
std::string semStr;
llvm::raw_string_ostream os(semStr);
os << op.getSem();
atom.global().o(semStr).o("cas").o(sTy);
auto scope = stringifyMemSyncScope(op.getScope()).str();
atom.global().o(semStr).o(scope).o("cas").o(sTy);
atom(dstOpr, ptrOpr, cmpOpr, valOpr).predicate(mask);
if (TensorTy) {
@@ -1129,7 +1130,8 @@ struct AtomicRMWOpConversion
auto *ptrOpr = ptxBuilderAtomicRMW.newAddrOperand(rmwPtr, "l");
auto *valOpr = ptxBuilderAtomicRMW.newOperand(rmwVal, tyId);
auto &atom = ptxBuilderAtomicRMW.create<>("atom")->global().o("gpu");
auto scope = stringifyMemSyncScope(op.getScope()).str();
auto &atom = ptxBuilderAtomicRMW.create<>("atom")->global().o(scope);
auto rmwOp = stringifyRMWOp(atomicRmwAttr).str();
auto sBits = std::to_string(valueElemNBits);
switch (atomicRmwAttr) {