为什么我在代码中 所有的计算部分已经全都是用的float类型(可能一部分是FP64单元去计算了),如Nsight Compute分析所示,为什么还提示我让我用FP32,如何让FP64不去参加运算?在这种情况下请问怎么进行优化呢?
关于你的两个问题:
(1)为何报告FP64 Pipe几乎用满了,但是却"所有的计算代码已经全部使用的是float类型"的问题,可能有这几个原因:
表达式中有无不小心引入的double变量?或者有无不小心引入的double<->int, double<->float之间的转换?以及,特别检查有无不含f结尾的常数,例如说1.23而不是1.23f,前者会引入自动的到double的promotion转换和计算代价。
(2)为何报告大比例的FP32不能融合成a * b + c的方式,而是单独的a * b, 和x + c?这个考虑到(1)问题的存在,而现在报告FP32 Pipe才3%的使用率,不妨先解决了(1)然后再看看本情况的新报告,和新变化。