On Thu, Jun 16, 2005 at 02:42:25PM -0500, David Carr wrote:
> Matt,
> 
> In an earlier post your mentioned that the CCC filter implementations
> had been considerably improved.  Here are the results on my machine
> (2.4GHz P4 no HT)
> 
> [EMAIL PROTECTED] tests $ ./benchmark_dotprod
>    generic: taps:  256  input: 4e+07  cpu: 11.630  taps/sec:  8.805e+08
>        SSE: taps:  256  input: 4e+07  cpu:  4.563  taps/sec:  2.244e+09
> [EMAIL PROTECTED] tests $ ./benchmark_dotprod_ccc
>    generic: taps:  256  input: 4e+07  cpu: 103.184  taps/sec:  9.924e+07
>        SSE: taps:  256  input: 4e+07  cpu: 16.019  taps/sec:  6.393e+08
> [EMAIL PROTECTED] tests $ ./benchmark_dotprod_ccf
>    generic: taps:  256  input: 4e+07  cpu: 100.301  taps/sec:  1.021e+08
>        SSE: taps:  256  input: 4e+07  cpu: 12.830  taps/sec:  7.981e+08
> [EMAIL PROTECTED] tests $ ./benchmark_dotprod_fcc
>    generic: taps:  256  input: 4e+07  cpu: 86.419  taps/sec:  1.185e+08
>        SSE: taps:  256  input: 4e+07  cpu: 14.059  taps/sec:  7.284e+08
> [EMAIL PROTECTED] tests $ ./benchmark_dotprod_fsf
>    generic: taps:  256  input: 4e+07  cpu: 27.738  taps/sec:  3.692e+08
>        SSE: taps:  256  input: 4e+07  cpu: 21.264  taps/sec:  4.816e+08
> [EMAIL PROTECTED] tests $ ./benchmark_dotprod_scc
>    generic: taps:  256  input: 4e+07  cpu: 94.179  taps/sec:  1.087e+08
>        SSE: taps:  256  input: 4e+07  cpu: 31.658  taps/sec:  3.235e+08
> 
> The SSRP produces short input and I usually connect it to a frequency
> xlating scf filter.  While I don't have a scf benchmark, it looks like
> the the ccc filter is 2x faster than the scc filter in SSE mode.  If my
> math is correct, a ccc filter requires more operations per tap than a
> scc filter?!?

Yes, but... you're adding short -> float conversion

> Could similar improvements be made in the sc* filters or
> should I cast my incoming short data stream into a complex stream?

I think what you are seeing is the cost of converting the input data
from short to float over and over in the scc filter (each input item
gets converted once for each tap in the filter).  You might want to
try running your short input into gr.short_to_float and then into a
f?? filter.  Think of it as hoisting a loop invariant.

Eric


_______________________________________________
Discuss-gnuradio mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/discuss-gnuradio

Reply via email to