[opus] [OPUS] celt_inner_prod() and dual_inner_prod() NEON intrinsics

Jean-Marc Valin jmvalin at jmvalin.ca
Tue Jun 6 21:47:23 UTC 2017


Thanks, all 5 patches merged in master.

	Jean-Marc

On 06/06/17 05:04 PM, Linfeng Zhang wrote:
> Thank Jonathan and Jean-Marc!
> 
> I attached the new patch sets in inner_prod_5patches_v3.zip.
> 
> The Chromebook I'm using is
> Chromebook 13
> CB5-311 series
> RMN: Z3ENN
> 
> CPU info:
> 
> $ cat /proc/cpuinfo
> processor: 0
> model name: ARMv7 Processor rev 3 (v7l)
> BogoMIPS: 2.31
> Features: swp half thumb fastmult vfp edsp thumbee neon vfpv3 tls vfpv4
> idiva idivt vfpd32 lpae 
> CPU implementer: 0x41
> CPU architecture: 7
> CPU variant: 0x3
> CPU part: 0xc0f
> CPU revision: 3
> 
> Hardware: NVIDIA Tegra SoC (Flattened Device Tree)
> Revision: 0000
> Serial: 0000000000000000
> 
> Thanks,
> Linfeng
> 
> On Tue, Jun 6, 2017 at 1:15 PM, Jean-Marc Valin <jmvalin at jmvalin.ca
> <mailto:jmvalin at jmvalin.ca>> wrote:
> 
>     Hi Linfeng,
> 
>     On 06/06/17 04:09 PM, Jonathan Lennox wrote:
>     > Two comments on the various infrastructure for RTCD etc.
>     >
>     > 1. The 0002- patch changes the ABI of the celt_pitch_xcorr functions,
>     > but doesn’t change the assembly in celt/arm/celt_pitch_xcorr_arm.s
>     > correspondingly.  I suspect the ‘arch’ parameter can just be ignored
>     > by the assembly functions, but at least the comments in that file
>     > should be updated to indicate the register that’s used to pass it in,
>     > and that it’s ignored.
>     >
>     > 2. In the 0003- patch, you shouldn’t use the MAY_HAVE_NEON macro in
>     > your new arm_celt_map tables, for the same reason we didn’t want it
>     > in the arm_silk_map tables.
> 
>     I have no further issues with your patches, so once you address the two
>     issues Jonathan pointed out, I'll be able to merge them.
> 
>     Cheers,
> 
>             Jean-Marc
> 
>     >
>     > Out of curiosity, what’s the CPU in the Chromebook you’re using to
>     > test?
>     >
>     >> On Jun 1, 2017, at 6:33 PM, Linfeng Zhang <linfengz at google.com
>     <mailto:linfengz at google.com>>
>     >> wrote:
>     >>
>     >> Hi,
>     >>
>     >> Attached are 5 patches related to celt_inner_prod() and
>     >> dual_inner_prod() NEON intrinsics optimization.
>     >>
>     >> In 0004-Optimize-floating-point-celt_inner_prod-and-dual_inn.patch,
>     >> the optimization changed the order of floating-point inner
>     >> products, which will change the results. I created
>     >> celt_inner_prod_neon_float_c_simulation() and
>     >> dual_inner_prod_neon_float_c_simulation() to simulate the order
>     >> floating-point operations in NEON optimization and compare their
>     >> results. Sorry that I cannot bond the distance between original C
>     >> function and NEON function to any giving reasonable small number or
>     >> ratio. It's easy to create an input which 0 and 1,000 are both
>     >> correct results by just manipulating the inner product order.
>     >>
>     >> The total speed gain is about 1.0% for fixed-point encoder, and
>     >> 1.8% for floating-point encoder, in Complexity 8, tested on my
>     >> Chromebook.
>     >>
>     >> Thanks, Linfeng
>     >>
>     <0005-Clean-celt_pitch_xcorr_float_neon.patch><0004-Optimize-floating-point-celt_inner_prod-and-dual_inn.patch><0003-Optimize-fixed-point-celt_inner_prod-and-dual_inner_.patch><0002-Replace-call-of-celt_inner_prod_c-step-2.patch><0001-Replace-call-of-celt_inner_prod_c-step-1.patch>_______________________________________________
>     >>
>     >>
>     opus mailing list
>     >> opus at xiph.org <mailto:opus at xiph.org>
>     http://lists.xiph.org/mailman/listinfo/opus
>     <http://lists.xiph.org/mailman/listinfo/opus>
>     >
>     > _______________________________________________ opus mailing list
>     > opus at xiph.org <mailto:opus at xiph.org>
>     http://lists.xiph.org/mailman/listinfo/opus
>     <http://lists.xiph.org/mailman/listinfo/opus>
>     >
> 
> 


More information about the opus mailing list