Hi Johannes,

Thank you very much! Thanks for also providing an alternative solution if I
were to define the vector as a volk vector. Please allow me to confirm my
understanding of how to use volk vectors. So with my current definition
using std::vector <gr_complex> my_val (240); you and Brian suggested the
solution should look as follows:

volk_32fc_s32fc_multiply_32fc(my_val.data(), my_val.data(), scale, 240);

Based on your volk vector suggested solution, my interpretation is that I
would write my code as follows:
volk::vector <gr_complex> my_val (240);
....
volk_32fc_s32fc_multiply_32fc(my_val, my_val, scale, 240);   // Or do I
need to use &my_val
Also, my current code has the following: #include <volk/volk.h> do I in
addition need to include #include  <volk/volk_alloc.hh> ?

Thank you very much!
George


On Tue, May 3, 2022 at 3:35 AM Johannes Demel <de...@ant.uni-bremen.de>
wrote:

> Hi George,
>
> All VOLK functions require pointers as you already noticed. You can
> access the underlying data structure of a vector via its `.data()`
> method as Brian noted.
> Moreover, you can use `volk::vector` if you want your vectors to be
> aligned. `volk::vector` is almost a `std::vector` but uses its own
> allocator that ensures alignment.
> `volk::vector` is available in `volk/volk_alloc.hh`. Since it is a C++
> only feature.
>
> Cheers
> Johannes
>
> On 03.05.22 04:28, George Edwards wrote:
> > Hello GNURadio Community,
> >
> > I am having a problem using the above function with vector parameters.
> > If I use an array say:
> > gr_complex my_val[240];
> > volk_32fc_s32fc_multiply_32fc(my_val, my_val, scale, 240);
> >
> > It works! But if I change my_val to be a vector like below, it fails:
> > std::vector <gr_complex> my_val(240);
> >
> > The reason I need to use a vector is that with arrays, the size must be
> > known at compile time, while with vectors one can build it at runtime.
> >
> > I would appreciate any suggestions.
> > Thank you!
> >
> > George
>
>

Reply via email to