[opus] [RFC PATCH v2] Encode optimize using libNe10
Viswanath Puttagunta
viswanath.puttagunta at linaro.org
Mon Feb 16 10:18:45 PST 2015
Hello opus-dev,
Can we please have review on RFCv2? We have quite a few optimizations
(Eg: ifft/mdct_backwards, fixed point fft/ifft mdct_forward/backward
etc) that are in my pipeline that depend on this patch series being
accepted.
Regards,
Vish
On 4 February 2015 at 12:21, Viswanath Puttagunta
<viswanath.puttagunta at linaro.org> wrote:
> Changes from RFC PATCH v1:
> - passing arch parameter explicitly
> - reduced stack usage by ~3.5K by using scaled NE10 fft version
> - moved all optimization array functions to arm_celt_map.c
> - Other cleanups pointed out by Timothy
>
> Phil,
>
> As you mentioned earlier, could you please address all
> compile and linker errors/warnings coming out of Ne10 library?
>
> You can find my working Ne10 repo at [1]
> You can find my working opus repo at [2]
>
> Commands I used to build opus:
> Download code
> $ git clone git://git.linaro.org/people/viswanath.puttagunta/opus.git
> $ cd opus
> $ git checkout -b local_rfcv2 remotes/origin/rfcv2_final_opus_fft_ne10
>
> Compile code
> $ ./autogen.sh
> $ mkdir ../build
> $ cd ../build
> $ export PATH=$PATH:<path_to_arm-linux-gnueabihf_bin_dir>
> $ ../opus/configure --host=arm-linux-gnueabihf --enable-intrinsics --with-NE10-libraries=<path_to_Ne10_libraries> --with-NE10-includes=<path_to_Ne10_includes>
> $ make -j6
>
> Compile warnings related to Ne10:
> i. ..NE10_init.h:40:5: warning: function declaration isn't a prototype [-Wstrict-prototypes]
> extern ne10_result_t ne10_HasNEON();
> ii. NE10_init.h:45:5: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
> extern ne10_result_t ne10_init();
>
> Linker warnings related to Ne10:
> ../gcc-linaro/14.09/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/bin/../lib/gcc/arm-linux-gnueabihf/4.9.2/../../../../arm-linux-gnueabihf/bin/ld: warning: libstdc++.so.6, needed by <path>/binary/usr/local/lib/libNE10.so, not found (try using -rpath or -rpath-link)
>
> [1]: https://git.linaro.org/people/viswanath.puttagunta/Ne10.git branch: rfcv2_final_ne10_fft
> [2]: https://git.linaro.org/people/viswanath.puttagunta/opus.git branch: rfcv2_final_opus_fft_ne10
>
> Viswanath Puttagunta (1):
> armv7(float): Optimize encode usecase using NE10 library
>
> Makefile.am | 34 +--
> celt/arm/arm_celt_map.c | 47 +++-
> celt/arm/celt_ne10_fft.c | 120 ++++++++++
> celt/arm/celt_ne10_mdct.c | 158 +++++++++++++
> celt/arm/fft_arm.h | 66 ++++++
> celt/arm/mdct_arm.h | 53 +++++
> celt/celt_encoder.c | 13 +-
> celt/dump_modes/Makefile | 23 +-
> celt/dump_modes/dump_modes.c | 21 ++
> celt/dump_modes/dump_modes_arch.h | 41 ++++
> celt/dump_modes/dump_modes_arm_ne10.c | 125 ++++++++++
> celt/kiss_fft.c | 27 ++-
> celt/kiss_fft.h | 54 ++++-
> celt/mdct.c | 15 +-
> celt/mdct.h | 39 +++-
> celt/modes.c | 8 +-
> celt/static_modes_float.h | 25 ++
> celt/static_modes_float_arm_ne10.h | 404 +++++++++++++++++++++++++++++++++
> celt/tests/test_unit_dft.c | 52 +++--
> celt/tests/test_unit_mathops.c | 6 +
> celt/tests/test_unit_mdct.c | 81 ++++---
> celt/tests/test_unit_rotation.c | 6 +
> celt_headers.mk | 3 +
> celt_sources.mk | 4 +
> configure.ac | 81 +++++++
> src/analysis.c | 8 +-
> src/analysis.h | 2 +-
> src/opus_encoder.c | 2 +-
> src/opus_multistream_encoder.c | 9 +-
> 29 files changed, 1422 insertions(+), 105 deletions(-)
> create mode 100644 celt/arm/celt_ne10_fft.c
> create mode 100644 celt/arm/celt_ne10_mdct.c
> create mode 100644 celt/arm/fft_arm.h
> create mode 100644 celt/arm/mdct_arm.h
> create mode 100644 celt/dump_modes/dump_modes_arch.h
> create mode 100644 celt/dump_modes/dump_modes_arm_ne10.c
> create mode 100644 celt/static_modes_float_arm_ne10.h
>
> --
> 1.7.9.5
>
More information about the opus
mailing list