On Thu, Sep 6, 2012 at 6:48 AM, Johannes Demel <[email protected]> wrote: > Hello list, > > currently I am looking for a way to use volk on arrays. Specifically not on > input and or output buffers. So I need to align my custom arrays. How do I > do this?
Yes, Volk is designed to work on any arrays, not just withing GNU Radio. You also don't actually need to align your arrays, in which case you call the _u version of the kernel. But you probably want to work on aligned memory and the aligned, _a, kernel. > What exactly does volk_get_alignment and set_alignment do? I didn't find any > documentation or source code yet. volk_get_alignment asks the machine what the correct alignment is. On non-AVX Intels, the answer is 16 bytes, but AVX has doubled the size of the SIMD registers and they now require 32-byte alignment. > Example: > > //define arrays like this: > int size = 10; // or what so ever. > gr_complex my_array1[size]; > gr_complex my_array2[size]; > gr_complex my_array3[size]; > > volk_32fc_x2_multiply_32fc_a(my_array3, my_array2, my_array1, size); > > Is it possible to do something like this? Or am I on the wrong way? > > Thanks in advance! > > Johannes You want to make sure that your arrays are created on the right alignment boundary, first. There are various ways of doing this, and some more specific to the compiler than others. Frankly, I find the fftwf_malloc() functions that are used with FFTW to be the most straight-forward, effective, and cross-platform way of handling this. So you would declare an array: gr_complex *array = (gr_complex*)fftwf_malloc(sizeof(gr_complex)*size); It does the right thing for your system's alignment. There's also a fftwf_free(array) for cleaning up, too. Tom _______________________________________________ Discuss-gnuradio mailing list [email protected] https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
