Volk development using orc

Hi list,

I am currently trying to wrap my head around volk and have some
questions concerning orc.

  • Is writing an *.orc file and adding it to the appropriate header under
    volk/include/volk/ everything that has to be done to get an initial volk
  • If I am using orc, do I still have to write a general fallback
    function in pure c++?

The reason why I want to write a volk kernel is, that I need to add two
complex vectors. I was only able to find a volk kernel for float
vectors. Am I missing something? Adding two complex vectors seems to be
such a basic and obvious operation, is there some kind of workaround or
a better alternative?

Thanks a lot,


Just add the complex stream as floats and multiply the length of the
operation x2.


On Thu, Aug 9, 2012 at 2:42 PM, Gerald B.

D’oh! Thanks that did the trick. For everyone who is interested, this is
the snippet of working code:

gr_complex *out = (gr_complex *) output_items[0];
int noi = noutput_items;
gr_complex temp1[noi];
gr_complex temp2[noi];
// do something with temp1 and temp2
volk_32f_x2_add_32f_a((float *)out, (float *)temp1, (float )temp2,

Best regards,