开发者
我要评分
获取效率
正确性
完整性
易理解
在线提单
论坛求助

毕昇自动使能矩阵计算加速

为了提高矩阵计算相关指令在应用中的利用率,最新版本毕昇编译器加入了自动矩阵化能力,通过静态分析识别应用源码中存在的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'指令以确认是否成功使能矩阵计算加速。