昇腾社区首页
中文
注册

算子设计(msKPP)

msKPP工具用于算子开发之前,帮助开发者在秒级时间内获取算子性能建模结果,可快速验证算子的实现方案。

  1. 参考环境准备,完成msKPP工具相关配置。
  2. 获取对算子建模的Python脚本(以add算子为例)。
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    from mskpp import vadd, Tensor, Chip
    
    def my_vadd(gm_x, gm_y, gm_z):
        # 向量Add的基本数据通路:
        #被加数x: GM-UB
        #加数y: GM-UB
        #结果向量z: UB-GM
     
        #定义和分配UB上的变量
        x = Tensor("UB")
        y = Tensor("UB")
        z = Tensor("UB")
    
        # 将GM上的数据移动到UB对应内存空间上
        x.load(gm_x)
        y.load(gm_y)
    
        # 当前数据已加载到UB上,调用指令进行计算,结果保存在UB上
        out = vadd(x, y, z)()
    
        # 将UB上的数据移动到GM变量gm_z的地址空间上 
        gm_z.load(out[0])
    
    if __name__== '__main__':
        with Chip("Ascendxxxyy") as chip:  # xxxyy为用户实际使用的具体芯片类型 
            chip.enable_trace()
            chip.enable_metrics()
    
            # 应用算子进行AI Core计算
            in_x = Tensor("GM", "FP16", [32, 48], format="ND") 
            in_y = Tensor("GM", "FP16", [32, 48], format="ND")
            in_z = Tensor("GM", "FP16", [32, 48], format="ND")
            my_vadd(in_x, in_y, in_z)
    
  3. 通过python3 xxx.py命令执行步骤2的Python.py脚本,将会在当前目录生成以下结果目录。目录中文件展现的具体内容请参见算子计算搬运规格分析极限性能分析算子tiling初步设计
    1
    2
    3
    4
    5
    MSKPP{timestamp}/
    ├── instruction_cycle_consumption.html
    ├── Instruction_statistic.csv
    ├── Pipe_statistic.csv
    └── trace.json
    
    表1 建模结果文件

    文件名称

    功能

    搬运流水统计(Pipe_statistic.csv)

    以PIPE维度统计搬运数据量大小、操作数个数以及耗时信息。

    指令信息统计(Instruction_statistic.csv)

    统计不同指令维度的总搬运数据量大小、操作数个数以及耗时信息,能够发现指令层面上的瓶颈。

    指令占比饼图(instruction_cycle_consumption.html)

    以指令维度统计耗时信息,并以饼图形式展示。

    指令流水图(trace.json)

    以指令维度展示耗时信息,并进行可视化展示。