mirror of
https://github.com/ROCm/ROCm.git
synced 2026-02-21 03:00:39 -05:00
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>
44 lines
1.5 KiB
C++
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;
|
|
}
|