首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Power8上的硬件事件

Power8上的硬件事件
EN

Stack Overflow用户
提问于 2015-03-31 12:54:22
回答 1查看 186关注 0票数 0

我正在Power8上试验PAPI和硬件计数器。我认为这是PM_FLOP计算的一个问题(由PAPI_flop使用)。PM_FLOP是下列计数器的之和:PM_VSU{I}{j}触发器,其中i为(1,2) (2 VSU /核)“,j为(1,2,4,8),但如果我们分析PAPI检验(矩阵乘法)的矩阵-hl.c检验,则可以得到一个pb。

在测试结束时,有一个错误捕捉器:

代码语言:javascript
复制
 if ( event[0] == PAPI_FP_INS ) {
            /*     Compare measured FLOPS to expected value */
            tmp =
                    2 * ( long long ) ( NROWS1 ) * ( long long ) ( NCOLS2 ) *
                    ( long long ) ( NCOLS1 );
    printf("%llu \n",tmp);
            if ( abs( ( int ) values[0] - ( int ) tmp ) > ( float ) tmp * 0.05 ) {
                    /*     Maybe we are counting FMAs? */
                    tmp = tmp / 2;
                    if ( abs( ( int ) values[0] - ( int ) tmp ) >
                             ( float ) tmp * 0.05 ) {
                            printf( "\n" TAB1, "Expected operation count: ", 2 * tmp );
                            printf( TAB1, "Or possibly (using FMA):  ", tmp );
                            printf( TAB1, "Instead I got:            ", values[0] );
                            test_fail( __FILE__, __LINE__,
                                               "Unexpected FLOP count (check vector operations)",
                                               1 );
                    }
            }
  }

但是,如果我删除第一个分支并使用-O3编译用于float和double的测试,则不会出现错误。

代码语言:javascript
复制
Expected operation count:      11812500
Or possibly (using FMA):        5906250
Instead I got:                  3003761
matrix-hl.c - DOUBLE                             FAILED

Expected operation count:      11812500
Or possibly (using FMA):        5906250
Instead I got:                  1552507
matrix-hl.c - FLOAT                              FAILED

目前我认为PM_FLOP的计算是错误的。对于我来说,每个PM_VSU{i}_{j}触发器不是触发器的数量,而是已完成的助记符数量。因此,PM_VSU{i}{j}触发器应按因子正确: x1表示M_VSU{i}_1FLOP,x2表示M_VSU{i}_2FLOP,x4表示M_VSU{i}_4FLOP,x8表示M_VSU{i}_8FLOP。

实际上,最初的测试是有效的,因为在默认情况下,我们使用-O0编译,因此生成的ASM只有串行操作,由M_VSU{i}_1FLOP度量,其中1标量助记符是一个失败。我对dgemm和基本向量加法以及FMA做了一些测试,这证实了我的修正。

IBM电力专家有什么建议吗?

最好的

++t

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-09 06:33:53

我想你是对的。

查看文档(来自ophelp):

代码语言:javascript
复制
PM_VSU1_8FLOP: (counter: 0, 1, 2, 3)
    eight flops operation (DP vector versions of fdiv,fsqrt and SP vector versions of 
    fmadd,fnmadd,fmsub,fnmsub) (min count: 10000)

这不是很清楚,但意味着该事件的计数为1意味着执行了8个失败。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29369163

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档