1
数学库
hipprof --pmc数据项
2025-09-11 20:57:58
119
我在用`hipprof`调优我的内核,对于几个数据项有疑问 例如我的数据为 ``` kernel-name:"DoubleBufferTensorConv3d_64x64x16_ds_read" kernel dispatch index 0 gpu id 0 dispatch queue id 0 dispatch queue index 6 thread id 8635 grid size 1605632 work group size 256 shared memory size 16384 scratch size 0 vgpr count 7 sgpr count 5 fbarrier count 50529027 signal handle 0x0 kernel time 0.000589(s) processed ALU instructions 48.888064(%) performance 8525.141333(Gflops) shared memory operation 1354752 shared memory bank conflict 5.706778(%) L1 cache unit is active 79.915272(%) L1 cache unit is stalled 35.128348(%) L2 cache write unit is stalled 0.356674(%) L2 cache hit rate 67.289333(%) ``` 第一个问题:**vgpr和sgpr是什么意思**?我查阅的资料说vgpr是用来存储线程私有的数据的寄存器,而sgpr是用来存储线程共享的数据的寄存器。但是我的代码中定义了几十个私有变量,为什么vgpr只用了7个? 第二个问题:hipporf文档说`L1 cache unit is active `是指L1 缓存操作时间占比(%),`L1 cache unit is stalled`是指L1 缓存等待时间占比(%)。**这两个时间是什么意思**?L1缓存操作时间是指L1缓存读写的时间吗?L1缓存等待时间是指什么?数据的传输时间吗?而且**为什么这两个百分比相加会大于100%**?
全部评论(1)
只看楼主
H
hepj
1楼
第一个问题:vgpr和sgpr 一个是v向量计算单元,一个是s标量计算单元 第二个问题:L1 cache unit is active应该是L1整个活动时间,L1 cache unit is stalled则是L1的等待时间,包含在active时间中。然后那个store加起来大于100是正常的,因为l2 停的时候l1在等l2。寄存器是从l1开始里面拿数据,l1是从l2里面拿数据l2是从global里面拿数据。所以存在l1和l2同时停下来等待的情况。可以简单理解为这里重复统计了耗时
2025/9/15
没有更多内容了
--
楼主
Level.1
0 帖子
楼主热帖
暂无数据