Created by: zhangting2020
Performance optimization PR types
OPs PR changes
improve performance of instance_norm by calling eval() Describe
说明:Eigen的官方文档中提到,在一些表达式中插入eval()
可以避免重复计算,从而提升性能。参考链接。在实验中发现,当计算表达式中存在broadcast,并且在broadcast之前有较多其他运算时,可能会造成重复计算。因此本PR尝试在instance_norm 反向OP的计算表达式中插入eval()
,去提升该OP的性能。
以下是instance_norm的CPU性能,实验表明修改后性能得到大幅度提升。该OP在GPU下调用cub库,因此使用eval也不会增加GPU下的显存
性能提升
op | input shape | before | after | speed up |
---|---|---|---|---|
instance_norm_grad | [1, 64, 128, 128] | 166419 ms | 149.262 ms | 1115倍 |
instance_norm_grad | [1, 128, 64, 64] | 20719.6 ms | 74.9551 ms | 276倍 |
instance_norm_grad | [1, 256, 32, 32] | 2606.85 ms | 37.3511 ms | 70倍 |