[opus] Test failed!!

Jean-Marc Valin jmvalin at jmvalin.ca
Thu Nov 26 11:00:23 PST 2015


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

Hi Jesus,

Thanks for the report. As far as I can tell, what's happening is that
when intrinsics are enabled, we compile all tests with -msse4.1, even
when it's only run-time detected. In most cases, that doesn't cause
any issue, but sometimes the compiler will take the C code and
generate an SSEx instruction on its own. I think this is what's
happening for you. The actual encoder and decoder should work fine
since they are compiled without -msse except for the files that are
behind auto-detect.

	Jean-Marc

On 11/26/2015 01:33 PM, Jesus Cea wrote:
> On 26/11/15 16:40, Jean-Marc Valin wrote:
>> Please report any issue you find in this release.
> 
> Using the new SS4.1 code I see a 30% performance increase in my 7 
> years old AMD laptop. I compile with this:
> 
> ./configure --disable-static --enable-intrinsics \ 
> --enable-float-approx
> 
> "make test" runs fine. Great.
> 
> When I try to do the same on a server running Ubuntu 12.04 with 
> "/dev/cpuinfo":
> 
> """ processor       : 0 vendor_id       : GenuineIntel cpu family :
> 6 model           : 15 model name      : Intel(R) Pentium(R) Dual 
> CPU  E2180  @ 2.00GHz stepping        : 13 cpu MHz         : 
> 2000.000 cache size      : 1024 KB physical id     : 0 siblings : 2
> core id         : 0 cpu cores       : 2 apicid          : 0 initial
> apicid  : 0 fpu             : yes fpu_exception   : yes cpuid level
> : 10 wp              : yes flags           : fpu vme de pse tsc msr
> pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi
> mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc
> arch_perfmon pebs bts rep_good nopl aperfmperf pni dtes64 monitor
> ds_cpl est tm2 ssse3 cx16 xtpr pdcm lahf_lm dtherm bogomips
> : 3990.19 clflush size    : 64 cache_alignment : 64 address sizes
> : 36 bits physical, 48 bits virtual power management:
> 
> processor       : 1 vendor_id       : GenuineIntel cpu family : 6
> model           : 15 model name      : Intel(R) Pentium(R) Dual CPU
> E2180  @ 2.00GHz stepping        : 13 cpu MHz         : 2000.000
> cache size      : 1024 KB physical id     : 0 siblings : 2 core id
> : 1 cpu cores       : 2 apicid          : 1 initial apicid  : 1 fpu
> : yes fpu_exception   : yes cpuid level     : 10 wp              :
> yes flags           : fpu vme de pse tsc msr pae mce cx8 apic sep
> mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss
> ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good
> nopl aperfmperf pni dtes64 monitor ds_cpl est tm2 ssse3 cx16 xtpr
> pdcm lahf_lm dtherm bogomips        : 4007.50 clflush size    : 64
> cache_alignment : 64 address sizes   : 36 bits physical, 48 bits
> virtual power management: """
> 
> Code compiles fine, but running the test suite I see this:
> 
> """ configure: 
> ----------------------------------------------------------------------
- --
>
>
> 
opus 1.1.1:  Automatic configuration OK.
> 
> Compiler support:
> 
> C99 var arrays: ................ yes C99 lrintf: 
> .................... yes Use alloca: .................... no
> (using var arrays) General configuration:
> 
> Floating point support: ........ yes Fast float approximations: 
> ..... yes Fixed point debugging: ......... no Inline Assembly 
> Optimizations: . No inline ASM for your platform, please send 
> patches External Assembly Optimizations: Intrinsics 
> Optimizations.......: x86 SSE SSE2 SSE4.1 Run-time CPU detection: 
> ........ x86 SSE4.1 Custom modes: .................. no Assertion 
> checking: ............ no Fuzzing: ....................... no
> 
> API documentation: ............. yes Extra programs: 
> ................ yes 
> ----------------------------------------------------------------------
- --
>
>
> 
[...]
> 
> $ make check PASS: celt/tests/test_unit_types ./test-driver: line 
> 107: 10065 Illegal instruction     "$@" > $log_file 2>&1 FAIL: 
> celt/tests/test_unit_mathops PASS: celt/tests/test_unit_entropy 
> PASS: celt/tests/test_unit_laplace PASS: celt/tests/test_unit_dft 
> PASS: celt/tests/test_unit_mdct PASS: celt/tests/test_unit_rotation
> PASS: celt/tests/test_unit_cwrs32 PASS: tests/test_opus_api PASS:
> tests/test_opus_decode PASS: tests/test_opus_decode PASS:
> tests/test_opus_encode PASS: tests/test_opus_padding
> ================================== opus 1.1.1: ./test-suite.log
> ==================================
> 
> # TOTAL: 12 # PASS:  11 # SKIP:  0 # XFAIL: 0 # FAIL:  1 # XPASS: 0
> # ERROR: 0
> 
> .. contents:: :depth: 2
> 
> FAIL: celt/tests/test_unit_mathops 
> ==================================
> 
> FAIL celt/tests/test_unit_mathops (exit status: 132)
> 
> ======================================================================
======
>
>
> 
Testsuite summary for opus 1.1.1
> ======================================================================
======
>
>
> 
# TOTAL: 12
> # PASS:  11 # SKIP:  0 # XFAIL: 0 # FAIL:  1 # XPASS: 0 # ERROR: 0
>  
> ======================================================================
======
>
>
> 
See ./test-suite.log
> Please report to opus at xiph.org 
> ======================================================================
======
>
>
> 
$ cat test-suite.log ================================== opus
> 1.1.1: ./test-suite.log ==================================
> 
> # TOTAL: 12 # PASS:  11 # SKIP:  0 # XFAIL: 0 # FAIL:  1 # XPASS: 0
> # ERROR: 0
> 
> .. contents:: :depth: 2
> 
> FAIL: celt/tests/test_unit_mathops 
> ==================================
> 
> FAIL celt/tests/test_unit_mathops (exit status: 132)
> 
> """
> 
> I think that the server CPU is not SSE4.1 compatible, checking its
>  "/dev/cpuinfo" details.
> 
> 
> If I compile the code with "--disable-static --enable-intrinsics", 
> tests run fine and performance improves 14% compared with OPUS 1.1 
> release. That is what I have now in production in the server.
> 
> 
> 
> _______________________________________________ opus mailing list 
> opus at xiph.org http://lists.xiph.org/mailman/listinfo/opus
> 
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2

iQEcBAEBCAAGBQJWV1a7AAoJEJ6/8sItn9q91i0H/1nsPSGdYfnpmThlA75QlaNt
qzbQvwGZs0zV1ZJ0cPqWO4RuGS23j81QO6ZfQbktFOEclp+YtZEdKPqIkwJ81mFs
xDDT4HcGVtJ9FK4ZHa1TosBVz6EiTx4UG7gJR1zO3hcsviVbwA9ijCG3FZ//vAyN
jkHDZN96YrME3hbVdLIv4MxpFk2j5ibYBSnUkb9omSFj5jvsWRRl7w9xfCfpTsw4
FHHTGfq98Z6r+jNN7ByK6r8drct/dABlQ9R0UbqhSwy/c5Yxbj3sq5W428XIIo6G
XwdTXDnS6Clx1p0jxzmX/vKQaOXH3ldDAgQnOhRmQn6EFwuPiHoFfuSR9WEIQyk=
=T9UX
-----END PGP SIGNATURE-----


More information about the opus mailing list