Issue 1809 in webm: VP9 encode output with NEON intrinsics enabled does not match with C only version

406 views
Skip to first unread message

anupa… via monorail

unread,
Aug 2, 2023, 5:58:57 AM8/2/23
to webm-d...@webmproject.org
Status: Untriaged
Owner: ----
Labels: Type-Bug Pri-2
Components: libvpx

New issue 1809 by anupa...@ittiam.com: VP9 encode output with NEON intrinsics enabled does not match with C only version
https://bugs.chromium.org/p/webm/issues/detail?id=1809

What version/commit are you using?
9ad950a9c4f8906fcdabb3402db1a17a9d99ee4c

Can you reproduce using the vpxdec or vpxenc tools? What command line are you using?
1. git clone https://chromium.googlesource.com/webm/libvpx
2. cd libvpx
3. git checkout 9ad950a9c4f8906fcdabb3402db1a17a9d99ee4c

Generate C only encoder output
a. mkdir generic_build
b. cd generic_build
c. ../configure --target=generic-gnu --disable-install-docs --enable-unit-tests --enable-debug --enable-postproc --enable-vp9-postproc --enable-vp9-temporal-denoising --enable-vp9-highbitdepth
d. make -j
e. ./vpxenc hantro_collage_w352h288.yuv --width=352 --height=288 --bit-depth=8 --profile=0 --codec=vp9 --rt --test-decode=fatal --ivf --threads=1 --static-thresh=0 --tile-columns=0 --tile-rows=0 --end-usage=cbr --kf-max-dist=90000 --lag-in-frames=0 --max-q=58 --min-q=2 --passes=1 --undershoot-pct=50 --overshoot-pct=50 --row-mt=0 --buf-sz=1000 --buf-initial-sz=500 --buf-optimal-sz=600 --max-intra-rate=300 --resize-allowed=0 --noise-sensitivity=0 --aq-mode=3 --error-resilient=0 --limit=20 --cpu-used=4 --target-bitrate=1600 -o generic_out.ivf

Generate encoder output with NEON intrinsics enabled
a. mkdir neon_build
b. cd neon_build
c. CROSS=aarch64-linux-gnu- ../configure --target=arm64-linux-gcc--disable-install-docs --enable-unit-tests --enable-debug --enable-postproc --enable-vp9-postproc --enable-vp9-temporal-denoising --enable-vp9-highbitdepth
d. make -j
e. ./vpxenc hantro_collage_w352h288.yuv --width=352 --height=288 --bit-depth=8 --profile=0 --codec=vp9 --rt --test-decode=fatal --ivf --threads=1 --static-thresh=0 --tile-columns=0 --tile-rows=0 --end-usage=cbr --kf-max-dist=90000 --lag-in-frames=0 --max-q=58 --min-q=2 --passes=1 --undershoot-pct=50 --overshoot-pct=50 --row-mt=0 --buf-sz=1000 --buf-initial-sz=500 --buf-optimal-sz=600 --max-intra-rate=300 --resize-allowed=0 --noise-sensitivity=0 --aq-mode=3 --error-resilient=0 --limit=20 --cpu-used=4 --target-bitrate=1600 -o neon_out.ivf

What is the expected behavior?
Output files generic_out.ivf and neon_out.ivf should be identical

What do you see instead?
Output files generic_out.ivf and neon_out.ivf are not identical

Please provide any additional information below.
Mismatches are seen with ‘rt’ –cpu-used=4, 5, 6, 7, 8, 9.

--
You received this message because:
1. The project was configured to send all issue notifications to this address

You may adjust your notification preferences at:
https://bugs.chromium.org/hosting/settings

yunqi… via monorail

unread,
Aug 3, 2023, 12:09:52 PM8/3/23
to webm-d...@webmproject.org

Comment #1 on issue 1809 by yunqi...@google.com: VP9 encode output with NEON intrinsics enabled does not match with C only version
https://bugs.chromium.org/p/webm/issues/detail?id=1809#c1

Thanks for filing the bug!

yunqi… via monorail

unread,
Aug 3, 2023, 12:10:18 PM8/3/23
to webm-d...@webmproject.org
Updates:
Cc: yunqi...@google.com mar...@google.com

Comment #2 on issue 1809 by yunqi...@google.com: VP9 encode output with NEON intrinsics enabled does not match with C only version
https://bugs.chromium.org/p/webm/issues/detail?id=1809#c2

