Skip to content

Conversation

@Zjq9409
Copy link
Contributor

@Zjq9409 Zjq9409 commented Aug 3, 2021

PR types

Performance optimization

PR changes

OPs

Describe

Optimization batch_norm two-dimensional shape and the format is NCHW
The performance test data of OMP==1 is as follows:
image

@paddle-bot-old
Copy link

paddle-bot-old bot commented Aug 3, 2021

Thanks for your contribution!
Please wait for the result of CI firstly. See Paddle CI Manual for details.

@JamesLim-sy
Copy link
Contributor

LGTM

@Zjq9409 Zjq9409 changed the title optimization channel optimization 2D and NCHW format Aug 9, 2021
@Zjq9409 Zjq9409 changed the title optimization 2D and NCHW format optimization batch_norm2D and NCHW format Aug 9, 2021
@Zjq9409 Zjq9409 changed the title optimization batch_norm2D and NCHW format optimization batch_norm 2D and NCHW format on CPU Aug 9, 2021
Copy link
Contributor

@Xreki Xreki left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM.


// input dimension is 2 and the format is NCHW. The input can be regarded
// as NHWC format
if (x_dims.size() == 2 && data_layout == DataLayout::kNCHW) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

判断条件其实可以简化下,是不是if (sample_size == 1)就可以了?以及代码书写也可以简化下:const DataLayout data_layout = sample_size == 1 ? DataLayout::kNHWC : framework::StringToDataLayout(data_layout_str);

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

经过验证,在sample_size为1时,在代码"const int C = (data_layout == DataLayout::kNCHW ? x_dims[1]: x_dims[x_dims.size() - 1]);" 执行完成后获取到C的值,再使用sample_size==1判断修改layout是可以的。根据建议修改

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

但是对于简化的写法应该是不可行的,因为如果这里直接修改data_layout的话,后续会通过这个data_layout来计算C的值,如果输入为[10,10,1,1],输入格式为"NCHW",sample_size==1,满足条件,这时输入格式改为"NHWC",后续计算C会等于1,而实际上C=10.

@Xreki Xreki merged commit 56759ff into PaddlePaddle:develop Aug 9, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants