结合night compute分析 利用tensor core 优化K值较大的矩阵乘(超过cublas50%)
一 night compute分析
将cublas作为base line和现有的代码分析
图1.1
可以发现计算吞吐量明显偏低,能想到的就是计算单元处于空闲的概率较大,是访存密集型算子,因此可以增大数据的吞吐量,多给计算单元提供数据
二 代码
#include "common.h"
//mma计算的基本尺寸
#define MMA_M 16
#define MMA_N 8
#define MMA_K 16
//每个block包含的A的行数和B的列数
#define BLOCK_ROWS 256
#define BLOCK_COLS 128
#define WARP_ROWS 64
#define WARP_COLS 64
#define BLOCK_ROW_WARPS 2 // BLOCK_COLS / WARP_COLS
#define BLOCK_COL_WARPS 4 // BLOCK_ROWS / WARP_ROWS
#define BLOCK_ROW_TILES 16 // BLOCK_COLS / MMA_N
#define BLOCK_COL_TILES 16 // BLOCK_ROWS / MMA_M
#define WAR