we are looking into the implementation of correlators in which the two
sequences to correlate are vectors of std::complex. For
gr_complex, we use:
volk_32fc_x2_dot_prod_32fc_a
but for shorts we would need something like
volk_16ic_x2_dot_prod_16ic_a, which does not exist. What is the best
way to go? It makes sense to implement such a function, or there is
not much gain expected with this specific data format?
way to go? It makes sense to implement such a function, or there is
not much gain expected with this specific data format?
typically the model is to add the kernel to volk, its just another
header in volk/include/volk/volk_32fc_x2_dot_prod_32fc_a.h
Write the generic (C only) implementation, and use this in your block,
test it, make sure it works. Then write another implementation using
SIMD intrinsics.
Any advice will be greatly appreciated!
gnuradio often focuses on floats and x86. It would be wonderful to see
some more fixed point contributions. go for it!
As far as performance, it depends on your CPU. For arm, fixed point
computation could be beneficial. For x86, floating point is already
pretty optimized, so less of a performance gain I assume.
-josh
PS dont listen to me, let the benchmarking decide what performs best
On Tue, Jul 31, 2012 at 05:48:50PM -0700, Josh B. wrote:
As far as performance, it depends on your CPU. For arm, fixed point
computation could be beneficial. For x86, floating point is already
pretty optimized, so less of a performance gain I assume.
-josh
PS dont listen to me, let the benchmarking decide what performs best
In general, I’d encourage the reader of discuss-gnuradio to listen to
Josh, though.
MB
–
Karlsruhe Institute of Technology (KIT)
Communications Engineering Lab (CEL)