Files
ROCm/lib/Conversion/TritonGPUToLLVM/RegReallocOpToLLVM.cpp
goostavz f1512bded1 Initial code merge of Hopper support (#2036)
The initial code merge of Nvidia Hopper features support. Please be
aware that the code merge is not finished yet and the trouble-shooting
is still ongoing. The new hardware features (GMMA, TMA, STMATRIX etc.)
and automatic warp-specialization are experimental for now and turned
off by default. It is recommended for a trial when version 3.0 is
released.

The work is contributed by:
ben-zhang-609, bealwang, donproc, qliu93, jsh20, allatit23, LyricZhao,
ivanyinwz, goostavz & yangjunpro
from Nvidia, in cooperation with:
ptillet, Jokeren, ThomasRaoux & zahimoud
from OpenAI.

Co-authored-by: Goostav Zhu <gzhu@nvidia.com>
2023-08-07 09:53:04 +08:00

44 lines
1.5 KiB
C++

#include "RegReallocOpToLLVM.h"
using namespace mlir;
using namespace mlir::triton;
struct RegAllocOpConversion
: public ConvertTritonGPUOpToLLVMPattern<triton::nvidia_gpu::RegAllocOp> {
using ConvertTritonGPUOpToLLVMPattern<
triton::nvidia_gpu::RegAllocOp>::ConvertTritonGPUOpToLLVMPattern;
LogicalResult
matchAndRewrite(triton::nvidia_gpu::RegAllocOp op, OpAdaptor adaptor,
ConversionPatternRewriter &rewriter) const override {
Location loc = op->getLoc();
rewriter.replaceOpWithNewOp<triton::nvgpu::RegAllocOp>(
op, adaptor.getRegCount());
return success();
}
};
struct RegDeallocOpConversion
: public ConvertTritonGPUOpToLLVMPattern<triton::nvidia_gpu::RegDeallocOp> {
using ConvertTritonGPUOpToLLVMPattern<
triton::nvidia_gpu::RegDeallocOp>::ConvertTritonGPUOpToLLVMPattern;
LogicalResult
matchAndRewrite(triton::nvidia_gpu::RegDeallocOp op, OpAdaptor adaptor,
ConversionPatternRewriter &rewriter) const override {
Location loc = op->getLoc();
rewriter.replaceOpWithNewOp<triton::nvgpu::RegDeallocOp>(
op, adaptor.getRegCount());
return success();
}
};
void populateRegReallocOpToLLVMPatterns(
TritonGPUToLLVMTypeConverter &typeConverter, RewritePatternSet &patterns,
int numWarps, ModuleAxisInfoAnalysis &axisInfoAnalysis,
const ModuleAllocation &allocation, PatternBenefit benefit) {
patterns.add<RegAllocOpConversion>(typeConverter, benefit);
patterns.add<RegDeallocOpConversion>(typeConverter, benefit);
return;
}