我看到nvprof可以分析内核中的翻牌次数(使用如下参数).此外,当我浏览文档时(这里http://docs.nvidia.com/cuda ...它说flop_count_sp是"非预测线程执行的单精度浮点运算的数量(加,乘,乘) -累积和特殊).每次乘法累加运算对计数贡献2."
但是当我运行时,结果flop_count_sp(应该是flop_count_sp_add+ flop_count_sp_mul+ flop_count_sp_special+ 2 * flop_count_sp_fma)我发现它不包括求和的值flop_count_sp_special.
你能告诉我我应该用什么吗?我应该将此值添加到总和中flop_count_sp还是应该考虑公式中不包含的值flop_count_sp_special?
还能告诉我这些特殊操作是什么吗?
我正在使用以下命令行:
nvprof --metrics flops_sp --metrics flops_sp_add --metrics flops_sp_mul --metrics flops_sp_fma --metrics flops_sp_special myKernel args
Run Code Online (Sandbox Code Playgroud)
myKernel我的CUDA内核的名称在哪里,其中包含args给出的一些输入参数.
例如,我的nvprof输出的一部分如下所示:
==20549== Profiling result:
==20549== Metric result:
Invocations Metric Name Metric Description Min Max Avg
Device "Tesla K40c (0)"
Kernel: mykernel(float*, int, int, float*, int, float*, int*)
2 flop_count_sp Floating Point Operations(Single Precisi 70888 70888 70888
2 flop_count_sp_add Floating Point Operations(Single Precisi 14465 14465 14465
2 flop_count_sp_mul Floating Point Operation(Single Precisio 14465 14465 14465
2 flop_count_sp_fma Floating Point Operations(Single Precisi 20979 20979 20979
2 flop_count_sp_special Floating Point Operations(Single Precisi 87637 87637 87637
Run Code Online (Sandbox Code Playgroud)