网络调测时ReduceSum算子性能差

现象描述

网络调测时,网络整体性能较慢。通过Profiling工具获取网络的Profiling数据(Profiling工具的使用方法可参见对应版本的CANN 开发工具指南》中的“Profiling工具使用指南”章节),并进行算子的性能数据分析,发现ReduceSum算子的性能很差。

查看Profiling性能数据中ReduceSum算子的详细信息,如下图所示:

其中,ReduceSum算子的输入数据类型(input_data_type)为“DT_FLOAT16”,block_dim字段的值为“1”,说明该算子未开启多核并行计算。

原因分析

对于昇腾AI处理器的ReduceSum算子或者是用户自定义实现的调用了TBE DSL的”reduce_sum”接口的算子,若输入的数据类型为float16,由于硬件限制,某些场景下会无法开启多核计算。

此种场景下,若算子的性能较差,可参见解决方案尝试修改。

解决方案

网络调测时,可在ReduceSum算子前插入一个Cast算子,将算子的输入数据类型从float16转换为float32。

ReduceSum算子在输入类型为float32的场景下,会使能多核并发计算,从而达到提升该算子性能的效果。

仅在ReduceSum算子性能较差时,且符合现象描述时,可尝试使用此方法进行性能提升。