Page 488 - 《软件学报》2025年第8期
P. 488

王昊天 等: MTTorch: 面向  MT-3000  芯片和  Transformer 模型的  PyTorch  算子库实现与优化            3911



                    4                    400     6                    600     3                    300
                        CPU 标准差                      CPU 标准差                      CPU 标准差
                    3   MTTorch 标准差      300     5   MTTorch 标准差      500     2   MTTorch 标准差      200
                                                 4                    400
                    2                    200     3                    300     1                    100
                  P source  1            100  标准差  P source  2        200  标准差  P source                标准差
                    0                    0       1                    100     0                    0
                                                 0                    0      −1                    −100
                    −1                   −100   −1                    −100
                    −2                   −200   −2                    −200   −2                    −200
                      2 18  2 20  2 22  2 24  2 26  2 28  2 18  2 20  2 22  2 24  2 26  2 28  2 18  2 20  2 22  2 24  2 26  2 28
                             数据量                          数据量                          数据量
                           (a) layer_norm                (b) GELU                 (c) log_softmax_back
                                                 10                   1 000
                    4   CPU 标准差          400                                  4   CPU 标准差          400
                    3   MTTorch 标准差      300     8                    800     3   MTTorch 标准差      300
                                                 6                    600     2                    200
                    2                    200
                  P source  1            100  标准差  P source  4        400  标准差  P source  1 0      100  标准差
                                                                                                   0
                    0                    0       2                    200    −1                    −100
                    −1                   −100    0                    0      −2                    −200
                    −2                   −200   −2                    −200   −3                    −300
                      2 18  2 20  2 22  2 24  2 26  2 28  2 18  2 20  2 22  2 24  2 26  2 28  2 18  2 20  2 22  2 24  2 26  2 28
                             数据量                          数据量                          数据量
                           (d) mul/div                 (e) log_softmax                (f) add/sub
                   2.0                   200     3                    300     5                    20 000
                   1.5  CPU 标准差          150         CPU 标准差          200     4        CPU 标准差     15 000
                                                                                       MTTorch 标准差
                        MTTorch 标准差
                                                     MTTorch 标准差
                   1.0                   100     2                            3
                                                                      100
                   0.5                   50      1                            2                    10 000
                  P source  −0.5 0       0 −50  标准差  P source  0      50   标准差  P source  1        5 000  标准差
                  −1.0                   −100   −1                    0       0                    0
                  −1.5                   −150                         −100   −1                    −5 000
                  −2.0                   −200   −2                    −200   −2
                      2 18  2 20  2 22  2 24  2 26  2 28  2 18  2 20  2 22  2 24  2 26  2 28  2 18  2 20  2 22  2 24  2 26  2 28
                             数据量                          数据量                          数据量
                          (g) ReLU_back                 (h) softmax                    (i) mm
                                                2.5                   250    2.0                   200
                    4   CPU 标准差          400    2.0  CPU 标准差          200    1.5  CPU 标准差          150
                        MTTorch 标准差                  MTTorch 标准差                  MTTorch 标准差
                    3                    300    1.5                   150    1.0                   100
                                                1.0                   100
                    2                    200    0.5                   50     0.5                   50
                   P source  1           100  标准差  P source  0        0    标准差  标准差  P source  0   0    标准差
                    0                    0     −0.5                   −50   −0.5                   −50
                                                                            −1.0
                                                                                                   −100
                    −1                   −100  −1.0                   −100  −1.5                   −150
                                               −1.5
                                                                      −150
                    −2                   −200  −2.0                   −200  −2.0                   −200
                      2 18  2 20  2 22  2 24  2 26  2 28  2 18  2 20  2 22  2 24  2 26  2 28  2 18  2 20  2 22  2 24  2 26  2 28
                             数据量                          数据量                          数据量
                            (j) ReLU                      (k) sum                   (l) softmax_back
                                                 5                    500
                                                 4                    400
                                                 3                    300
                                                P source  2 1         200  标准差  标准差
                                                                      100
                                                 0                    0
                                                −1   CPU 标准差          −100
                                                     MTTorch 标准差
                                                −2                    −200
                                                   2 18  2 20  2 22  2 24  2 26  2 28
                                                          数据量
                                                       (m) GELU_back
                            图 10 15  个核函数在不同输入数据规模下使用            CPU  和  DSP  运算时间和标准差对比

                 4.3.2    DSP  算子与 GPU  算子性能效率对比
                    进一步, 本文设计实验对比了          MTTorch  和  PyTorch  中原生的 CUDA  算子的性能效率. MT-3000   每个  DSP  核
   483   484   485   486   487   488   489   490   491   492   493