毕昇自动使能矩阵计算加速
为了提高矩阵计算相关指令在应用中的利用率,最新版本毕昇编译器加入了自动矩阵化能力,通过静态分析识别应用源码中存在的GEMM、SYR2K等典型计算模式,并获取行指标、列指标、维度等关键计算信息,在不影响程序正确性的前提下生成矩阵化的指令,提高程序性能。在应用程序编译时,可通过增加编译选项'-mcpu=hip11'、'-foptimize-loops'等来使能矩阵计算加速。举例如下:
编译命令:
clang -mcpu=hip11 -O1 -foptimize-loops gemm.c
源文件gemm.c的内容如下:
void gemm(int M, int N, int K, float ALPHA, float *A, int lda, float *B, int ldb, float *C, int ldc) {
int i, j, k;
for(i = 0; i < M; ++i){
for(j = 0; j < N; ++j){
float sum = 0;
for(k = 0; k < K; ++k){
sum += ALPHA * A[i * lda + k] * B[j + ldb * k];
}
C[i + ldc * j] += sum;
}
}
}
1、编译优化等级要求>=O1;
2、可以通过增加编译选项'-S'生成编译后的汇编文件,检测是否存在'fmopa'指令以确认是否成功使能矩阵计算加速。
父主题: 鲲鹏920专业版矩阵算力编程