[英]A Method of counting Floating Point Operations in a C++/CUDA Program using PTX
我有一个较大的CUDA应用程序,我需要计算获得的GFLOP。 我正在寻找一种简单的,也许是通用的方法来计算浮点运算的数量。
使用汇编语言中预定义的fpo列表,是否可以从生成的PTX代码(如下所示)计算浮点运算? 根据代码,计数可以通用吗? 例如,执行add.s32 %r58, %r8, -2;
算作一个浮点运算?
例:
BB3_2:
.loc 2 108 1
mov.u32 %r8, %r79;
setp.ge.s32 %p1, %r78, %r16;
setp.lt.s32 %p2, %r78, 0;
or.pred %p3, %p2, %p1;
@%p3 bra BB3_5;
add.s32 %r58, %r8, -2;
setp.lt.s32 %p4, %r58, 0;
setp.ge.s32 %p5, %r58, %r15;
or.pred %p6, %p4, %p5;
@%p6 bra BB3_5;
.loc 2 112 1
ld.global.u8 %rc1, [%rd17];
cvt.rn.f32.u8 %f11, %rc1;
mul.wide.u32 %rd12, %r80, 4;
add.s64 %rd13, %rd7, %rd12;
ld.local.f32 %f12, [%rd13];
fma.rn.f32 %f14, %f11, %f12, %f14;
.loc 2 113 1
add.f32 %f15, %f15, %f12;
还是有更简单的方法来计算FPO,这是在浪费时间?
计算FLOPS的最简单方法是让CUDA Profiler为您完成。 通过选择“完成的Achieved FLOPS
实验,您可以获得以下图表:
“ Floating Point Operations
图表显示内核执行的每种浮点运算类型的计数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.