(No comment was entered for this change.)

yunqi… via monorail

unread,
Aug 7, 2023, 3:39:03 PM8/7/23
to webm-d...@webmproject.org
Updates:
Cc: -yunqi...@google.com
Owner: yunqi...@google.com
Status: Assigned

Comment #3 on issue 1809 by yunqi...@google.com: VP9 encode output with NEON intrinsics enabled does not match with C only version
https://bugs.chromium.org/p/webm/issues/detail?id=1809#c3

Git Watcher via monorail

unread,
Aug 8, 2023, 4:35:08 PM8/8/23
to webm-d...@webmproject.org

Comment #4 on issue 1809 by Git Watcher: VP9 encode output with NEON intrinsics enabled does not match with C only version
https://bugs.chromium.org/p/webm/issues/detail?id=1809#c4

The following revision refers to this bug:
https://chromium.googlesource.com/webm/libvpx/+/6e5fc000017f919de705d103fc4e6c1a41629c67

commit 6e5fc000017f919de705d103fc4e6c1a41629c67
Author: Yunqing Wang <yunqi...@google.com>
Date: Mon Aug 07 20:10:41 2023

Disable vpx_int_pro_row/col neon SIMD functions

The vpx_int_pro_row/col neon SIMD version caused a mismatch between
neon encoding vs c encoding. Disabled them for now to ensure the
correctness of VP9 encoding on the arm platform. Since these 2
functions were not used much, so this wouldn't affect the overall
encoder speed much.

BUG=webm:1800
BUG=webm:1809

Change-Id: Id1a7d542fc03d4cf9fa1039a49832abf35fb722f

[modify] https://crrev.com/6e5fc000017f919de705d103fc4e6c1a41629c67/test/avg_test.cc
[modify] https://crrev.com/6e5fc000017f919de705d103fc4e6c1a41629c67/vpx_dsp/arm/avg_neon.c
[modify] https://crrev.com/6e5fc000017f919de705d103fc4e6c1a41629c67/vpx_dsp/vpx_dsp_rtcd_defs.pl

Git Watcher via monorail

unread,
Aug 11, 2023, 1:28:16 PM8/11/23
to webm-d...@webmproject.org

Comment #5 on issue 1809 by Git Watcher: VP9 encode output with NEON intrinsics enabled does not match with C only version
https://bugs.chromium.org/p/webm/issues/detail?id=1809#c5


The following revision refers to this bug:
https://chromium.googlesource.com/webm/libvpx/+/c8610c266c7f1a098b304709936f3b0782d36fc6

commit c8610c266c7f1a098b304709936f3b0782d36fc6
Author: Jonathan Wright <jonatha...@arm.com>
Date: Thu Aug 10 14:33:54 2023

Fix bug and re-enable vpx_int_pro_row/col_neon

Fix a bug in vpx_int_pro_row_neon (increment pointer after peeled
first loop iteration) and re-enable both vpx_int_pro_row/col_neon
paths.

Also fix IntProRowTest to use width_ (instead of 0) as the src_stride
for the input data block. The test's use of 0 for src_stride is the
reason the tests passed with the buggy Neon implementation noted in
the listed bugs. (The old buggy Neon implementation fails the
adjusted unit tests.)

BUG=webm:1800
BUG=webm:1809

Change-Id: I1f4572ee155653a7596fe2c10b5938ea7a3f63ae

[modify] https://crrev.com/c8610c266c7f1a098b304709936f3b0782d36fc6/test/avg_test.cc
[modify] https://crrev.com/c8610c266c7f1a098b304709936f3b0782d36fc6/vpx_dsp/arm/avg_neon.c
[modify] https://crrev.com/c8610c266c7f1a098b304709936f3b0782d36fc6/vpx_dsp/vpx_dsp_rtcd_defs.pl

yunqi… via monorail

unread,
Jan 22, 2024, 1:38:23 PMJan 22
to webm-d...@webmproject.org
Updates:
Status: Fixed

Comment #6 on issue 1809 by yunqi...@google.com: VP9 encode output with NEON intrinsics enabled does not match with C only version
https://bugs.chromium.org/p/webm/issues/detail?id=1809#c6


(No comment was entered for this change.)

Reply all
Reply to author
Forward
0 new messages