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 <demel@ant.uni-bremen.de
<mailto:demel@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