On Tue, 2008-04-15 at 19:45 +0200, Christian Schoenebeck wrote: > Yeah, I'm respawning this topic ... > > because I was curious how the GCC vector extension situation changed > meanwhile > and wrote a small benchmark for mixing signals with and without gain. You can > find it here: > > http://download.linuxsampler.org/dev/mixdown.tar.gz > > I compared a pure C++ implementation vs. the hand crafted SSE assembly code > (by Sampo Savolainen, Ardour) and of course an implementation utilizing GCC's > vector extensions. On my very weak, but environment friendly ;-) VIA box the > GCC vector implementation outperforms the other two solutions (using GCC > 4.2.3 BTW): > > Benchmarking mixdown (no coeff): > pure C++ : 670 ms > ASM SSE : 200 ms > GCC vector extensions : 180 ms > > Benchmarking mixdown (WITH coeff): > pure C++ : 890 ms > ASM SSE : 300 ms > GCC vector extensions : 230 ms
Great stuff, very interesting. It seems it's finally getting easier to vectorize functions. Too bad the code is awfully slow for non-sse compiles. That still leaves the responsibility of choosing the fastest algorithms per architecture at runtime to the application developers. What about gcc 4.3.0 performance? I seem to recall that 4.3 should have even better vectorization support. I have to test whether I could squeeze a few more cycles out of compute_peak(). That algorithm is the sole reason I started writing SSE for ardour. The function uses a huge amount of computing time without optimization. Sampo _______________________________________________ Linux-audio-dev mailing list Linux-audio-dev@lists.linuxaudio.org http://lists.linuxaudio.org/mailman/listinfo/linux-audio-dev