Git Product home page Git Product logo

volk's Introduction

Build Status Build status Check PR Formatting Run VOLK tests DOI

VOLK Logo

Welcome to VOLK!

VOLK is a sub-project of GNU Radio. Please see http://libvolk.org for bug tracking, documentation, source code, and contact information about VOLK. See https://www.gnuradio.org/ for information about GNU Radio.

VOLK is the Vector-Optimized Library of Kernels. It is a library that contains kernels of hand-written SIMD code for different mathematical operations. Since each SIMD architecture can be very different and no compiler has yet come along to handle vectorization properly or highly efficiently, VOLK approaches the problem differently.

For each architecture or platform that a developer wishes to vectorize for, a new proto-kernel is added to VOLK. At runtime, VOLK will select the correct proto-kernel. In this way, the users of VOLK call a kernel for performing the operation that is platform/architecture agnostic. This allows us to write portable SIMD code.

Bleeding edge code can be found in our git repository at https://www.gnuradio.org/git/volk.git/.

How to use VOLK:

For detailed instructions see http://libvolk.org/doxygen/using_volk.html

See these steps for a quick build guide.

Building on most x86 (32-bit and 64-bit) platforms

$ mkdir build
$ cd build
$ cmake ..
$ make
$ make test
$ sudo make install

# You might want to explore "make -j[SOMEVALUE]" options for your multicore CPU.

# Perform post-installation steps

# Linux OS: Link and cache shared library
$ sudo ldconfig

# macOS/Windows: Update PATH environment variable to point to lib install location

# volk_profile will profile your system so that the best kernel is used
$ volk_profile

Missing submodule

We use cpu_features to detect CPU features, e.g. AVX. Some platforms require a very recent version that is not available through the appropriate package manager. In this case you must use cpu_features as a submodule.

NOTE: Most package managers provide recent enough cpu_features versions by now. Please default to the provided cpu_features version first, and only use the submodule in cases where this fails. Please open an issue if this is the case.

There are two options to get the required code in a submodule:

git clone --recursive https://github.com/gnuradio/volk.git

will automatically clone submodules as well. In case you missed that, you can just run:

git submodule update --init --recursive

that'll pull in missing submodules.

Building on Raspberry Pi and other ARM boards (32 bit)

To build for these boards you need specify the correct cmake toolchain file for best performance.

Note: There is no need for adding extra options to the compiler for 64 bit.

  • Raspberry Pi 4 arm_cortex_a72_hardfp_native.cmake
  • Raspberry Pi 3 arm_cortex_a53_hardfp_native.cmake
$ mkdir build && cd build
$ cmake -DCMAKE_TOOLCHAIN_FILE=../cmake/Toolchains/arm_cortex_a72_hardfp_native.cmake ..
# make -j4 might be faster
$ make
$ make test
$ sudo make install

# volk_profile will profile your system so that the best kernel is used
$ volk_profile

Code of Conduct

We want to make sure everyone feels welcome. Thus, we follow our Code of Conduct.

Contributing

We are happy to accept contributions. Please refer to our contributing guide for further details. Also, make sure to read the Developer's Certificate of Origin and make sure to sign every commit with git commit -s.

Releases and development

We maintain a CHANGELOG for every release. Please refer to this file for more detailed information. We follow semantic versioning as outlined in our versioning guide.

Supported platforms

VOLK aims to be portable to as many platforms as possible. We can only run tests on some platforms.

Hardware architectures

Currently VOLK aims to run with optimized kernels on x86 with SSE/AVX and ARM with NEON. Support for MIPS and RISC-V is experimental; some kernels are known not to work on these architectures.

OS / Distro

We run tests on a variety of Ubuntu versions and aim to support as many current distros as possible. The same goal applies to different OSes. Although this does only rarely happen, it might occur that VOLK does not work on obsolete distros, e.g. Ubuntu 12.04.

Compilers

We want to make sure VOLK works with C/C++ standard compliant compilers. Of course, as an open source project we focus on open source compilers, most notably GCC and Clang. We want to make sure VOLK compiles on a wide variety of compilers. Thus, we target AppleClang and MSVC as well. Mind that MSVC lacks aligned_alloc support for aligned arrays. We use MSVC specific instructions in this case which cannot be free'd with free.

License

VOLK 3.0 and later are licensed under the GNU Lesser General Public License v3.0 or later (LGPL-3.0-or-later).

Previous VOLK version license

Earlier versions of VOLK (before VOLK 3.0) were licensed under the GNU General Public License v3.0 or later (GPL-3.0-or-later). Since then, VOLK migrated to the LGPL-3.0-or-later.

Being technical: There are 3 people left (out of 74) who we haven't been able to get in contact with (at all), for a total of 4 (out of 1092) commits, 13 (of 282822) additions, and 7 (of 170421) deletions. We have reviewed these commits and all are simple, trivial changes (e.g., 1 line change) and most are no longer relevant (e.g., to a file that no longer exists). Volk maintainers (@michaelld and @jdemel) are in agreement that the combination -- small numbers of changes per committer, simple changes per commit, commits no longer relevant -- means that we can proceed with relicensing without the approval of the folks. We will try reaching out periodically to these folks, but we believe it unlikely we will get a reply. We kindly request them to re-submit their GPL-3.0-or-later license code contributions to LGPL-3.0-or-later by adding their name, GitHub handle, and email address(es) used for VOLK commits to the file AUTHORS_RESUBMITTING_UNDER_LGPL_LICENSE.md.

Legal Matters

Some files have been changed many times throughout the years. Copyright notices at the top of source files list which years changes have been made. For some files, changes have occurred in many consecutive years. These files may often have the format of a year range (e.g., "2006 - 2011"), which indicates that these files have had copyrightable changes made during each year in the range, inclusive.

volk's People

Contributors

aang23 avatar abhowmick22 avatar argilo avatar ast avatar balister avatar brandonenochs avatar carlesfernandez avatar djanderson avatar dmiralles2009 avatar douggeiger avatar drmpeg avatar evilynux avatar fritterhoff avatar ghostop14 avatar guruofquality avatar hcab14 avatar jdemel avatar jessica-iwamoto avatar jmcorgan avatar ka-zam avatar marcusmueller avatar michaelld avatar n-west avatar noc0lour avatar osh avatar rear1019 avatar ryanvolz avatar smunaut avatar trondeau avatar zlika avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

volk's Issues

Incorrect function ranking?

I am witnessing a strange behavior on my machine wrt arch ranking. I've narrowed it down to lib/volk_rank_archs.c:101.

The code does a popcnt on impl_deps, which contains 1 << various LV_{GENERIC,SSE4_1,AVX} constants, and picks the arch with the most 1s. However, since they are powers of two, they all get the same score.

Now, simply getting rid of popcnt solves the problem (as the best archs have a higher LV_ number), but I'm not sure that's the right thing to do

volk_profile selecting bad kernesl for the E310.

benchmark_{tx/rx} fail to tx/rx data using the result of running volk_profile. Removing volk_config (so you use all generic kernels work) Here are the diffs to volk_config I use to get teh flowgrpahs to work again.

For RX:

root@ettus-e300:~# diff volk_config .volk/volk_config
49c49
< volk_32fc_x2_multiply_32fc neon_opttests neon_opttests

---
> volk_32fc_x2_multiply_32fc neon neon
60c60
< volk_32f_x2_dot_prod_32f neonasm neonasm

---
> volk_32f_x2_dot_prod_32f neon neon

For TX:

root@ettus-e300:~# diff  volk_config .volk/volk_config
60c60
< volk_32f_x2_dot_prod_32f neonasm neonasm

---
> volk_32f_x2_dot_prod_32f neon neon
89c89
< volk_32fc_s32fc_multiply_32fc neon neon

---
> volk_32fc_s32fc_multiply_32fc generic generic

SIGBUS Crash on ARMv7l with NEON

On a ODROID-XU4 ARM v7l machine, using the VOLK neon_hardfp_orc machine profile, I'm getting SIGBUS exceptions with certain neonasm kernels. These seem to be occurring because the input data isn't properly aligned, for example, with volk_32f_x2_add_32f_neonasm+24, the vld1.32 instruction has the :128 alignment specifier, but the input is clearly not aligned, as shown below:

Assembly:

0xb5b6d9e0 <volk_32f_x2_add_32f_neonasm>      push   {r7, r8, r10}
0xb5b6d9e4 <volk_32f_x2_add_32f_neonasm+4>    lsrs   r7, r3, #2
0xb5b6d9e8 <volk_32f_x2_add_32f_neonasm+8>    beq    0xb5b6da18 <volk_32f_x2_add_32f_neonasm+56>
0xb5b6d9ec <volk_32f_x2_add_32f_neonasm+12>   mov    r8, #0
0xb5b6d9f0 <volk_32f_x2_add_32f_neonasm+16>   pld    [r1, #128]      ; 0x80
0xb5b6d9f4 <volk_32f_x2_add_32f_neonasm+20>   pld    [r2, #128]      ; 0x80
0xb5b6d9f8 <volk_32f_x2_add_32f_neonasm+24>   vld1.32        {d0-d1}, [r1 :128]!
0xb5b6d9fc <volk_32f_x2_add_32f_neonasm+28>   add    r8, r8, #1
0xb5b6da00 <volk_32f_x2_add_32f_neonasm+32>   vld1.32        {d2-d3}, [r2 :128]!
0xb5b6da04 <volk_32f_x2_add_32f_neonasm+36>   vadd.f32       q2, q1, q0
0xb5b6da08 <volk_32f_x2_add_32f_neonasm+40>   cmp    r8, r7
0xb5b6da0c <volk_32f_x2_add_32f_neonasm+44>   vst1.32        {d4-d5}, [r0 :128]!

Registers:

r0             0x9ca5cbe4       2628111332
r1             0x9ca5cbe4       2628111332
r2             0x9ca9cbe4       2628373476
r3             0x13     19

Call Stack:

#0  0xb5b6d9fc in volk_32f_x2_add_32f_neonasm () from /usr/lib/arm-linux-gnueabihf/libvolk.so.1.1
#1  0xb6c0c70e in gr::blocks::add_ff_impl::work(int, std::vector<void const*, std::allocator<void const*> >&, std::vector<void*, std
::allocator<void*> >&) () from /usr/lib/arm-linux-gnueabihf/libgnuradio-blocks.so.3.7.9
#2  0xb6e2dca2 in gr::sync_block::general_work(int, std::vector<int, std::allocator<int> >&, std::vector<void const*, std::allocator
<void const*> >&, std::vector<void*, std::allocator<void*> >&) () from /usr/lib/arm-linux-gnueabihf/libgnuradio-runtime.so.3.7.9
#3  0xb6e0001a in gr::block_executor::run_one_iteration() () from /usr/lib/arm-linux-gnueabihf/libgnuradio-runtime.so.3.7.9
#4  0xb6e356b8 in gr::tpb_thread_body::tpb_thread_body(boost::shared_ptr<gr::block>, int) ()
   from /usr/lib/arm-linux-gnueabihf/libgnuradio-runtime.so.3.7.9

Looking through the other NEON kernels, it seems that others may have the same problem, e.g. volk_32f_x2_dot_prod_32f_neonasm and volk_32f_s32f_multiply_32f_neonasm, but I haven't checked them. There was also a similar issue reported in #101. Since I'm not familiar with the VOLK code, I don't know if this is actually a bug in VOLK, or in GNU Radio, since the vectors in gr::block_executor are not allocated on the heap using volk_malloc() and volk_get_alignment(). But for now, I have patched the binary by removing the alignment specifiers in this function to avoid the bug.

Rename CMake Modules with volk_modtool

The CMake Module files are not renamed to prevent clashes with regular VOLK. The most critical is VolkConfig.cmake, but others should probably be renamed as well and corresponding calls in CMakeLists.txt should be updated.

volk_8u_conv_k7_r2puppet_8u fails in Ubuntu 16.04

I cloned the volk repo and perform the installation steps as described in the README file with the caveat that I am not running the last step of $ sudo make install since I want a local copy only. I am, however, running the volk_profile executable from within the build directory as ./apps/volk_profile. While checking the output of the code I noticed the following:

RUN_VOLK_TESTS:volk_8u_conv_k7_r2puppet_8u(131071,198)
spiral completed in 191.857ms
generic completed in 2393.31ms
offset 0 in1: 1 in2: 0 tolerance was: 0
offset 1 in1: 1 in2: 0 tolerance was: 0
offset 2 in1: 1 in2: 0 tolerance was: 0
offset 3 in1: 1 in2: 0 tolerance was: 0
offset 4 in1: 1 in2: 0 tolerance was: 0
offset 5 in1: 1 in2: 0 tolerance was: 0
offset 6 in1: 1 in2: 0 tolerance was: 0
offset 7 in1: 1 in2: 0 tolerance was: 0
offset 8 in1: 1 in2: 0 tolerance was: 0
offset 9 in1: 1 in2: 0 tolerance was: 0
volk_8u_conv_k7_r2puppet_8u: fail on arch spiral
Best aligned arch: generic
Best unaligned arch: generic

Notice that the proto kernel fails and there are some print messages regarding the tolerance, not really sure I fully understand it. For additional information, I also included the architecture of the machine in question:

Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 8
On-line CPU(s) list: 0-7
Thread(s) per core: 2
Core(s) per socket: 4
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 58
Model name: Intel(R) Core(TM) i7-3632QM CPU @ 2.20GHz
Stepping: 9
CPU MHz: 1217.304
CPU max MHz: 3200.0000
CPU min MHz: 1200.0000
BogoMIPS: 4389.84
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 6144K
NUMA node0 CPU(s): 0-7

Thanks in advance for the help

test_all fails for volk_32fc_magnitude_32f on ARM (ODROID-XU4)

I have included the full commands and output here:
https://paste.fedoraproject.org/391950/

And I did read this Issue - #53 so I know that the below fail is not a show stopper, it just might confuse someone who does not dig as deep into failure messages.

But to save time here are what I think are the few relevant lines:
... snip ...
RUN_VOLK_TESTS: volk_32fc_magnitude_32f(131071,1)
generic completed in 1.112ms
a_generic completed in 1.142ms
neon completed in 0.512ms
neon_fancy_sweet completed in 0.666ms
offset 45 in1: 0.694743 in2: 0.701749 tolerance was: 0.01
offset 50 in1: 1.12784 in2: 1.13924 tolerance was: 0.01
offset 53 in1: 0.675194 in2: 0.682 tolerance was: 0.01
offset 85 in1: 1.18012 in2: 1.19196 tolerance was: 0.01
offset 165 in1: 0.605393 in2: 0.611502 tolerance was: 0.01
offset 207 in1: 0.779736 in2: 0.787542 tolerance was: 0.01
offset 238 in1: 0.922005 in2: 0.931302 tolerance was: 0.01
offset 248 in1: 0.223862 in2: 0.226108 tolerance was: 0.01
offset 293 in1: 0.947177 in2: 0.956736 tolerance was: 0.01
offset 309 in1: 0.708327 in2: 0.715429 tolerance was: 0.01
volk_32fc_magnitude_32f: fail on arch neon_fancy_sweet
Best aligned arch: neon
Best unaligned arch: neon
Failure on volk_32fc_magnitude_32f
... snip ...

Make error: processor does not support ARM mode `sbfx r11,r1,#2,#1'

Fail to install on RPi3 (Debian):

Building ASM object lib/CMakeFiles/volk_obj.dir//kernels/volk/asm/neon/volk_32f_x2_dot_prod_32f_neonasm_opts.s.o
/home/pi/gnuradio/volk/kernels/volk/asm/neon/volk_32f_x2_dot_prod_32f_neonasm_opts.s: Assembler messages:
/home/pi/gnuradio/volk/kernels/volk/asm/neon/volk_32f_x2_dot_prod_32f_neonasm_opts.s:46: Error: selected processor does not support ARM mode `sbfx r11,r1,#2,#1'
lib/CMakeFiles/volk_obj.dir/build.make:1462: recipe for target 'lib/CMakeFiles/volk_obj.dir/
/kernels/volk/asm/neon/volk_32f_x2_dot_prod_32f_neonasm_opts.s.o' failed
make[2]: *** [lib/CMakeFiles/volk_obj.dir/__/kernels/volk/asm/neon/volk_32f_x2_dot_prod_32f_neonasm_opts.s.o] Error 1
CMakeFiles/Makefile2:195: recipe for target 'lib/CMakeFiles/volk_obj.dir/all' failed
make[1]: *** [lib/CMakeFiles/volk_obj.dir/all] Error 2
Makefile:138: recipe for target 'all' failed
make: *** [all] Error 2

volk_32fc_s32fc_x2_rotator_32fc doesn't renormalize for less than N * ROTATOR_RELOAD points

If you have less than {2,4} * ROTATOR_RELOAD points in a call to the kernel (depending on sse4_1 or avx implementations), then there is never any re-normalization done.

Since the callers expect to be able to just call the kernel without handling re-normalization, this can yield a constantly decreasing amplitude on the output ...

This happens for example in the FFT freq xlating filter because the block size ends up being the FFT size and is a function of the # taps and can easily be small enough to trigger the issue.

Missing #include <arm_neon.h> in volk_16ic_s32f_deinterleave_32f_x2.h?

I have been using GNU Radio on Odroid XU3 (hardfp) with out issue but when I changed my development machine to from standard ubuntu 15.04 to xubuntu 15.04 Volk failed to compile. Not sure if its my cross compiler environment (more than likely) but adding the missing #include arm_neon,h fixes the issue.

In file included from /work/arm/release/gnuradio-3.7.8rc1/build/volk/lib/volk_machine_neon_hardfp.c:39:0:
/work/arm/release/gnuradio-3.7.8rc1/volk/kernels/volk/volk_16ic_s32f_deinterleave_32f_x2.h: In function ‘volk_16ic_s32f_deinterleave_32f_x2_neon’:
/work/arm/release/gnuradio-3.7.8rc1/volk/kernels/volk/volk_16ic_s32f_deinterleave_32f_x2.h:152:3: error: unknown type name ‘float32x4_t’
float32x4_t invScalar;

Fix below applied then everything is OK!

ifdef LV_HAVE_NEON

include <arm_neon.h>

static inline void
volk_16ic_s32f_deinterleave_32f_x2_neon(float* iBuffer, float* qBuffer, const lv_16sc_t* complexVector,
const float scalar, unsigned int num_points)
{

........

endif

Missing include files

I found that my installation of volk (v1.3) was missing some include files. For example, volk/saturation_arithmetic.h is not installed. Glancing at the CMakeLists.txt code, I noticed that volk/volk_sse_intrinsics.h also seems to be missing. Maybe there are more that I missed.

gnss-sdr build fails with volk-1.1.1

Building gnss-sdr-0.0.6 (https://github.com/gnss-sdr/gnss-sdr) with GNU Radio-3.7.8.1 (libvolk-1.1.1) fails with a number of warnings. With previous version of GNU Radio (libvolk-1.0.2) everything was OK.

The warnigs are:

...
Building CXX object src/algorithms/tracking/gnuradio_blocks/CMakeFiles/tracking_gr_blocks.dir/galileo_e1_tcp_connector_tracking_cc.cc.o
In file included from /home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/build/volk_gnsssdr_module/build/include/volk_gnsssdr/volk_gnsssdr.h:27:0,
from /home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/src/algorithms/tracking/gnuradio_blocks/galileo_volk_e1_dll_pll_veml_tracking_cc.cc:51:
/home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/build/volk_gnsssdr_module/build/include/volk_gnsssdr/volk_gnsssdr_config_fixed.h:28:0: warning: "LV_SOFTFP" redefined [enabled by default]
#define LV_SOFTFP 2
^
In file included from /usr/include/volk/volk.h:30:0,
from /home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/src/algorithms/tracking/libs/correlator.h:41,
from /home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/src/algorithms/tracking/gnuradio_blocks/galileo_volk_e1_dll_pll_veml_tracking_cc.h:47,
from /home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/src/algorithms/tracking/gnuradio_blocks/galileo_volk_e1_dll_pll_veml_tracking_cc.cc:37:
/usr/include/volk/volk_config_fixed.h:30:0: note: this is the location of the previous definition
#define LV_SOFTFP 1
^
In file included from /home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/build/volk_gnsssdr_module/build/include/volk_gnsssdr/volk_gnsssdr.h:27:0,
from /home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/src/algorithms/tracking/gnuradio_blocks/galileo_volk_e1_dll_pll_veml_tracking_cc.cc:51:
/home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/build/volk_gnsssdr_module/build/include/volk_gnsssdr/volk_gnsssdr_config_fixed.h:29:0: warning: "LV_HARDFP" redefined [enabled by default]
#define LV_HARDFP 3
^
In file included from /usr/include/volk/volk.h:30:0,
from /home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/src/algorithms/tracking/libs/correlator.h:41,
from /home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/src/algorithms/tracking/gnuradio_blocks/galileo_volk_e1_dll_pll_veml_tracking_cc.h:47,
from /home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/src/algorithms/tracking/gnuradio_blocks/galileo_volk_e1_dll_pll_veml_tracking_cc.cc:37:
/usr/include/volk/volk_config_fixed.h:31:0: note: this is the location of the previous definition
#define LV_HARDFP 2
^
In file included from /home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/build/volk_gnsssdr_module/build/include/volk_gnsssdr/volk_gnsssdr.h:27:0,
from /home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/src/algorithms/tracking/gnuradio_blocks/galileo_volk_e1_dll_pll_veml_tracking_cc.cc:51:
/home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/build/volk_gnsssdr_module/build/include/volk_gnsssdr/volk_gnsssdr_config_fixed.h:30:0: warning: "LV_NEON" redefined [enabled by default]
#define LV_NEON 4
^
In file included from /usr/include/volk/volk.h:30:0,
from /home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/src/algorithms/tracking/libs/correlator.h:41,
from /home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/src/algorithms/tracking/gnuradio_blocks/galileo_volk_e1_dll_pll_veml_tracking_cc.h:47,
from /home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/src/algorithms/tracking/gnuradio_blocks/galileo_volk_e1_dll_pll_veml_tracking_cc.cc:37:
/usr/include/volk/volk_config_fixed.h:32:0: note: this is the location of the previous definition
#define LV_NEON 3
^
In file included from /home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/build/volk_gnsssdr_module/build/include/volk_gnsssdr/volk_gnsssdr.h:27:0,
from /home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/src/algorithms/tracking/gnuradio_blocks/galileo_volk_e1_dll_pll_veml_tracking_cc.cc:51:
/home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/build/volk_gnsssdr_module/build/include/volk_gnsssdr/volk_gnsssdr_config_fixed.h:31:0: warning: "LV_32" redefined [enabled by default]
#define LV_32 5
^
In file included from /usr/include/volk/volk.h:30:0,
from /home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/src/algorithms/tracking/libs/correlator.h:41,
from /home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/src/algorithms/tracking/gnuradio_blocks/galileo_volk_e1_dll_pll_veml_tracking_cc.h:47,
from /home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/src/algorithms/tracking/gnuradio_blocks/galileo_volk_e1_dll_pll_veml_tracking_cc.cc:37:
/usr/include/volk/volk_config_fixed.h:33:0: note: this is the location of the previous definition
#define LV_32 4
^
In file included from /home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/build/volk_gnsssdr_module/build/include/volk_gnsssdr/volk_gnsssdr.h:27:0,
from /home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/src/algorithms/tracking/gnuradio_blocks/galileo_volk_e1_dll_pll_veml_tracking_cc.cc:51:
/home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/build/volk_gnsssdr_module/build/include/volk_gnsssdr/volk_gnsssdr_config_fixed.h:32:0: warning: "LV_64" redefined [enabled by default]
#define LV_64 6
^
In file included from /usr/include/volk/volk.h:30:0,
from /home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/src/algorithms/tracking/libs/correlator.h:41,
from /home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/src/algorithms/tracking/gnuradio_blocks/galileo_volk_e1_dll_pll_veml_tracking_cc.h:47,
from /home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/src/algorithms/tracking/gnuradio_blocks/galileo_volk_e1_dll_pll_veml_tracking_cc.cc:37:
/usr/include/volk/volk_config_fixed.h:34:0: note: this is the location of the previous definition
#define LV_64 5
^
In file included from /home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/build/volk_gnsssdr_module/build/include/volk_gnsssdr/volk_gnsssdr.h:27:0,
from /home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/src/algorithms/tracking/gnuradio_blocks/galileo_volk_e1_dll_pll_veml_tracking_cc.cc:51:
/home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/build/volk_gnsssdr_module/build/include/volk_gnsssdr/volk_gnsssdr_config_fixed.h:33:0: warning: "LV_3DNOW" redefined [enabled by default]
#define LV_3DNOW 7
^
In file included from /usr/include/volk/volk.h:30:0,
from /home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/src/algorithms/tracking/libs/correlator.h:41,
from /home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/src/algorithms/tracking/gnuradio_blocks/galileo_volk_e1_dll_pll_veml_tracking_cc.h:47,
from /home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/src/algorithms/tracking/gnuradio_blocks/galileo_volk_e1_dll_pll_veml_tracking_cc.cc:37:
/usr/include/volk/volk_config_fixed.h:35:0: note: this is the location of the previous definition
#define LV_3DNOW 6
^
In file included from /home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/build/volk_gnsssdr_module/build/include/volk_gnsssdr/volk_gnsssdr.h:27:0,
from /home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/src/algorithms/tracking/gnuradio_blocks/galileo_volk_e1_dll_pll_veml_tracking_cc.cc:51:
/home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/build/volk_gnsssdr_module/build/include/volk_gnsssdr/volk_gnsssdr_config_fixed.h:34:0: warning: "LV_ABM" redefined [enabled by default]
#define LV_ABM 8
^
In file included from /usr/include/volk/volk.h:30:0,
from /home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/src/algorithms/tracking/libs/correlator.h:41,
from /home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/src/algorithms/tracking/gnuradio_blocks/galileo_volk_e1_dll_pll_veml_tracking_cc.h:47,
from /home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/src/algorithms/tracking/gnuradio_blocks/galileo_volk_e1_dll_pll_veml_tracking_cc.cc:37:
/usr/include/volk/volk_config_fixed.h:36:0: note: this is the location of the previous definition
#define LV_ABM 7
^
In file included from /home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/build/volk_gnsssdr_module/build/include/volk_gnsssdr/volk_gnsssdr.h:27:0,
from /home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/src/algorithms/tracking/gnuradio_blocks/galileo_volk_e1_dll_pll_veml_tracking_cc.cc:51:
/home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/build/volk_gnsssdr_module/build/include/volk_gnsssdr/volk_gnsssdr_config_fixed.h:35:0: warning: "LV_POPCOUNT" redefined [enabled by default]
#define LV_POPCOUNT 9
^
In file included from /usr/include/volk/volk.h:30:0,
from /home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/src/algorithms/tracking/libs/correlator.h:41,
from /home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/src/algorithms/tracking/gnuradio_blocks/galileo_volk_e1_dll_pll_veml_tracking_cc.h:47,
from /home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/src/algorithms/tracking/gnuradio_blocks/galileo_volk_e1_dll_pll_veml_tracking_cc.cc:37:
/usr/include/volk/volk_config_fixed.h:37:0: note: this is the location of the previous definition
#define LV_POPCOUNT 8
^
In file included from /home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/build/volk_gnsssdr_module/build/include/volk_gnsssdr/volk_gnsssdr.h:27:0,
from /home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/src/algorithms/tracking/gnuradio_blocks/galileo_volk_e1_dll_pll_veml_tracking_cc.cc:51:
/home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/build/volk_gnsssdr_module/build/include/volk_gnsssdr/volk_gnsssdr_config_fixed.h:36:0: warning: "LV_MMX" redefined [enabled by default]
#define LV_MMX 10
^
In file included from /usr/include/volk/volk.h:30:0,
from /home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/src/algorithms/tracking/libs/correlator.h:41,
from /home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/src/algorithms/tracking/gnuradio_blocks/galileo_volk_e1_dll_pll_veml_tracking_cc.h:47,
from /home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/src/algorithms/tracking/gnuradio_blocks/galileo_volk_e1_dll_pll_veml_tracking_cc.cc:37:
/usr/include/volk/volk_config_fixed.h:38:0: note: this is the location of the previous definition
#define LV_MMX 9
^
In file included from /home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/build/volk_gnsssdr_module/build/include/volk_gnsssdr/volk_gnsssdr_typedefs.h:27:0,
from /home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/build/volk_gnsssdr_module/build/include/volk_gnsssdr/volk_gnsssdr.h:26,
from /home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/src/algorithms/tracking/gnuradio_blocks/galileo_volk_e1_dll_pll_veml_tracking_cc.cc:51:
/home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/include/volk_gnsssdr/volk_gnsssdr_complex.h:55:46: error: redefinition of 'template std::complex<_Tp> lv_cmake(const T&, const T&)'
template inline std::complex lv_cmake(const T &r, const T &i){
^
In file included from /usr/include/volk/volk_typedefs.h:30:0,
from /usr/include/volk/volk.h:29,
from /home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/src/algorithms/tracking/libs/correlator.h:41,
from /home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/src/algorithms/tracking/gnuradio_blocks/galileo_volk_e1_dll_pll_veml_tracking_cc.h:47,
from /home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/src/algorithms/tracking/gnuradio_blocks/galileo_volk_e1_dll_pll_veml_tracking_cc.cc:37:
/usr/include/volk/volk_complex.h:32:46: error: 'template std::complex<_Tp> lv_cmake(const T&, const T&)' previously declared here
template inline std::complex lv_cmake(const T &r, const T &i){
^
In file included from /home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/build/volk_gnsssdr_module/build/include/volk_gnsssdr/volk_gnsssdr_typedefs.h:27:0,
from /home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/build/volk_gnsssdr_module/build/include/volk_gnsssdr/volk_gnsssdr.h:26,
from /home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/src/algorithms/tracking/gnuradio_blocks/galileo_volk_e1_dll_pll_veml_tracking_cc.cc:51:
/home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/include/volk_gnsssdr/volk_gnsssdr_complex.h:59:53: error: redefinition of 'template typename T::value_type lv_creal(const T&)'
template inline typename T::value_type lv_creal(const T &x){
^
In file included from /usr/include/volk/volk_typedefs.h:30:0,
from /usr/include/volk/volk.h:29,
from /home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/src/algorithms/tracking/libs/correlator.h:41,
from /home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/src/algorithms/tracking/gnuradio_blocks/galileo_volk_e1_dll_pll_veml_tracking_cc.h:47,
from /home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/src/algorithms/tracking/gnuradio_blocks/galileo_volk_e1_dll_pll_veml_tracking_cc.cc:37:
/usr/include/volk/volk_complex.h:36:53: error: 'template typename T::value_type lv_creal(const T&)' previously declared here
template inline typename T::value_type lv_creal(const T &x){
^
In file included from /home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/build/volk_gnsssdr_module/build/include/volk_gnsssdr/volk_gnsssdr_typedefs.h:27:0,
from /home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/build/volk_gnsssdr_module/build/include/volk_gnsssdr/volk_gnsssdr.h:26,
from /home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/src/algorithms/tracking/gnuradio_blocks/galileo_volk_e1_dll_pll_veml_tracking_cc.cc:51:
/home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/include/volk_gnsssdr/volk_gnsssdr_complex.h:63:53: error: redefinition of 'template typename T::value_type lv_cimag(const T&)'
template inline typename T::value_type lv_cimag(const T &x){
^
In file included from /usr/include/volk/volk_typedefs.h:30:0,
from /usr/include/volk/volk.h:29,
from /home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/src/algorithms/tracking/libs/correlator.h:41,
from /home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/src/algorithms/tracking/gnuradio_blocks/galileo_volk_e1_dll_pll_veml_tracking_cc.h:47,
from /home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/src/algorithms/tracking/gnuradio_blocks/galileo_volk_e1_dll_pll_veml_tracking_cc.cc:37:
/usr/include/volk/volk_complex.h:40:53: error: 'template typename T::value_type lv_cimag(const T&)' previously declared here
template inline typename T::value_type lv_cimag(const T &x){
^
In file included from /home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/build/volk_gnsssdr_module/build/include/volk_gnsssdr/volk_gnsssdr_typedefs.h:27:0,
from /home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/build/volk_gnsssdr_module/build/include/volk_gnsssdr/volk_gnsssdr.h:26,
from /home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/src/algorithms/tracking/gnuradio_blocks/galileo_volk_e1_dll_pll_veml_tracking_cc.cc:51:
/home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/include/volk_gnsssdr/volk_gnsssdr_complex.h:67:32: error: redefinition of 'template T lv_conj(const T&)'
template inline T lv_conj(const T &x){
^
In file included from /usr/include/volk/volk_typedefs.h:30:0,
from /usr/include/volk/volk.h:29,
from /home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/src/algorithms/tracking/libs/correlator.h:41,
from /home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/src/algorithms/tracking/gnuradio_blocks/galileo_volk_e1_dll_pll_veml_tracking_cc.h:47,
from /home/wk/rpmbuild/BUILD/gnss-sdr-0.0.6/src/algorithms/tracking/gnuradio_blocks/galileo_volk_e1_dll_pll_veml_tracking_cc.cc:37:
/usr/include/volk/volk_complex.h:44:32: error: 'template T lv_conj(const T&)' previously declared here
template inline T lv_conj(const T &x){
^
...

volk_32f_x2_pow_32f: fail on arch u_sse4_1

When compiling on windows with msvc test_all fails , initially I wrote this off to a compiler problem, however when digging deeper into the problem, it seems data related (test_all uses rand() to generate random data, which seem to use a different algorithm on windows).

I extracted a small test case that's able to reproduce the problem on Linux/x64.

test code:

#include <volk/volk.h>
#include <stdio.h>

int main(int argc, char**argv)
{
                float a[] = { -0.852535, -0.864864, -0.100314, 0.871761};
                float b[] = { 0.510544, 0.148595, -1.000000, -0.196265};
                float generic_output[4];
                float sse4_u_output[4];

                volk_32f_x2_pow_32f_manual(generic_output, b,a, 4, "generic");
                volk_32f_x2_pow_32f_manual(sse4_u_output, b, a, 4, "u_sse4_1");
                for (int i = 0; i < 4; i++)
                {
                        printf("%f %f\n", generic_output[i], sse4_u_output[i]);
                }

                return 0;
}

output

Using Volk machine: avx_64_mmx
-nan 0.921084
-nan 0.978433
-9.968699 9.977540
1.027301 1.027618

Fatal error: volk/constants.h: no such file or directory

I'm trying to compile this for gnuradio on the Raspberry Pi. cmake ../ failed because DOXYGEN_EXECUTABLE, ORC_LIBRARY ORC_INCLUDE_DIR ORCC_EXECUTABLE were missing plus cmake error CMake >= 2.8.10 is required for ARM NEON support occurred.

I found someone on reddit suggested

cmake -Dhave_mfpu_neon=0 -DCMAKE_CXX_FLAGS:STRING="-march=armv6 -mfpu=vfp -mfloat-abi=hard" -DCMAKE_C_FLAGS:STRING="-march=armv6 -mfpu=vfp -mfloat-abi=hard" ../

This created build files but still some warning occurred

-- Not enabling ASM support. CMake >= 2.8.10 required.
-- Did not find liborc and orcc, disabling orc support...
-- Loading build date Wed, 03 Jun 2015 21:37:46 into constants...
-- Loading version v1.0-32-g372ad7dc into constants...
-- Using install prefix: /usr/local
-- Configuring done
-- Generating done
-- Build files have been written to: /home/pi/volk/build

Make then produce the following errors

[ 40%] Building C object lib/CMakeFiles/volk_obj.dir/constants.c.o
/home/pi/volk/build/lib/constants.c:27:28: fatal error: volk/constants.h: No such file or directory
compilation terminated.
lib/CMakeFiles/volk_obj.dir/build.make:1143: recipe for target 'lib/CMakeFiles/volk_obj.dir/constants.c.o' failed
make[2]: *** [lib/CMakeFiles/volk_obj.dir/constants.c.o] Error 1
CMakeFiles/Makefile2:180: recipe for target 'lib/CMakeFiles/volk_obj.dir/all' failed
make[1]: *** [lib/CMakeFiles/volk_obj.dir/all] Error 2
Makefile:123: recipe for target 'all' failed
make: *** [all] Error 2

Would you provide some direction on how to correct this error?

test_all fails for volk_32fc_magnitude_32f and volk_32f_sqrt_32f on neon

$ uname -a
Linux odroid 3.10.82-57 #1 SMP PREEMPT Wed Oct 7 13.19:01 BRT 2015 armv7l armv7l armv7l GNU/Linux
Start testing: Nov 12 18:22 UTC
----------------------------------------------------------
1/1 Testing: qa_test_all
1/1 Test: qa_test_all
Command: "/bin/sh" "/home/odroid/Desktop/volk/build/lib/test_all_test.sh" "/home/odroid/Desktop/volk/build/lib" "/home/odroid/Desktop/volk/build/lib"
Directory: /home/odroid/Desktop/volk/build/lib
"qa_test_all" start time: Nov 12 18:22 UTC
Output:
----------------------------------------------------------
Using Volk machine: neon_hardfp_orc
RUN_VOLK_TESTS: volk_64u_popcntpuppet_64u(131071,1)
generic completed in 1.36ms
neon completed in 1.572ms
Best aligned arch: generic
Best unaligned arch: generic
RUN_VOLK_TESTS: volk_16u_byteswappuppet_16u(131071,1)
generic completed in 0.376ms
neon completed in 0.338ms
neon_table completed in 0.361ms
Best aligned arch: neon
Best unaligned arch: neon
RUN_VOLK_TESTS: volk_32u_byteswappuppet_32u(131071,1)
generic completed in 0.588ms
neon completed in 0.558ms
Best aligned arch: neon
Best unaligned arch: neon
RUN_VOLK_TESTS: volk_32u_popcntpuppet_32u(131071,1)
generic completed in 0.862ms
Best aligned arch: generic
Best unaligned arch: generic
RUN_VOLK_TESTS: volk_64u_byteswappuppet_64u(131071,1)
generic completed in 1.413ms
neon completed in 1.201ms
Best aligned arch: neon
Best unaligned arch: neon
RUN_VOLK_TESTS: volk_32fc_s32fc_rotatorpuppet_32fc(131071,1)
generic completed in 9.563ms
Best aligned arch: generic
Best unaligned arch: generic
RUN_VOLK_TESTS: volk_8u_conv_k7_r2puppet_8u(131071,0)
generic completed in 0.004ms
Best aligned arch: generic
Best unaligned arch: generic
RUN_VOLK_TESTS: volk_32f_x2_fm_detectpuppet_32f(131071,1)
generic completed in 2.002ms
Best aligned arch: generic
Best unaligned arch: generic
RUN_VOLK_TESTS: volk_16ic_s32f_deinterleave_real_32f(131071,1)
generic completed in 0.773ms
Best aligned arch: generic
Best unaligned arch: generic
RUN_VOLK_TESTS: volk_16ic_deinterleave_real_8i(131071,1)
generic completed in 0.42ms
neon completed in 0.407ms
u_orc completed in 2.634ms
Best aligned arch: neon
Best unaligned arch: neon
RUN_VOLK_TESTS: volk_16ic_deinterleave_16i_x2(131071,1)
generic completed in 0.638ms
u_orc completed in 0.911ms
Best aligned arch: generic
Best unaligned arch: generic
RUN_VOLK_TESTS: volk_16ic_s32f_deinterleave_32f_x2(131071,1)
generic completed in 0.932ms
neon completed in 0.928ms
u_orc completed in 1.415ms
Best aligned arch: neon
Best unaligned arch: neon
RUN_VOLK_TESTS: volk_16ic_deinterleave_real_16i(131071,1)
generic completed in 0.411ms
Best aligned arch: generic
Best unaligned arch: generic
RUN_VOLK_TESTS: volk_16ic_magnitude_16i(131071,1)
generic completed in 1.864ms
Best aligned arch: generic
Best unaligned arch: generic
RUN_VOLK_TESTS: volk_16ic_s32f_magnitude_32f(131071,1)
generic completed in 1.365ms
Best aligned arch: generic
Best unaligned arch: generic
RUN_VOLK_TESTS: volk_16i_s32f_convert_32f(131071,1)
generic completed in 0.31ms
neon completed in 0.274ms
a_generic completed in 0.245ms
Best aligned arch: a_generic
Best unaligned arch: neon
RUN_VOLK_TESTS: volk_16i_convert_8i(131071,1)
generic completed in 0.201ms
neon completed in 0.201ms
a_generic completed in 0.229ms
Best aligned arch: generic
Best unaligned arch: generic
RUN_VOLK_TESTS: volk_16i_32fc_dot_prod_32fc(131071,1)
generic completed in 0.823ms
neon completed in 0.769ms
Best aligned arch: neon
Best unaligned arch: neon
RUN_VOLK_TESTS: volk_32f_accumulator_s32f(131071,1)
generic completed in 0.445ms
Best aligned arch: generic
Best unaligned arch: generic
RUN_VOLK_TESTS: volk_32f_x2_add_32f(131071,1)
generic completed in 0.799ms
u_neon completed in 0.674ms
neonasm completed in 0.621ms
neonpipeline completed in 0.567ms
a_generic completed in 0.64ms
u_orc completed in 0.933ms
Best aligned arch: neonpipeline
Best unaligned arch: neonpipeline
RUN_VOLK_TESTS: volk_32fc_32f_multiply_32fc(131071,1)
generic completed in 1.134ms
neon completed in 1.103ms
u_orc completed in 1.337ms
Best aligned arch: neon
Best unaligned arch: neon
RUN_VOLK_TESTS: volk_32f_log2_32f(131071,1)
generic completed in 6.236ms
neon completed in 0.718ms
u_generic completed in 6.076ms
Best aligned arch: neon
Best unaligned arch: neon
RUN_VOLK_TESTS: volk_32f_expfast_32f(131071,1)
generic completed in 6.939ms
Best aligned arch: generic
Best unaligned arch: generic
RUN_VOLK_TESTS: volk_32f_x2_pow_32f(131071,1)
generic completed in 18.923ms
Best aligned arch: generic
Best unaligned arch: generic
RUN_VOLK_TESTS: volk_32f_sin_32f(131071,1)
generic completed in 3.841ms
Best aligned arch: generic
Best unaligned arch: generic
RUN_VOLK_TESTS: volk_32f_cos_32f(131071,1)
generic completed in 4.42ms
Best aligned arch: generic
Best unaligned arch: generic
RUN_VOLK_TESTS: volk_32f_tan_32f(131071,1)
generic completed in 7.217ms
Best aligned arch: generic
Best unaligned arch: generic
RUN_VOLK_TESTS: volk_32f_atan_32f(131071,1)
generic completed in 6.226ms
Best aligned arch: generic
Best unaligned arch: generic
RUN_VOLK_TESTS: volk_32f_asin_32f(131071,1)
u_generic completed in 10.101ms
Best aligned arch: u_generic
Best unaligned arch: u_generic
RUN_VOLK_TESTS: volk_32f_acos_32f(131071,1)
generic completed in 10.736ms
Best aligned arch: generic
Best unaligned arch: generic
RUN_VOLK_TESTS: volk_32fc_s32f_power_32fc(131071,1)
generic completed in 131.716ms
Best aligned arch: generic
Best unaligned arch: generic
RUN_VOLK_TESTS: volk_32f_s32f_calc_spectral_noise_floor_32f(131071,1)
generic completed in 0.944ms
Best aligned arch: generic
Best unaligned arch: generic
RUN_VOLK_TESTS: volk_32fc_s32f_atan2_32f(131071,1)
generic completed in 13.342ms
Best aligned arch: generic
Best unaligned arch: generic
RUN_VOLK_TESTS: volk_32fc_x2_conjugate_dot_prod_32fc(131071,1)
generic completed in 1.301ms
neon completed in 1.175ms
a_generic completed in 1.233ms
Best aligned arch: neon
Best unaligned arch: neon
RUN_VOLK_TESTS: volk_32fc_deinterleave_32f_x2(131071,1)
neon completed in 1.207ms
generic completed in 1.296ms
Best aligned arch: neon
Best unaligned arch: neon
RUN_VOLK_TESTS: volk_32fc_deinterleave_64f_x2(131071,1)
generic completed in 1.756ms
a_generic completed in 1.933ms
Best aligned arch: generic
Best unaligned arch: generic
RUN_VOLK_TESTS: volk_32fc_s32f_deinterleave_real_16i(131071,1)
generic completed in 0.717ms
Best aligned arch: generic
Best unaligned arch: generic
RUN_VOLK_TESTS: volk_32fc_deinterleave_imag_32f(131071,1)
neon completed in 0.799ms
generic completed in 0.716ms
Best aligned arch: generic
Best unaligned arch: generic
RUN_VOLK_TESTS: volk_32fc_deinterleave_real_32f(131071,1)
generic completed in 0.808ms
neon completed in 0.71ms
Best aligned arch: neon
Best unaligned arch: neon
RUN_VOLK_TESTS: volk_32fc_deinterleave_real_64f(131071,1)
generic completed in 0.962ms
Best aligned arch: generic
Best unaligned arch: generic
RUN_VOLK_TESTS: volk_32fc_x2_dot_prod_32fc(131071,1)
generic completed in 1.294ms
a_generic completed in 1.354ms
neon completed in 1.06ms
neon_opttests completed in 1.03ms
neon_optfma completed in 1.032ms
neon_optfmaunroll completed in 1.313ms
Best aligned arch: neon_opttests
Best unaligned arch: neon_opttests
RUN_VOLK_TESTS: volk_32fc_32f_dot_prod_32fc(131071,1)
generic completed in 0.966ms
neon_unroll completed in 1.05ms
a_neon completed in 0.962ms
a_neonasm completed in 0.96ms
a_neonasmvmla completed in 0.729ms
a_neonpipeline completed in 0.728ms
Best aligned arch: a_neonpipeline
Best unaligned arch: generic
RUN_VOLK_TESTS: volk_32fc_index_max_16u(131071,1)
generic completed in 0.767ms
Best aligned arch: generic
Best unaligned arch: generic
RUN_VOLK_TESTS: volk_32fc_s32f_magnitude_16i(131071,1)
generic completed in 1.213ms
u_orc completed in 2.251ms
Best aligned arch: generic
Best unaligned arch: generic
RUN_VOLK_TESTS: volk_32fc_magnitude_32f(131071,1)
generic completed in 1.051ms
a_generic completed in 1.093ms
neon completed in 0.498ms
neon_fancy_sweet completed in 0.67ms
u_orc completed in 1.887ms
offset 0 in1: 0.534498 in2: 0.533203
offset 1 in1: 0.841254 in2: 0.839844
offset 2 in1: 0.684952 in2: 0.683594
offset 3 in1: 0.815102 in2: 0.814453
offset 4 in1: 0.982758 in2: 0.982422
offset 5 in1: 0.785373 in2: 0.783203
offset 6 in1: 0.163299 in2: 0.163086
offset 7 in1: 0.65236 in2: 0.650391
offset 8 in1: 0.461006 in2: 0.459961
offset 9 in1: 0.430791 in2: 0.430664
volk_32fc_magnitude_32f: fail on arch neon
offset 0 in1: 0.534498 in2: 0.53989
offset 1 in1: 0.841254 in2: 0.833308
offset 2 in1: 0.684952 in2: 0.686307
offset 3 in1: 0.815102 in2: 0.810206
offset 4 in1: 0.982758 in2: 0.975085
offset 5 in1: 0.785373 in2: 0.787176
offset 6 in1: 0.163299 in2: 0.163473
offset 7 in1: 0.65236 in2: 0.652324
offset 8 in1: 0.461006 in2: 0.463937
offset 9 in1: 0.430791 in2: 0.427668
volk_32fc_magnitude_32f: fail on arch neon_fancy_sweet
Best aligned arch: neon
Best unaligned arch: neon
Failure on volk_32fc_magnitude_32f
RUN_VOLK_TESTS: volk_32fc_magnitude_squared_32f(131071,1)
generic completed in 0.636ms
neon completed in 0.587ms
a_generic completed in 0.563ms
Best aligned arch: a_generic
Best unaligned arch: neon
RUN_VOLK_TESTS: volk_32fc_x2_multiply_32fc(131071,1)
generic completed in 2.309ms
a_generic completed in 2.209ms
neon completed in 1.464ms
neon_opttests completed in 1.516ms
neonasm completed in 1.378ms
u_orc completed in 1.936ms
Best aligned arch: neonasm
Best unaligned arch: neonasm
RUN_VOLK_TESTS: volk_32fc_x2_multiply_conjugate_32fc(131071,1)
generic completed in 2.221ms
neon completed in 1.448ms
a_generic completed in 2.286ms
Best aligned arch: neon
Best unaligned arch: neon
RUN_VOLK_TESTS: volk_32fc_conjugate_32fc(131071,1)
generic completed in 0.926ms
a_neon completed in 0.976ms
a_generic completed in 0.779ms
Best aligned arch: a_generic
Best unaligned arch: generic
RUN_VOLK_TESTS: volk_32f_s32f_convert_16i(131071,1)
generic completed in 1.992ms
a_generic completed in 1.632ms
Best aligned arch: a_generic
Best unaligned arch: generic
RUN_VOLK_TESTS: volk_32f_s32f_convert_32i(131071,1)
generic completed in 1.034ms
a_generic completed in 0.626ms
Best aligned arch: a_generic
Best unaligned arch: generic
RUN_VOLK_TESTS: volk_32f_convert_64f(131071,1)
generic completed in 0.869ms
a_generic completed in 0.601ms
Best aligned arch: a_generic
Best unaligned arch: generic
RUN_VOLK_TESTS: volk_32f_s32f_convert_8i(131071,1)
generic completed in 1.991ms
a_generic completed in 1.72ms
Best aligned arch: a_generic
Best unaligned arch: generic
RUN_VOLK_TESTS: volk_32fc_s32f_power_spectrum_32f(131071,1)
generic completed in 10.368ms
Best aligned arch: generic
Best unaligned arch: generic
RUN_VOLK_TESTS: volk_32fc_x2_square_dist_32f(131071,1)
neon completed in 0.74ms
generic completed in 0.696ms
Best aligned arch: generic
Best unaligned arch: generic
RUN_VOLK_TESTS: volk_32fc_x2_s32f_square_dist_scalar_mult_32f(131071,1)
generic completed in 0.745ms
Best aligned arch: generic
Best unaligned arch: generic
RUN_VOLK_TESTS: volk_32f_x2_divide_32f(131071,1)
generic completed in 1.141ms
u_orc completed in 1.039ms
Best aligned arch: u_orc
Best unaligned arch: u_orc
RUN_VOLK_TESTS: volk_32f_x2_dot_prod_32f(131071,1)
generic completed in 0.591ms
a_generic completed in 0.562ms
neonopts completed in 0.561ms
neon completed in 0.557ms
neonasm completed in 0.475ms
neonasm_opts completed in 0.532ms
Best aligned arch: neonasm
Best unaligned arch: neonasm
RUN_VOLK_TESTS: volk_32f_x2_s32f_interleave_16ic(131071,1)
generic completed in 0.908ms
Best aligned arch: generic
Best unaligned arch: generic
RUN_VOLK_TESTS: volk_32f_x2_interleave_32fc(131071,1)
neon completed in 0.963ms
generic completed in 0.831ms
Best aligned arch: generic
Best unaligned arch: generic
RUN_VOLK_TESTS: volk_32f_x2_max_32f(131071,1)
neon completed in 0.716ms
generic completed in 0.824ms
u_orc completed in 0.967ms
Best aligned arch: neon
Best unaligned arch: neon
RUN_VOLK_TESTS: volk_32f_x2_min_32f(131071,1)
neon completed in 0.703ms
generic completed in 0.674ms
u_orc completed in 0.934ms
Best aligned arch: generic
Best unaligned arch: generic
RUN_VOLK_TESTS: volk_32f_x2_multiply_32f(131071,1)
generic completed in 0.707ms
neon completed in 0.682ms
a_generic completed in 0.808ms
u_orc completed in 0.942ms
Best aligned arch: neon
Best unaligned arch: neon
RUN_VOLK_TESTS: volk_32f_s32f_normalize(131071,1)
generic completed in 0.562ms
u_orc completed in 0.683ms
Best aligned arch: generic
Best unaligned arch: generic
RUN_VOLK_TESTS: volk_32f_s32f_power_32f(131071,1)
generic completed in 29.328ms
Best aligned arch: generic
Best unaligned arch: generic
RUN_VOLK_TESTS: volk_32f_sqrt_32f(131071,1)
neon completed in 0.57ms
generic completed in 3.499ms
u_orc completed in 1.006ms
offset 0 in1: 0.967265 in2: 0.964844
offset 3 in1: 0.376542 in2: 0.375977
offset 5 in1: 0.73647 in2: 0.734375
offset 6 in1: 0.787878 in2: 0.787109
offset 7 in1: 0.304173 in2: 0.303711
offset 9 in1: 0.198315 in2: 0.198242
offset 13 in1: 0.950792 in2: 0.949219
offset 14 in1: 0.402921 in2: 0.40332
offset 15 in1: 0.491662 in2: 0.491211
offset 18 in1: 0.622706 in2: 0.623047
volk_32f_sqrt_32f: fail on arch neon
Best aligned arch: neon
Best unaligned arch: neon
RUN_VOLK_TESTS: volk_32f_s32f_stddev_32f(131071,1)
Failure on volk_32f_sqrt_32f
generic completed in 0.454ms
Best aligned arch: generic
Best unaligned arch: generic
RUN_VOLK_TESTS: volk_32f_stddev_and_mean_32f_x2(131071,1)
generic completed in 0.527ms
Best aligned arch: generic
Best unaligned arch: generic
RUN_VOLK_TESTS: volk_32f_x2_subtract_32f(131071,1)
generic completed in 0.788ms
neon completed in 0.696ms
u_orc completed in 0.969ms
Best aligned arch: neon
Best unaligned arch: neon
RUN_VOLK_TESTS: volk_32f_x3_sum_of_poly_32f(131071,1)
generic completed in 1.322ms
a_neon completed in 0.839ms
neonvert completed in 0.436ms
Best aligned arch: neonvert
Best unaligned arch: neonvert
RUN_VOLK_TESTS: volk_32i_x2_and_32i(131071,1)
neon completed in 0.792ms
generic completed in 0.693ms
u_orc completed in 1.042ms
Best aligned arch: generic
Best unaligned arch: generic
RUN_VOLK_TESTS: volk_32i_s32f_convert_32f(131071,1)
generic completed in 0.534ms
a_generic completed in 0.56ms
Best aligned arch: generic
Best unaligned arch: generic
RUN_VOLK_TESTS: volk_32i_x2_or_32i(131071,1)
neon completed in 0.684ms
generic completed in 0.688ms
u_orc completed in 0.982ms
Best aligned arch: neon
Best unaligned arch: neon
RUN_VOLK_TESTS: volk_32f_x2_dot_prod_16i(131071,1)
generic completed in 0.61ms
Best aligned arch: generic
Best unaligned arch: generic
RUN_VOLK_TESTS: volk_64f_convert_32f(131071,1)
generic completed in 0.863ms
a_generic completed in 0.719ms
Best aligned arch: a_generic
Best unaligned arch: generic
RUN_VOLK_TESTS: volk_64f_x2_max_64f(131071,1)
generic completed in 1.449ms
Best aligned arch: generic
Best unaligned arch: generic
RUN_VOLK_TESTS: volk_64f_x2_min_64f(131071,1)
generic completed in 1.439ms
Best aligned arch: generic
Best unaligned arch: generic
RUN_VOLK_TESTS: volk_8ic_deinterleave_16i_x2(131071,1)
generic completed in 0.358ms
Best aligned arch: generic
Best unaligned arch: generic
RUN_VOLK_TESTS: volk_8ic_s32f_deinterleave_32f_x2(131071,1)
generic completed in 0.635ms
Best aligned arch: generic
Best unaligned arch: generic
RUN_VOLK_TESTS: volk_8ic_deinterleave_real_16i(131071,1)
generic completed in 0.207ms
Best aligned arch: generic
Best unaligned arch: generic
RUN_VOLK_TESTS: volk_8ic_s32f_deinterleave_real_32f(131071,1)
generic completed in 0.333ms
Best aligned arch: generic
Best unaligned arch: generic
RUN_VOLK_TESTS: volk_8ic_deinterleave_real_8i(131071,1)
generic completed in 0.229ms
neon completed in 0.108ms
Best aligned arch: neon
Best unaligned arch: neon
RUN_VOLK_TESTS: volk_8ic_x2_multiply_conjugate_16ic(131071,1)
generic completed in 2.559ms
Best aligned arch: generic
Best unaligned arch: generic
RUN_VOLK_TESTS: volk_8ic_x2_s32f_multiply_conjugate_32fc(131071,1)
generic completed in 2.376ms
Best aligned arch: generic
Best unaligned arch: generic
RUN_VOLK_TESTS: volk_8i_convert_16i(131071,1)
generic completed in 0.156ms
a_generic completed in 0.195ms
neon completed in 0.154ms
u_orc completed in 0.473ms
Best aligned arch: neon
Best unaligned arch: neon
RUN_VOLK_TESTS: volk_8i_s32f_convert_32f(131071,1)
generic completed in 0.206ms
a_generic completed in 0.198ms
u_orc completed in 0.62ms
Best aligned arch: a_generic
Best unaligned arch: generic
RUN_VOLK_TESTS: volk_32fc_s32fc_multiply_32fc(131071,1)
generic completed in 1.58ms
neon completed in 0.988ms
a_generic completed in 1.491ms
Best aligned arch: neon
Best unaligned arch: neon
RUN_VOLK_TESTS: volk_32f_s32f_multiply_32f(131071,1)
generic completed in 0.599ms
u_neon completed in 0.438ms
a_generic completed in 0.426ms
u_orc completed in 0.672ms
Best aligned arch: a_generic
Best unaligned arch: u_neon
RUN_VOLK_TESTS: volk_32f_binary_slicer_32i(131071,1)
generic completed in 0.942ms
generic_branchless completed in 0.615ms
Best aligned arch: generic_branchless
Best unaligned arch: generic_branchless
RUN_VOLK_TESTS: volk_32f_binary_slicer_8i(131071,1)
generic completed in 0.471ms
generic_branchless completed in 0.776ms
neon completed in 0.546ms
Best aligned arch: generic
Best unaligned arch: generic
RUN_VOLK_TESTS: volk_32f_tanh_32f(131071,1)
generic completed in 10.519ms
series completed in 1.362ms
Best aligned arch: series
Best unaligned arch: series
RUN_VOLK_TESTS: volk_8u_x3_encodepolarpuppet_8u(131071,1)
generic completed in 1.611ms
Best aligned arch: generic
Best unaligned arch: generic
RUN_VOLK_TESTS: volk_32f_8u_polarbutterflypuppet_32f(131071,1)
generic completed in 9.503ms
Best aligned arch: generic
Best unaligned arch: generic
Kernel QA finished: 2 failures out of 93 tests.
The following kernels failed QA:
    volk_32fc_magnitude_32f
    volk_32f_sqrt_32f
<end of output>
Test time =   6.35 sec
----------------------------------------------------------
Test Failed.
"qa_test_all" end time: Nov 12 18:22 UTC
"qa_test_all" time elapsed: 00:00:06
----------------------------------------------------------

End testing: Nov 12 18:22 UTC

volk_free causes Segmentation fault

I generated a new GR block in an OOT module which is a 'noblock'.
I instantiate it inside a sync block with a boost::shared_ptr, do signal processing and destruct the flowgraph.
OS: Ubuntu 16.04 in a VirtualBox
VOLK version: 1.2.2, commit f1c4b55

During destruction, I get a SegFault. That's the gdb output

Thread 1 "python" received signal SIGSEGV, Segmentation fault.
0x00007ffff7870bd6 in _int_free (av=0x7ffff7bb4b20 <main_arena>, p=<optimized out>, have_lock=0)
    at malloc.c:4015
4015    malloc.c: No such file or directory.

First I thought it might be a general problem. But that's not the case. I can 'volk_free' ~4 aligned arrays. (I do have 9 in total). But if I try to properly free 5 or more, I get this SegFault. I hope it helps to track this thing down.

That's the backtrace

(gdb) bt

#0  0x00007ffff7870bd6 in _int_free (av=0x7ffff7bb4b20 <main_arena>, p=<optimized out>, have_lock=0)

at malloc.c:4015

#1  0x00007ffff7874abc in __GI___libc_free (mem=<optimized out>) at malloc.c:2969
#2  0x00007fffd4f5e2a0 in gr::gfdm::modulator_kernel_cc::~modulator_kernel_cc() ()

   from [HOME]/src/gr-gfdm/build/lib/libgnuradio-gfdm.so
#3  0x00007fffd4f5ddab in void boost::checked_deletegr::gfdm::modulator_kernel_cc(gr::gfdm::modulator_kernel_cc*) () from [HOME]/src/gr-gfdm/build/lib/libgnuradio-gfdm.so
#4  0x00007fffd4f5de3c in boost::detail::sp_counted_impl_pgr::gfdm::modulator_kernel_cc::dispose() ()

   from [HOME]/src/gr-gfdm/build/lib/libgnuradio-gfdm.so
#5  0x00007fffd4f44ad2 in boost::detail::sp_counted_base::release() ()

   from [HOME]/src/gr-gfdm/build/lib/libgnuradio-gfdm.so
#6  0x00007fffd4f44b65 in boost::detail::shared_count::~shared_count() ()

   from [HOME]/src/gr-gfdm/build/lib/libgnuradio-gfdm.so
#7  0x00007fffd4f5d862 in boost::shared_ptrgr::gfdm::modulator_kernel_cc::~shared_ptr() ()

   from [HOME]/src/gr-gfdm/build/lib/libgnuradio-gfdm.so
#8  0x00007fffd4f5d3c1 in gr::gfdm::simple_modulator_cc_impl::~simple_modulator_cc_impl() ()

   from [HOME]/src/gr-gfdm/build/lib/libgnuradio-gfdm.so
#9  0x00007fffd4f5d474 in gr::gfdm::simple_modulator_cc_impl::~simple_modulator_cc_impl() ()

   from [HOME]/src/gr-gfdm/build/lib/libgnuradio-gfdm.so
#10 0x00007fffe984e1d2 in boost::detail::sp_counted_base::release (this=0x269bc40)

at /usr/include/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp:146

#11 0x00007fffe984e83c in std::_Destroygr::edge (__pointer=<optimized out>)

at /usr/include/c++/5/bits/stl_construct.h:93

#12 std::_Destroy_aux<false>::__destroygr::edge* (__last=<optimized out>, __first=0x269b350)

at /usr/include/c++/5/bits/stl_construct.h:103

#13 std::_Destroygr::edge* (__last=<optimized out>, __first=<optimized out>)

at /usr/include/c++/5/bits/stl_construct.h:126

#14 std::_Destroy<gr::edge*, gr::edge> (__last=0x269b380, __first=0x269b320)

at /usr/include/c++/5/bits/stl_construct.h:151

#15 std::vector<gr::edge, std::allocator<gr::edge> >::_M_erase_at_end (this=0x2636010, __pos=0x269b320)

at /usr/include/c++/5/bits/stl_vector.h:1438

#16 std::vector<gr::edge, std::allocator<gr::edge> >::clear (this=0x2636010)

at /usr/include/c++/5/bits/stl_vector.h:1212

#17 gr::flowgraph::clear (this=0x2635ff0)

at [prefix]/src/gnuradio/gnuradio-runtime/lib/flowgraph.cc:128

#18 0x00007fffe985f595 in gr::hier_block2_detail::disconnect_all (this=0x1fa3b90)

at [prefix]/src/gnuradio/gnuradio-runtime/lib/hier_block2_detail.cc:518

#19 0x00007fffe985b0dc in gr::hier_block2::disconnect_all (this=this@entry=0x2638140)

at [prefix]/src/gnuradio/gnuradio-runtime/lib/hier_block2.cc:140

#20 0x00007fffe985b0fc in gr::hier_block2::~hier_block2 (this=0x2638140, __in_chrg=<optimized out>)

at [prefix]/src/gnuradio/gnuradio-runtime/lib/hier_block2.cc:60

#21 0x00007fffe98853b9 in gr::top_block::~top_block (this=0x2638140, __in_chrg=<optimized out>)

at [prefix]/src/gnuradio/gnuradio-runtime/lib/top_block.cc:57

#22 0x00007fffea13313a in boost::detail::sp_counted_base::release (this=0x2515840)

at /usr/include/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp:146

#23 0x00007fffea135955 in boost::detail::sp_counted_base::release (this=<optimized out>)

at [prefix]/src/gnuradio/build/gnuradio-runtime/swig/runtime_swigPYTHON_wrap.cxx:46736

#24 boost::detail::shared_count::~shared_count (this=0x2553b68, __in_chrg=<optimized out>)

at /usr/include/boost/smart_ptr/detail/shared_count.hpp:443

#25 boost::shared_ptrgr::top_block::~shared_ptr (this=0x2553b60, __in_chrg=<optimized out>)

at /usr/include/boost/smart_ptr/shared_ptr.hpp:323

#26 _wrap_delete_top_block_sptr (args=<optimized out>)

at [prefix]/src/gnuradio/build/gnuradio-runtime/swig/runtime_swigPYTHON_wrap.cxx:46723

#27 0x00000000004b1153 in PyObject_Call ()
#28 0x00000000004b9ee2 in PyObject_CallFunctionObjArgs ()
#29 0x00007fffea1008a5 in SwigPyObject_dealloc (v=0x7fffc8fbfcc0)

at [prefix]/src/gnuradio/build/gnuradio-runtime/swig/runtime_swigPYTHON_wrap.cxx:1677

#30 0x00000000004fd7c6 in ?? ()
#31 0x00000000004fd7c6 in ?? ()
#32 0x00000000004a0d42 in PyDict_SetItem ()
#33 0x00000000004dad6d in _PyObject_GenericSetAttrWithDict ()
#34 0x00000000004da8eb in PyObject_SetAttr ()
#35 0x00000000004c588a in PyEval_EvalFrameEx ()
#36 0x00000000004ca39f in PyEval_EvalFrameEx ()
## 

test_params output scaled with 2*pi since sin/cos kernel issue

Hi,

Since the sin/cos issue the test_params are scaled with 2*pi (see qa_utils.cc:25). This is not an intuitive choice. Probably it would be better to change it back to (-1,1) as written in the comment and write a puppet for the sin and cos kernels.

Or should the test_params be able to scale the input directly by a parameter?

If the puppets are the desired solution, I can submit a pull request, this is not much work

Greetings

VOLK modules collide with VOLK

Creating a VOLK module has at minimum the following conflicts with VOLK:

  • VolkConfig.cmake rather than Volk_modulenameConfig.cmake is created and populated without the modulename variables
  • the installed volk_modulename/volk_modulename.h uses an ifdef guard defined by volk rather than a module defined includeguard

volk_profile -u breaks volk_config?

After running volk_profile, and then volk_profile -u,
~/.volk/volk_config becomes unusable by apps using libvolk;
e. g., Gqrx even crashes:

Volk warning: no arch found, returning generic impl
Volk warning: no arch found, returning generic impl
Segmentation fault

dmesg:
[15609.066468] traps: complex_to_flo2[8965] general protection ip:7f7fbf54b930 sp:7f7f911e2078 error:0 in libvolk.so.1.3[7f7fbf492000+14e000]

Version: VOLK 1.3 (actually, Debian "libvolk1.3" & "libvolk1-bin" amd64 binaries version 1.3-1).

volk_config samples attached.

volk_config.bad.txt
volk_config.orig.txt

volk_profile and make test segfault on volk_32f_s32f_32f_fm_detect_32f kernel.

Function parameters 2 (const float bound) and 3 (float* saveValue) in volk_32f_s32f_32f_fm_detect_32f are reversed. This causes the saveValue pointer to be invalid and the reason for the segfault.

Since the saveValue pointer gets a floating point value, it can often be a reasonable address and this bug can be masked on many systems.

Please tag the version in the CMake script so API changes can be detected

The interface of volk_32f_index_max_16u have changed as per cb83e1c . This breaks building of projects linking to Volk, so fixes such as gnss-sdr/gnss-sdr#30 won't work if the user has installed Volk through the libvolk1-dev (1.2.2-1) package in Debian and Ubuntu systems, or has built Volk from the 1.2.2 tag.

See gnss-sdr/gnss-sdr#31 for an example.

Adding

set(VERSION_INFO_MAINT_VERSION 2git)

could help to detect that change and adapt the code adequately, since it is exported through PC_VOLK_VERSION

volk_modtool and kernel_tests.h

When you run volk_modtool, it nukes the kernels directory but the kernels tests are still being initiated in kernel_tests.h with the modified name. If you try to build a freshly mod_tooled project, the build will fail until you manually clean out kernel_tests.h.

VOLK Requires boost to build

hello,in the step cmake .. i have something wrong with the boost
`root@ubuntu:/home/hkl/volk/build# cmake ..
-- Build type not specified: defaulting to release.
-- Build type set to Release.

-- Extracting version information from git describe...

-- Python checking for python >= 2.5

-- Python checking for python >= 2.5 - found

-- Python checking for Cheetah >= 2.0.0
-- Python checking for Cheetah >= 2.0.0 - found
-- Could NOT find Boost
CMake Error at CMakeLists.txt:98 (message):
VOLK Requires boost to build
`
but i have installed the libboost-dev,who can help me ,thank you very much!

volk_32f_x3_sum_of_poly_32f fails on OSX Yosemite

Noticed it today, confirmed by @michaelld.

Using HEAD of maint: d063b05c7e7c

Darwin 14.5.0 Darwin Kernel Version 14.5.0
root:xnu-2782.40.9~1/RELEASE_X86_64 x86_64
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 6.1.0 (clang-602.0.53) (based on LLVM 3.6.0svn)
Target: x86_64-apple-darwin14.5.0
Thread model: posix

volk_32f_x2_dot_prod_32f crash on Ettus E310 (ARMv7 Processor rev 0 (v7l))

HI!
I'm working with the board Ettus E310.
The output of cat /proc/cpuinfo is
$> cat /proc/cpuinfo
processor : 0
model name : ARMv7 Processor rev 0 (v7l)
Features : swp half thumb fastmult vfp edsp neon vfpv3 tls vfpd32
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x3
CPU part : 0xc09
CPU revision : 0

processor : 1
model name : ARMv7 Processor rev 0 (v7l)
Features : swp half thumb fastmult vfp edsp neon vfpv3 tls vfpd32
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x3
CPU part : 0xc09
CPU revision : 0

Porting a library on this device that use cmake, I obtain these lines in the file CMakeCache.txt:
// Have function volk_32f_x2_dot_prod_32f
HAVE_VOLK_DOTPROD_F_FUNCTION:INTERNAL=1

in the library there is an #ifdef that test the variable HAVE_VOLK_DOTPROD_F_FUNCTION and if is define call the function volk_32f_x2_dot_prod_32f() and the code crash.

I tried also to download the volk library from the repository recompile and run the make test and the result is 100% passed, but the code crash in any case

Volk (master) failed to build on Ubuntu 12.04 / 12.10 / 13.04

21:11:50 Current step: (volk :: make)
21:11:50 make
21:11:50 bashexec (/home/hudson/workspace/PyBombs_Build_All_Matrix/os/Ubuntu_13.04_Desktop_x86_64_VM/satisfy_order/deb-src/src/volk/build)::
21:11:50 find . -name '.make' -print0 | xargs -0 sed -i 's/(^.)(--cyan ")(.)"$/\1\2\x1b[36;1m\3\x1b[0m"/;s/(^.)(--green ")(.)"$/\1\2\x1b[32;1m\3\x1b[0m"/;s/(^.)(--red --bold ")(.)"$/\1\2\x1b[31;1m\3\x1b[0m"/;s/(^.)(--blue --bold ")(.)"$/\1\2\x1b[34;1m\3\x1b[0m"/'
21:11:50 find . -name 'Makefile' -print0 | xargs -0 sed -i 's/(^.
)(--cyan ")(.)"$/\1\2\x1b[36;1m\3\x1b[0m"/;s/(^.)(--green ")(.)"$/\1\2\x1b[32;1m\3\x1b[0m"/;s/(^.)(--red --bold ")(.)"$/\1\2\x1b[31;1m\3\x1b[0m"/;s/(^.)(--blue --bold ")(._)"$/\1\2\x1b[34;1m\3\x1b[0m"/'
21:11:50 ln -s /home/hudson/workspace/PyBombs_Build_All_Matrix/os/Ubuntu_13.04_Desktop_x86_64_VM/satisfy_order/deb-src/colorgcc.pl /apps/smokey64/bin/cc
21:11:50 ln -s /home/hudson/workspace/PyBombs_Build_All_Matrix/os/Ubuntu_13.04_Desktop_x86_64_VM/satisfy_order/deb-src/colorgcc.pl /apps/smokey64/bin/gcc
21:11:50 ln -s /home/hudson/workspace/PyBombs_Build_All_Matrix/os/Ubuntu_13.04_Desktop_x86_64_VM/satisfy_order/deb-src/colorgcc.pl /apps/smokey64/bin/c++
21:11:50 ln -s /home/hudson/workspace/PyBombs_Build_All_Matrix/os/Ubuntu_13.04_Desktop_x86_64_VM/satisfy_order/deb-src/colorgcc.pl /apps/smokey64/bin/g++
21:11:50 make -j4
21:11:50
21:11:50 Scanning dependencies of target pygen_python_volk_modtool_e43da
21:11:50 Scanning dependencies of target pygen_python_volk_modtool_67216
21:11:50 [ 4%] [ 4%] [ 7%] [ 9%] Generating ../include/volk/volk.h
21:11:50 Shebangin volk_modtool
21:11:50 Generating volk_machine_avx2_64_mmx.c
21:11:50 Generating init.pyc, cfg.pyc, volk_modtool_generate.pyc
21:11:50 [ 9%] Built target pygen_python_volk_modtool_e43da
21:11:50 [ 12%] [ 14%] Generating volk.c
21:11:50 Generating init.pyo, cfg.pyo, volk_modtool_generate.pyo
21:11:50 [ 14%] Built target pygen_python_volk_modtool_67216
21:11:50 [ 17%] Generating ../include/volk/volk_typedefs.h
21:11:50 [ 19%] Generating ../include/volk/volk_cpu.h
21:11:50 [ 21%] Generating volk_cpu.c
21:11:50 [ 24%] Generating ../include/volk/volk_config_fixed.h
21:11:50 [ 26%] Generating volk_machines.h
21:11:51 [ 29%] Generating volk_machines.c
21:11:51 [ 31%] Generating volk_machine_generic.c
21:11:51 [ 34%] Generating volk_machine_sse2_64_mmx.c
21:11:51 [ 36%] Generating volk_machine_sse3_64.c
21:11:51 [ 39%] Generating volk_machine_ssse3_64.c
21:11:51 [ 41%] Generating volk_machine_sse4_a_64.c
21:11:51 [ 43%] Generating volk_machine_sse4_1_64.c
21:11:51 [ 46%] Generating volk_machine_sse4_2_64.c
21:11:51 [ 48%] Generating volk_machine_avx_64_mmx.c
21:11:52 Scanning dependencies of target volk_obj
21:11:52 [ 53%] [ 53%] [ 58%] [ 58%] Building C object lib/CMakeFiles/volk_obj.dir/constants.c.o
21:11:52 Building C object lib/CMakeFiles/volk_obj.dir/volk_prefs.c.o
21:11:52 Building C object lib/CMakeFiles/volk_obj.dir/volk_malloc.c.o
21:11:52 Building C object lib/CMakeFiles/volk_obj.dir/volk_rank_archs.c.o
21:11:52 [ 60%] Building C object lib/CMakeFiles/volk_obj.dir/volk.c.o
21:11:52 [ 63%] Building C object lib/CMakeFiles/volk_obj.dir/volk_cpu.c.o
21:11:52 [ 65%] Building C object lib/CMakeFiles/volk_obj.dir/volk_machines.c.o
21:11:52 [ 68%] Building C object lib/CMakeFiles/volk_obj.dir/volk_machine_generic.c.o
21:11:52 [ 70%] Building C object lib/CMakeFiles/volk_obj.dir/volk_machine_sse2_64_mmx.c.o
21:11:52 [ 73%] Building C object lib/CMakeFiles/volk_obj.dir/volk_machine_sse3_64.c.o
21:11:54 [ 75%] Building C object lib/CMakeFiles/volk_obj.dir/volk_machine_ssse3_64.c.o
21:11:55 In file included from /home/hudson/workspace/PyBombs_Build_All_Matrix/os/Ubuntu_13.04_Desktop_x86_64_VM/satisfy_order/deb-src/src/volk/kernels/volk/volk_8u_x3_encodepolar_8u_x2.h:78:0,
21:11:55 from /home/hudson/workspace/PyBombs_Build_All_Matrix/os/Ubuntu_13.04_Desktop_x86_64_VM/satisfy_order/deb-src/src/volk/kernels/volk/volk_8u_x3_encodepolarpuppet_8u.h:30,:
21:11:55 from /home/hudson/workspace/PyBombs_Build_All_Matrix/os/Ubuntu_13.04_Desktop_x86_64_VM/satisfy_order/deb-src/src/volk/build/lib/volk_machine_ssse3_64.c:100:
21:11:55 /home/hudson/workspace/PyBombs_Build_All_Matrix/os/Ubuntu_13.04_Desktop_x86_64_VM/satisfy_order/deb-src/src/volk/kernels/volk/volk_8u_x2_encodeframepolar_8u.h: In function ‘volk_8u_x2_encodeframepolar_8u_u_ssse3’:
21:11:55 /home/hudson/workspace/PyBombs_Build_All_Matrix/os/Ubuntu_13.04_Desktop_x86_64_VM/satisfy_order/deb-src/src/volk/kernels/volk/volk_8u_x2_encodeframepolar_8u.h:124:11: warning: implicit declaration of function ‘_mm_bsrli_si128’ [-Wimplicit-function-declaration]
21:11:55 shifted = _mm_bsrli_si128(r_temp0, 1);
21:11:55 ^
21:11:55 /home/hudson/workspace/PyBombs_Build_All_Matrix/os/Ubuntu_13.04_Desktop_x86_64_VM/satisfy_order/deb-src/src/volk/kernels/volk/volk_8u_x2_encodeframepolar_8u.h:124:19: error: incompatible types when assigning to type ‘__m128i’ from type ‘int’
21:11:55 shifted = _mm_bsrli_si128(r_temp0, 1);
21:11:55 ^
21:11:55 /home/hudson/workspace/PyBombs_Build_All_Matrix/os/Ubuntu_13.04_Desktop_x86_64_VM/satisfy_order/deb-src/src/volk/kernels/volk/volk_8u_x2_encodeframepolar_8u.h:129:19: error: incompatible types when assigning to type ‘__m128i’ from type ‘int’
21:11:55 shifted = _mm_bsrli_si128(r_temp1, 1);
21:11:55 ^
21:11:55 /home/hudson/workspace/PyBombs_Build_All_Matrix/os/Ubuntu_13.04_Desktop_x86_64_VM/satisfy_order/deb-src/src/volk/kernels/volk/volk_8u_x2_encodeframepolar_8u.h:173:13: error: incompatible types when assigning to type ‘__m128i’ from type ‘int’
21:11:55 shifted = _mm_bsrli_si128(r_temp0, 8);
21:11:55 ^
21:11:55 /home/hudson/workspace/PyBombs_Build_All_Matrix/os/Ubuntu_13.04_Desktop_x86_64_VM/satisfy_order/deb-src/src/volk/kernels/volk/volk_8u_x2_encodeframepolar_8u.h:181:13: error: incompatible types when assigning to type ‘__m128i’ from type ‘int’
21:11:55 shifted = _mm_bsrli_si128(r_frame0, 4);
21:11:55 ^
21:11:55 /home/hudson/workspace/PyBombs_Build_All_Matrix/os/Ubuntu_13.04_Desktop_x86_64_VM/satisfy_order/deb-src/src/volk/kernels/volk/volk_8u_x2_encodeframepolar_8u.h:185:13: error: incompatible types when assigning to type ‘__m128i’ from type ‘int’
21:11:55 shifted = _mm_bsrli_si128(r_frame0, 2);
21:11:55 ^
21:11:55 /home/hudson/workspace/PyBombs_Build_All_Matrix/os/Ubuntu_13.04_Desktop_x86_64_VM/satisfy_order/deb-src/src/volk/kernels/volk/volk_8u_x2_encodeframepolar_8u.h:189:13: error: incompatible types when assigning to type ‘__m128i’ from type ‘int’
21:11:55 shifted = _mm_bsrli_si128(r_frame0, 1);
21:11:55 ^
21:11:55 /home/hudson/workspace/PyBombs_Build_All_Matrix/os/Ubuntu_13.04_Desktop_x86_64_VM/satisfy_order/deb-src/src/volk/kernels/volk/volk_8u_x2_encodeframepolar_8u.h: In function ‘volk_8u_x2_encodeframepolar_8u_a_ssse3’:
21:11:55 /home/hudson/workspace/PyBombs_Build_All_Matrix/os/Ubuntu_13.04_Desktop_x86_64_VM/satisfy_order/deb-src/src/volk/kernels/volk/volk_8u_x2_encodeframepolar_8u.h:246:19: error: incompatible types when assigning to type ‘__m128i’ from type ‘int’
21:11:55 shifted = _mm_bsrli_si128(r_temp0, 1);
21:11:55 ^
21:11:55 /home/hudson/workspace/PyBombs_Build_All_Matrix/os/Ubuntu_13.04_Desktop_x86_64_VM/satisfy_order/deb-src/src/volk/kernels/volk/volk_8u_x2_encodeframepolar_8u.h:251:19: error: incompatible types when assigning to type ‘__m128i’ from type ‘int’
21:11:55 shifted = _mm_bsrli_si128(r_temp1, 1);
21:11:55 ^
21:11:55 /home/hudson/workspace/PyBombs_Build_All_Matrix/os/Ubuntu_13.04_Desktop_x86_64_VM/satisfy_order/deb-src/src/volk/kernels/volk/volk_8u_x2_encodeframepolar_8u.h:295:13: error: incompatible types when assigning to type ‘__m128i’ from type ‘int’
21:11:55 shifted = _mm_bsrli_si128(r_temp0, 8);
21:11:55 ^
21:11:55 /home/hudson/workspace/PyBombs_Build_All_Matrix/os/Ubuntu_13.04_Desktop_x86_64_VM/satisfy_order/deb-src/src/volk/kernels/volk/volk_8u_x2_encodeframepolar_8u.h:303:13: error: incompatible types when assigning to type ‘__m128i’ from type ‘int’
21:11:55 shifted = _mm_bsrli_si128(r_frame0, 4);
21:11:55 ^
21:11:55 /home/hudson/workspace/PyBombs_Build_All_Matrix/os/Ubuntu_13.04_Desktop_x86_64_VM/satisfy_order/deb-src/src/volk/kernels/volk/volk_8u_x2_encodeframepolar_8u.h:307:13: error: incompatible types when assigning to type ‘__m128i’ from type ‘int’
21:11:55 shifted = _mm_bsrli_si128(r_frame0, 2);
21:11:55 ^
21:11:55 /home/hudson/workspace/PyBombs_Build_All_Matrix/os/Ubuntu_13.04_Desktop_x86_64_VM/satisfy_order/deb-src/src/volk/kernels/volk/volk_8u_x2_encodeframepolar_8u.h:311:13: error: incompatible types when assigning to type ‘__m128i’ from type ‘int’
21:11:55 shifted = mm_bsrli_si128(r_frame0, 1);
21:11:55 ^
21:11:55 make[2]: *
* [lib/CMakeFiles/volk_obj.dir/volk_machine_ssse3_64.c.o] Error 1
21:11:55 make[2]: *** Waiting for unfinished jobs....
21:11:58 make[1]: *** [lib/CMakeFiles/volk_obj.dir/all] Error 2
21:11:58 make: *** [all] Error 2
21:11:58 bash return val = 2
21:11:58 Traceback (most recent call last):
21:11:58 File "./pybombs", line 360, in
21:11:58 main()
21:11:58 File "./pybombs", line 357, in main
21:11:58 sys.exit(cli(parser,opts,args))
21:11:58 File "./pybombs", line 171, in cli
21:11:58 pybombs_ops.install(p, not opts.force);
21:11:58 File "/home/hudson/workspace/PyBombs_Build_All_Matrix/os/Ubuntu_13.04_Desktop_x86_64_VM/satisfy_order/deb-src/mod_pybombs/pybombs_ops.py", line 151, in install
21:11:58 global_recipes[pkg].install();
21:11:58 File "/home/hudson/workspace/PyBombs_Build_All_Matrix/os/Ubuntu_13.04_Desktop_x86_64_VM/satisfy_order/deb-src/mod_pybombs/recipe.py", line 531, in install
21:11:58 st = self.install_src();
21:11:58 File "/home/hudson/workspace/PyBombs_Build_All_Matrix/os/Ubuntu_13.04_Desktop_x86_64_VM/satisfy_order/deb-src/mod_pybombs/recipe.py", line 598, in install_src
21:11:58 self.install_order[step]1;
21:11:58 File "/home/hudson/workspace/PyBombs_Build_All_Matrix/os/Ubuntu_13.04_Desktop_x86_64_VM/satisfy_order/deb-src/mod_pybombs/recipe.py", line 658, in make
21:11:58 assert(st == 0);
21:11:58 AssertionError
21:11:58 Build step 'Execute shell' marked build as failure
21:11:58 [WARNINGS] Skipping publisher since build result is FAILURE
21:11:58 Email was triggered for: Still Failing
21:11:58 Trigger Failure was overridden by another trigger and will not send an email.

volk_64u_popcnt bug in generic implementation

The generic implementation of volk_64u_popcnt produces incorrect output for certain input. See the attached program that demonstrates the bug. The program was compiled on an Intel Core i7-6700HQ machine on Ubuntu 16.04.1LTS with GCC 5.4.0 using the command shown below. Note that you'll have to rename the attachment from *.txt to *.c due to a GitHub restriction on allowed file types. The output on my machine can be seen in output.txt.

gcc volk_64u_popcnt_bug_demo.c -o volk_64u_popcnt_bug_demo -I/usr/local/include -L/usr/local/lib -lvolk

volk_64u_popcnt_bug_demo.txt
output.txt

__cpuid_count() for MSVC

Volk won't build on MSVC because __cpuid_count() isn't available. This was posted previously to the discussion board but the submitter never submitted an issue here. It's cut and pasted below...


I noticed since last time (a year ago) I tried building
Volk using MSVC v16, the volk_cpu.tmp.c now uses the
gcc-centric function '__cpuid_count()' which MSVC doesn't
have.

I'm not really sure if the below patch is correct. But I
assume (from looking at gcc 5.1's source) that the ECX should
be loaded with the 'count' value. So could it be patched into
something like this?

--- a/volk/tmpl/volk_cpu.tmpl.c  2015-09-01 13:52:53
+++ b/volk_cpu.tmpl.c     2015-09-07 13:44:25
@@ -71,8 +71,16 @@

 static inline unsigned int cpuid_count_x86_bit(unsigned int level, unsigned int count, unsigned int reg, unsigned int bit) {
 #if defined(VOLK_CPU_x86)
+    #if defined(_MSC_VER) && defined(HAVE_INTRIN_H)
+      int regs[4];
+      __cpuidex(regs, level, count);
+    #elif defined(__GNUC__)
     unsigned int regs[4];
     __cpuid_count(level, count, regs[0],  regs[1],  regs[2], regs[3]);
+    #else
+      #error No __cpuid()!
+    #endif
     return regs[reg] >> bit & 0x01;
 #else
     return 0;


Just to let you know.

The docs on MSVC's __cpuidex() is here:
https://msdn.microsoft.com/en-us/library/vstudio/hskdteyh(v=vs.100).aspx

--g

enable better arch detection in MSVC compiler / 64-bit

When compiling for MSVC, only the SSE machine is detected. This is due to a couple reasons:

1- The xgetbv test won't compile on MSVC because an intrinsic already exists. This commit in this pull request will patch that by adding a different test when compiling for MSVC (the test also checks if the CPU and OS support the instruction).

2- The cvtpi32_ps instrinsic isn't available on 64-bit machines, and in addition to marking it as unavailable, it marks AVX as a whole unavailable. This commit in this pull request will patch that by testing for 64-bit compilation (on any compiler) and if 64-bit, marking the instruction as unavailable but leaving AVX available.

3- archs.xml only checks for FMA support if GCC.This commit will add a check for an MSVC that supports FMA (MSVC 2015 does as part of the AVX2 support)

4- machines.xml does not allow 64-bit support for SSE3/4. This commit enables it.

With the above patches, MSVC compiled fine on a CPU w/ AVX2+FMA support, and volk_profile ran successfully. There were 2-3 profile tests that failed, but volk_profile continued and appeared to discount those results and choose different arches. I'll post details of those errors in a different issue.

32fc_max_index_16u

The QA seems to report 1-off for SSE3 impl and for some reason (probably historical) QA has a tolerance of 3. Fix the 1-off and set tolerance to 0.

_mm_bsrli_si128 requires Clang 3.7+

volk_8u_x2_encodeframepolar_8u uses _mm_bsrli_si128, which requires specific recent compiler versions (e.g., Clang 3.7+). Thus, we need to check for these versions in the CMake configuration script, which is not done at least for Clang right now. I'll test on GCC to see if its done there, next week.

__VOLK_PREFETCH() macro for __builtin_prefetch

So I have been tracking maint and building PothosSDR installers with gnuradio/volk under visual studio. Anyway, I ran into this and finally went after it today to get things compiling again. The __builtin_prefetch() isnt very portable so I created a __VOLK_PREFETCH() macro in the style of the other similar cross platform macros.

This is the only important change to volk_common.h, the rest of the changes are just a matter of sed replacing the builtin with the macro. Didnt implement the prefetch for msvc, this is just a NOP that gets it compiling and should be harmless:

diff --git a/include/volk/volk_common.h b/include/volk/volk_common.h
index 4d35f5c..a53b139 100644
--- a/include/volk/volk_common.h
+++ b/include/volk/volk_common.h
@@ -16,6 +16,7 @@
 #    define __VOLK_ATTR_EXPORT
 #    define __VOLK_ATTR_IMPORT
 #  endif
+#  define __VOLK_PREFETCH(addr)  __builtin_prefetch(addr)
 #elif _MSC_VER
 #  define __VOLK_ATTR_ALIGNED(x) __declspec(align(x))
 #  define __VOLK_ATTR_UNUSED
@@ -23,6 +24,7 @@
 #  define __VOLK_ATTR_DEPRECATED __declspec(deprecated)
 #  define __VOLK_ATTR_EXPORT     __declspec(dllexport)
 #  define __VOLK_ATTR_IMPORT     __declspec(dllimport)
+#  define __VOLK_PREFETCH(addr)
 #else
 #  define __VOLK_ATTR_ALIGNED(x)
 #  define __VOLK_ATTR_UNUSED
@@ -30,6 +32,7 @@
 #  define __VOLK_ATTR_DEPRECATED
 #  define __VOLK_ATTR_EXPORT
 #  define __VOLK_ATTR_IMPORT
+#  define __VOLK_PREFETCH(addr)
#endif

So I am hoping that this is a nice portable way to handle the prefetch that in the style of volk and can go into maint. Otherwise, a simple #define __builtin_prefetch(addr) would be a easy one line patch for me to carry around instead; it would also do the same trick, albeit less proper I feel. Thanks for your consideration!

Compilation failure

On a fresh clone on OSX 10.10:

In file included from /Users/sabae/src/gnuradio/gnuradio/volk/build/lib/volk.c:27:
/Users/sabae/src/gnuradio/gnuradio/volk/build/lib/volk_machines.h:153:11: error: unknown type name
      'p_32f_8u_polarbutterfly_32f'
    const p_32f_8u_polarbutterfly_32f volk_32f_8u_polarbutterfly_32f_impls[22];
          ^

Here is full output from cmake and make. This happens on both the version of volk on the maint branch of gnuradio, as well as the master branch of volk.

32f_{sin,cos,tan}_32f Fail

git clone (to master at c2c7f82)
cmake .
make
cd lib
test_all
(on an AMD A4-5000)

Kernel QA finished: 3 failures out of 93 tests.
The following kernels failed QA:
volk_32f_sin_32f
volk_32f_cos_32f
volk_32f_tan_32f

---earlier:
offset 21089 in1: -0.000102909 in2: -0.00010276 tolerance was: 0.001
offset 23287 in1: 2.16087e-05 in2: 2.14591e-05 tolerance was: 0.001
offset 81567 in1: 0.000114115 in2: 0.000113965 tolerance was: 0.001
volk_32f_sin_32f: fail on arch a_sse4_1
offset 21089 in1: -0.000102909 in2: -0.00010276 tolerance was: 0.001
offset 23287 in1: 2.16087e-05 in2: 2.14591e-05 tolerance was: 0.001
offset 81567 in1: 0.000114115 in2: 0.000113965 tolerance was: 0.001
volk_32f_sin_32f: fail on arch u_sse4_1
...
offset 10269 in1: -7.58967e-07 in2: -8.34465e-07 tolerance was: 0.001
offset 15690 in1: 5.09779e-05 in2: 5.09024e-05 tolerance was: 0.001
offset 101940 in1: -3.4972e-05 in2: -3.50475e-05 tolerance was: 0.001
offset 114392 in1: 4.72466e-06 in2: 4.64916e-06 tolerance was: 0.001
offset 130159 in1: 4.64479e-05 in2: 4.63724e-05 tolerance was: 0.001
volk_32f_cos_32f: fail on arch a_sse4_1
offset 10269 in1: -7.58967e-07 in2: -8.34465e-07 tolerance was: 0.001
offset 15690 in1: 5.09779e-05 in2: 5.09024e-05 tolerance was: 0.001
offset 101940 in1: -3.4972e-05 in2: -3.50475e-05 tolerance was: 0.001
offset 114392 in1: 4.72466e-06 in2: 4.64916e-06 tolerance was: 0.001
offset 130159 in1: 4.64479e-05 in2: 4.63724e-05 tolerance was: 0.001
volk_32f_cos_32f: fail on arch u_sse4_1
offset 10269 in1: -7.58967e-07 in2: -8.18572e-07 tolerance was: 0.001
offset 15690 in1: 5.09779e-05 in2: 5.09183e-05 tolerance was: 0.001
offset 101940 in1: -3.4972e-05 in2: -3.50316e-05 tolerance was: 0.001
offset 114392 in1: 4.72466e-06 in2: 4.66506e-06 tolerance was: 0.001
offset 130159 in1: 4.64479e-05 in2: 4.63883e-05 tolerance was: 0.001
volk_32f_cos_32f: fail on arch generic_fast
...
offset 8630 in1: -3.32912e-05 in2: -3.31416e-05 tolerance was: 0.001
offset 14489 in1: 15898.6 in2: 15917.7 tolerance was: 0.001
offset 28068 in1: 9.8141e-05 in2: 9.79914e-05 tolerance was: 0.001
offset 31758 in1: -0.000106247 in2: -0.000106098 tolerance was: 0.001
offset 44343 in1: 189075 in2: 186414 tolerance was: 0.001
offset 93063 in1: -6.97692e-05 in2: -6.96196e-05 tolerance was: 0.001
volk_32f_tan_32f: fail on arch a_sse4_1
offset 8630 in1: -3.32912e-05 in2: -3.31416e-05 tolerance was: 0.001
offset 14489 in1: 15898.6 in2: 15917.7 tolerance was: 0.001
offset 28068 in1: 9.8141e-05 in2: 9.79914e-05 tolerance was: 0.001
offset 31758 in1: -0.000106247 in2: -0.000106098 tolerance was: 0.001
offset 44343 in1: 189075 in2: 186414 tolerance was: 0.001
offset 93063 in1: -6.97692e-05 in2: -6.96196e-05 tolerance was: 0.001
volk_32f_tan_32f: fail on arch u_sse4_1
...
offset 21089 in1: -0.000102909 in2: -0.00010276 tolerance was: 0.001
offset 23287 in1: 2.16087e-05 in2: 2.14591e-05 tolerance was: 0.001
offset 81567 in1: 0.000114115 in2: 0.000113965 tolerance was: 0.001
volk_32f_sin_32f: fail on arch a_sse4_1
offset 21089 in1: -0.000102909 in2: -0.00010276 tolerance was: 0.001
offset 23287 in1: 2.16087e-05 in2: 2.14591e-05 tolerance was: 0.001
offset 81567 in1: 0.000114115 in2: 0.000113965 tolerance was: 0.001
volk_32f_sin_32f: fail on arch u_sse4_1
...
offset 10269 in1: -7.58967e-07 in2: -8.34465e-07 tolerance was: 0.001
offset 15690 in1: 5.09779e-05 in2: 5.09024e-05 tolerance was: 0.001
offset 101940 in1: -3.4972e-05 in2: -3.50475e-05 tolerance was: 0.001
offset 114392 in1: 4.72466e-06 in2: 4.64916e-06 tolerance was: 0.001
offset 130159 in1: 4.64479e-05 in2: 4.63724e-05 tolerance was: 0.001
volk_32f_cos_32f: fail on arch a_sse4_1
offset 10269 in1: -7.58967e-07 in2: -8.34465e-07 tolerance was: 0.001
offset 15690 in1: 5.09779e-05 in2: 5.09024e-05 tolerance was: 0.001
offset 101940 in1: -3.4972e-05 in2: -3.50475e-05 tolerance was: 0.001
offset 114392 in1: 4.72466e-06 in2: 4.64916e-06 tolerance was: 0.001
offset 130159 in1: 4.64479e-05 in2: 4.63724e-05 tolerance was: 0.001
volk_32f_cos_32f: fail on arch u_sse4_1
offset 10269 in1: -7.58967e-07 in2: -8.18572e-07 tolerance was: 0.001
offset 15690 in1: 5.09779e-05 in2: 5.09183e-05 tolerance was: 0.001
offset 101940 in1: -3.4972e-05 in2: -3.50316e-05 tolerance was: 0.001
offset 114392 in1: 4.72466e-06 in2: 4.66506e-06 tolerance was: 0.001
offset 130159 in1: 4.64479e-05 in2: 4.63883e-05 tolerance was: 0.001
volk_32f_cos_32f: fail on arch generic_fast
...
offset 8630 in1: -3.32912e-05 in2: -3.31416e-05 tolerance was: 0.001
offset 14489 in1: 15898.6 in2: 15917.7 tolerance was: 0.001
offset 28068 in1: 9.8141e-05 in2: 9.79914e-05 tolerance was: 0.001
offset 31758 in1: -0.000106247 in2: -0.000106098 tolerance was: 0.001
offset 44343 in1: 189075 in2: 186414 tolerance was: 0.001
offset 93063 in1: -6.97692e-05 in2: -6.96196e-05 tolerance was: 0.001
volk_32f_tan_32f: fail on arch a_sse4_1
offset 8630 in1: -3.32912e-05 in2: -3.31416e-05 tolerance was: 0.001
offset 14489 in1: 15898.6 in2: 15917.7 tolerance was: 0.001
offset 28068 in1: 9.8141e-05 in2: 9.79914e-05 tolerance was: 0.001
offset 31758 in1: -0.000106247 in2: -0.000106098 tolerance was: 0.001
offset 44343 in1: 189075 in2: 186414 tolerance was: 0.001
offset 93063 in1: -6.97692e-05 in2: -6.96196e-05 tolerance was: 0.001
volk_32f_tan_32f: fail on arch u_sse4_1

problem compile gnuradio

PCLinuxOS 64bit

I used:

%cmake
%make
%makeinstall_std

compiled volk 100% succes

problem is, gnu radio can not find volk
from gnu radio cmake I see, this search volk_common.h
volk_common.h is installed in
/usr/local/include/volk/volk_common.h

gnuradio $ cmake ..
...
CMake Error at CMakeLists.txt:310 (message):
VOLK required but not found.

how fix it ?

macros :
$ rpm --eval=%cmake

CFLAGS="${CFLAGS:--O2 -pipe -Wformat -Wp,-D_FORTIFY_SOURCE=2 -fstack-protector --param=ssp-buffer-size=4}" ; export CFLAGS ;
CXXFLAGS="${CXXFLAGS:--O2 -pipe -Wformat -Wp,-D_FORTIFY_SOURCE=2 -fstack-protector --param=ssp-buffer-size=4}" ; export CXXFLAGS ;
FFLAGS="${FFLAGS:--O2 -pipe -Wformat -Wp,-D_FORTIFY_SOURCE=2 -fstack-protector --param=ssp-buffer-size=4}" ; export FFLAGS ;
LDFLAGS="$LDFLAGS -Wl,--as-needed -Wl,--no-undefined -Wl,-z,relro -Wl,-O1 -Wl,--build-id"; export LDFLAGS ;
mkdir -p build
cd build

/usr/bin/cmake .. \
    -DCMAKE_INSTALL_PREFIX:PATH=/usr \
    -DCMAKE_INSTALL_LIBDIR:PATH=/usr/lib64 \
    -DCMAKE_INSTALL_LIBEXECDIR:PATH=/usr/lib64 \
    -DCMAKE_INSTALL_SYSCONFDIR:PATH=/etc \
    -DINCLUDE_INSTALL_DIR:PATH=/usr/include \
    -DLIB_INSTALL_DIR:PATH=/usr/lib64 \
    -DSYSCONF_INSTALL_DIR:PATH=/etc \
    -DSHARE_INSTALL_PREFIX:PATH=/usr/share \
    -DCMAKE_BUILD_TYPE=release \

%if "lib64" == "lib64"
-DLIB_SUFFIX=64
%endif
-DCMAKE_SKIP_RPATH:BOOL=ON

-DBUILD_SHARED_LIBS:BOOL=ON
-DBUILD_STATIC_LIBS:BOOL=OFF
-DCMAKE_MODULE_LINKER_FLAGS="-Wl,--as-needed -Wl,-z,relro -Wl,-O1 -Wl,--build-id"

$ rpm --eval=%make
make -O -j4

$ rpm --eval=%makeinstall_std
make DESTDIR=/home/gg/src/rpm/BUILDROOT/%{name}-%{version}-%{release}.x86_64 install

Edit:
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
not helped.

Edit
Stable version gnuradio 3.7.7.1 from
http://gnuradio.org/releases/gnuradio/
working ! 👯 👍

SOLVED

build issues with c++98 and gcc4 (libboost1.58 with c++11 style symbols)

When building with gcc-4.x
it is forced into c++98 mode resulting in undefined c++11 style ABI symbols not found when linking against libboost built for c++11. Using gcc-5.x fixes the issue ...
however
by propperly setting
_GLIBCXX_USE_CXX11_ABI
somewhere, this should be fixable
results in a non-helpful error message about simply missing symbols when linking the first binary (volk_profile)

C++11 Dual-ABI Info:
https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_dual_abi.html

volk_32f_x2_dot_prod_32f missing MSVC compatible aligned var declaration when using AVX2

MSVC uses a different syntax for aligned data types, so when AVX2 is enabled, compilation will fail.

See this commit in this pull request for a patch that conditionally compiles the appropriate syntax.

Thought... if we expect introduction of a lot more aligned data types, you may want to define a generic macro in a header to avoid cluttering the code.

ifdef _MSC_VER

define ALIGNED(WIDTH, VAR) _declspec(align(WIDTH)) VAR

else

define ALIGNED(WIDTH, VAR) VAR__attribute__((aligned(WIDTH)))

endif

error building natively on USRP E310

libvolk.so.1.0.1: undefined reference to volk_16i_max_star_horizontal_16i_neonasm' libvolk.so.1.0.1: undefined reference tovolk_32f_x2_add_32f_neonasm'
libvolk.so.1.0.1: undefined reference to volk_32fc_x2_multiply_32fc_neonasm' libvolk.so.1.0.1: undefined reference tovolk_32fc_32f_dot_prod_32fc_a_neonasm'
libvolk.so.1.0.1: undefined reference to volk_32f_x2_add_32f_neonpipeline' libvolk.so.1.0.1: undefined reference tovolk_32f_x2_dot_prod_32f_neonasm'
libvolk.so.1.0.1: undefined reference to volk_32fc_32f_dot_prod_32fc_a_neonasmvmla' libvolk.so.1.0.1: undefined reference tovolk_32f_x2_dot_prod_32f_neonasm_opts'
libvolk.so.1.0.1: undefined reference to `volk_32fc_32f_dot_prod_32fc_a_neonpipeline'

Kernel name with leading x character throws exception

Hi,

A kernel with the name volk_32f_x2_x_32f throws an exception during ctest. The problem is simply a leading x in the kernel name "x", which looks like the "x" of the input signiture.
If this is known and intended, just close the issue!

Greetings
Stefan

Volk (master) failed to build on CentOS 6.4 / 6.5 / 6.6

21:35:41 Current step: (volk :: make)
21:35:41 make
21:35:41 bashexec (/home/hudson/workspace/PyBombs_Build_All_Matrix/os/CentOS_6.5_Desktop_x86_VM_R/satisfy_order/rpm-src/src/volk/build)::
21:35:41 find . -name '.make' -print0 | xargs -0 sed -i 's/(^.)(--cyan ")(.)"$/\1\2\x1b[36;1m\3\x1b[0m"/;s/(^.)(--green ")(.)"$/\1\2\x1b[32;1m\3\x1b[0m"/;s/(^.)(--red --bold ")(.)"$/\1\2\x1b[31;1m\3\x1b[0m"/;s/(^.)(--blue --bold ")(.)"$/\1\2\x1b[34;1m\3\x1b[0m"/'
21:35:41 find . -name 'Makefile' -print0 | xargs -0 sed -i 's/(^.
)(--cyan ")(.)"$/\1\2\x1b[36;1m\3\x1b[0m"/;s/(^.)(--green ")(.)"$/\1\2\x1b[32;1m\3\x1b[0m"/;s/(^.)(--red --bold ")(.)"$/\1\2\x1b[31;1m\3\x1b[0m"/;s/(^.)(--blue --bold ")(._)"$/\1\2\x1b[34;1m\3\x1b[0m"/'
21:35:41 ln -s /home/hudson/workspace/PyBombs_Build_All_Matrix/os/CentOS_6.5_Desktop_x86_VM_R/satisfy_order/rpm-src/colorgcc.pl /apps/smokey64/bin/cc
21:35:41 ln -s /home/hudson/workspace/PyBombs_Build_All_Matrix/os/CentOS_6.5_Desktop_x86_VM_R/satisfy_order/rpm-src/colorgcc.pl /apps/smokey64/bin/gcc
21:35:41 ln -s /home/hudson/workspace/PyBombs_Build_All_Matrix/os/CentOS_6.5_Desktop_x86_VM_R/satisfy_order/rpm-src/colorgcc.pl /apps/smokey64/bin/c++
21:35:41 ln -s /home/hudson/workspace/PyBombs_Build_All_Matrix/os/CentOS_6.5_Desktop_x86_VM_R/satisfy_order/rpm-src/colorgcc.pl /apps/smokey64/bin/g++
21:35:41 make -j4
21:35:41
21:35:41 Scanning dependencies of target pygen_python_volk_modtool_1a4b4
21:35:41 [ 2%] [ 5%] [ 7%] Scanning dependencies of target pygen_python_volk_modtool_760e7
21:35:41 Shebangin volk_modtool
21:35:41 Generating ../include/volk/volk.h
21:35:41 [ 10%] Generating volk_machine_avx_64_mmx.c
21:35:41 Generating init.pyc, cfg.pyc, volk_modtool_generate.pyc
21:35:41 [ 10%] Built target pygen_python_volk_modtool_1a4b4
21:35:41 [ 12%] Generating init.pyo, cfg.pyo, volk_modtool_generate.pyo
21:35:41 [ 12%] Built target pygen_python_volk_modtool_760e7
21:35:41 [ 15%] [ 17%] Generating volk.c
21:35:41 Generating ../include/volk/volk_typedefs.h
21:35:42 /apps/smokey64/lib64/python2.6/site-packages/Cheetah/CacheRegion.py:30: DeprecationWarning: the md5 module is deprecated; use hashlib instead
21:35:42 import md5
21:35:42 /apps/smokey64/lib64/python2.6/site-packages/Cheetah/CacheRegion.py:30: DeprecationWarning: the md5 module is deprecated; use hashlib instead
21:35:42 import md5
21:35:42 /apps/smokey64/lib64/python2.6/site-packages/Cheetah/CacheRegion.py:30: DeprecationWarning: the md5 module is deprecated; use hashlib instead
21:35:42 import md5
21:35:42 [ 20%] Generating ../include/volk/volk_cpu.h
21:35:42 [ 23%] Generating volk_cpu.c
21:35:42 [ 25%] Generating ../include/volk/volk_config_fixed.h
21:35:42 /apps/smokey64/lib64/python2.6/site-packages/Cheetah/CacheRegion.py:30: DeprecationWarning: the md5 module is deprecated; use hashlib instead
21:35:42 import md5
21:35:42 [ 28%] Generating volk_machines.h
21:35:42 /apps/smokey64/lib64/python2.6/site-packages/Cheetah/CacheRegion.py:30: DeprecationWarning: the md5 module is deprecated; use hashlib instead
21:35:42 import md5
21:35:42 [ 30%] Generating volk_machines.c
21:35:42 /apps/smokey64/lib64/python2.6/site-packages/Cheetah/CacheRegion.py:30: DeprecationWarning: the md5 module is deprecated; use hashlib instead
21:35:42 import md5
21:35:42 [ 33%] /apps/smokey64/lib64/python2.6/site-packages/Cheetah/CacheRegion.py:30: DeprecationWarning: the md5 module is deprecated; use hashlib instead
21:35:42 import md5
21:35:42 Generating volk_machine_generic.c
21:35:42 [ 35%] Generating volk_machine_sse2_64_mmx.c
21:35:43 /apps/smokey64/lib64/python2.6/site-packages/Cheetah/CacheRegion.py:30: DeprecationWarning: the md5 module is deprecated; use hashlib instead
21:35:43 import md5
21:35:43 /apps/smokey64/lib64/python2.6/site-packages/Cheetah/CacheRegion.py:30: DeprecationWarning: the md5 module is deprecated; use hashlib instead
21:35:43 import md5
21:35:43 /apps/smokey64/lib64/python2.6/site-packages/Cheetah/CacheRegion.py:30: DeprecationWarning: the md5 module is deprecated; use hashlib instead
21:35:43 import md5
21:35:43 [ 38%] Generating volk_machine_sse3_64.c
21:35:43 [ 41%] Generating volk_machine_ssse3_64.c
21:35:43 [ 43%] Generating volk_machine_sse4_a_64.c
21:35:43 /apps/smokey64/lib64/python2.6/site-packages/Cheetah/CacheRegion.py:30: DeprecationWarning: the md5 module is deprecated; use hashlib instead
21:35:43 import md5
21:35:43 [ 46%] Generating volk_machine_sse4_1_64.c
21:35:43 /apps/smokey64/lib64/python2.6/site-packages/Cheetah/CacheRegion.py:30: DeprecationWarning: the md5 module is deprecated; use hashlib instead
21:35:43 import md5
21:35:43 /apps/smokey64/lib64/python2.6/site-packages/Cheetah/CacheRegion.py:30: DeprecationWarning: the md5 module is deprecated; use hashlib instead
21:35:43 import md5
21:35:43 [ 48%] Generating volk_machine_sse4_2_64.c
21:35:43 /apps/smokey64/lib64/python2.6/site-packages/Cheetah/CacheRegion.py:30: DeprecationWarning: the md5 module is deprecated; use hashlib instead
21:35:43 import md5
21:35:43 /apps/smokey64/lib64/python2.6/site-packages/Cheetah/CacheRegion.py:30: DeprecationWarning: the md5 module is deprecated; use hashlib instead
21:35:43 import md5
21:35:44 /apps/smokey64/lib64/python2.6/site-packages/Cheetah/CacheRegion.py:30: DeprecationWarning: the md5 module is deprecated; use hashlib instead
21:35:44 import md5
21:35:44 Scanning dependencies of target volk_obj
21:35:44 [ 51%] [ 53%] [ 56%] [ 58%] Building C object lib/CMakeFiles/volk_obj.dir/constants.c.o
21:35:44 Building C object lib/CMakeFiles/volk_obj.dir/volk_prefs.c.o
21:35:44 Building C object lib/CMakeFiles/volk_obj.dir/volk_malloc.c.o
21:35:44 Building C object lib/CMakeFiles/volk_obj.dir/volk_rank_archs.c.o
21:35:44 [ 61%] Building C object lib/CMakeFiles/volk_obj.dir/volk.c.o
21:35:44 [ 64%] [ 66%] Building C object lib/CMakeFiles/volk_obj.dir/volk_cpu.c.o
21:35:44 Building C object lib/CMakeFiles/volk_obj.dir/volk_machines.c.o
21:35:44 [ 69%] Building C object lib/CMakeFiles/volk_obj.dir/volk_machine_generic.c.o
21:35:44 [ 71%] Building C object lib/CMakeFiles/volk_obj.dir/volk_machine_sse2_64_mmx.c.o
21:35:44 [ 74%] Building C object lib/CMakeFiles/volk_obj.dir/volk_machine_sse3_64.c.o
21:35:45 [ 76%] Building C object lib/CMakeFiles/volk_obj.dir/volk_machine_ssse3_64.c.o
21:35:45 In file included from /home/hudson/workspace/PyBombs_Build_All_Matrix/os/CentOS_6.5_Desktop_x86_VM_R/satisfy_order/rpm-src/src/volk/kernels/volk/volk_32f_8u_polarbutterfly_32f.h:74,:
21:35:45 from /home/hudson/workspace/PyBombs_Build_All_Matrix/os/CentOS_6.5_Desktop_x86_VM_R/satisfy_order/rpm-src/src/volk/build/lib/volk_machine_ssse3_64.c:101:
21:35:45 /home/hudson/workspace/PyBombs_Build_All_Matrix/os/CentOS_6.5_Desktop_x86_VM_R/satisfy_order/rpm-src/src/volk/kernels/volk/volk_8u_x2_encodeframepolar_8u.h: In function ‘volk_8u_x2_encodeframepolar_8u_u_ssse3’:
21:35:45 /home/hudson/workspace/PyBombs_Build_All_Matrix/os/CentOS_6.5_Desktop_x86_VM_R/satisfy_order/rpm-src/src/volk/kernels/volk/volk_8u_x2_encodeframepolar_8u.h:124: warning: implicit declaration of function ‘mm_bsrli_si128’
21:35:45 /home/hudson/workspace/PyBombs_Build_All_Matrix/os/CentOS_6.5_Desktop_x86_VM_R/satisfy_order/rpm-src/src/volk/kernels/volk/volk_8u_x2_encodeframepolar_8u.h:124: error: incompatible types when assigning to type ‘__m128i’ from type ‘int’
21:35:45 /home/hudson/workspace/PyBombs_Build_All_Matrix/os/CentOS_6.5_Desktop_x86_VM_R/satisfy_order/rpm-src/src/volk/kernels/volk/volk_8u_x2_encodeframepolar_8u.h:129: error: incompatible types when assigning to type ‘__m128i’ from type ‘int’
21:35:45 /home/hudson/workspace/PyBombs_Build_All_Matrix/os/CentOS_6.5_Desktop_x86_VM_R/satisfy_order/rpm-src/src/volk/kernels/volk/volk_8u_x2_encodeframepolar_8u.h:173: error: incompatible types when assigning to type ‘__m128i’ from type ‘int’
21:35:45 /home/hudson/workspace/PyBombs_Build_All_Matrix/os/CentOS_6.5_Desktop_x86_VM_R/satisfy_order/rpm-src/src/volk/kernels/volk/volk_8u_x2_encodeframepolar_8u.h:181: error: incompatible types when assigning to type ‘__m128i’ from type ‘int’
21:35:45 /home/hudson/workspace/PyBombs_Build_All_Matrix/os/CentOS_6.5_Desktop_x86_VM_R/satisfy_order/rpm-src/src/volk/kernels/volk/volk_8u_x2_encodeframepolar_8u.h:185: error: incompatible types when assigning to type ‘__m128i’ from type ‘int’
21:35:45 /home/hudson/workspace/PyBombs_Build_All_Matrix/os/CentOS_6.5_Desktop_x86_VM_R/satisfy_order/rpm-src/src/volk/kernels/volk/volk_8u_x2_encodeframepolar_8u.h:189: error: incompatible types when assigning to type ‘__m128i’ from type ‘int’
21:35:45 /home/hudson/workspace/PyBombs_Build_All_Matrix/os/CentOS_6.5_Desktop_x86_VM_R/satisfy_order/rpm-src/src/volk/kernels/volk/volk_8u_x2_encodeframepolar_8u.h: In function ‘volk_8u_x2_encodeframepolar_8u_a_ssse3’:
21:35:45 /home/hudson/workspace/PyBombs_Build_All_Matrix/os/CentOS_6.5_Desktop_x86_VM_R/satisfy_order/rpm-src/src/volk/kernels/volk/volk_8u_x2_encodeframepolar_8u.h:246: error: incompatible types when assigning to type ‘__m128i’ from type ‘int’
21:35:45 /home/hudson/workspace/PyBombs_Build_All_Matrix/os/CentOS_6.5_Desktop_x86_VM_R/satisfy_order/rpm-src/src/volk/kernels/volk/volk_8u_x2_encodeframepolar_8u.h:251: error: incompatible types when assigning to type ‘__m128i’ from type ‘int’
21:35:45 /home/hudson/workspace/PyBombs_Build_All_Matrix/os/CentOS_6.5_Desktop_x86_VM_R/satisfy_order/rpm-src/src/volk/kernels/volk/volk_8u_x2_encodeframepolar_8u.h:295: error: incompatible types when assigning to type ‘__m128i’ from type ‘int’
21:35:45 /home/hudson/workspace/PyBombs_Build_All_Matrix/os/CentOS_6.5_Desktop_x86_VM_R/satisfy_order/rpm-src/src/volk/kernels/volk/volk_8u_x2_encodeframepolar_8u.h:303: error: incompatible types when assigning to type ‘__m128i’ from type ‘int’
21:35:45 /home/hudson/workspace/PyBombs_Build_All_Matrix/os/CentOS_6.5_Desktop_x86_VM_R/satisfy_order/rpm-src/src/volk/kernels/volk/volk_8u_x2_encodeframepolar_8u.h:307: error: incompatible types when assigning to type ‘__m128i’ from type ‘int’
21:35:45 /home/hudson/workspace/PyBombs_Build_All_Matrix/os/CentOS_6.5_Desktop_x86_VM_R/satisfy_order/rpm-src/src/volk/kernels/volk/volk_8u_x2_encodeframepolar_8u.h:311: error: incompatible types when assigning to type ‘__m128i’ from type ‘int’
21:35:45 make[2]: *
* [lib/CMakeFiles/volk_obj.dir/volk_machine_ssse3_64.c.o] Error 1
21:35:45 make[2]: *** Waiting for unfinished jobs....
21:35:47 make[1]: *** [lib/CMakeFiles/volk_obj.dir/all] Error 2
21:35:47 make: *** [all] Error 2
21:35:47 bash return val = 2
21:35:47 Traceback (most recent call last):
21:35:47 File "./pybombs", line 360, in
21:35:47 main()
21:35:47 File "./pybombs", line 357, in main
21:35:47 sys.exit(cli(parser,opts,args))
21:35:47 File "./pybombs", line 171, in cli
21:35:47 pybombs_ops.install(p, not opts.force);
21:35:47 File "/home/hudson/workspace/PyBombs_Build_All_Matrix/os/CentOS_6.5_Desktop_x86_VM_R/satisfy_order/rpm-src/mod_pybombs/pybombs_ops.py", line 151, in install
21:35:47 global_recipes[pkg].install();
21:35:47 File "/home/hudson/workspace/PyBombs_Build_All_Matrix/os/CentOS_6.5_Desktop_x86_VM_R/satisfy_order/rpm-src/mod_pybombs/recipe.py", line 531, in install
21:35:47 st = self.install_src();
21:35:47 File "/home/hudson/workspace/PyBombs_Build_All_Matrix/os/CentOS_6.5_Desktop_x86_VM_R/satisfy_order/rpm-src/mod_pybombs/recipe.py", line 598, in install_src
21:35:47 self.install_order[step]1;
21:35:47 File "/home/hudson/workspace/PyBombs_Build_All_Matrix/os/CentOS_6.5_Desktop_x86_VM_R/satisfy_order/rpm-src/mod_pybombs/recipe.py", line 658, in make
21:35:47 assert(st == 0);
21:35:47 AssertionError
21:35:47 Build step 'Execute shell' marked build as failure
21:35:47 [WARNINGS] Skipping publisher since build result is FAILURE
21:35:47 Email was triggered for: Still Failing
21:35:47 Trigger Failure was overridden by another trigger and will not send an email.
21:35:47 Sending email for trigger: Still Failing

Feature Request: sin,cos,sincos, log10

I just wrapped up a long project to OpenCL enable common gnuradio blocks (gr-clenabled) and did a comprehensive timing study on the native blocks (if you check out the docs folder I published all of the timing results). Based on those results I actually think if there were volk/SSE functions for processing streams in gnuradio for sin,cos,sincos, and log10 that using those in the corresponding blocks like signal generator, quad demod, and log10 could perform twice as fast as the OpenCL versions (which beat the current native code), which may benefit everyone. So I figured I'd submit a feature request to see if it may be possible and how it would perform versus the native code.

Thanks!

Gnuradio use -DENABLE_STATIC_LIBS=True for volk error

Ubuntu 16.04.2 compile Gnuradio v3.7.10.1 Release
volk/apps/CMakeFiles/volk_profile.dir/build.make:125: recipe for target 'volk/apps/volk_profile' failed
make[2]: *** [volk/apps/volk_profile] Error 1
CMakeFiles/Makefile2:348: recipe for target 'volk/apps/CMakeFiles/volk_profile.dir/all' failed
make[1]: *** [volk/apps/CMakeFiles/volk_profile.dir/all] Error 2
[ 41%] Linking CXX static library libgnuradio-blocks.a
[ 41%] Built target gnuradio-blocks_static
Makefile:160: recipe for target 'all' failed

cannot convert ‘ unsigned int* ’ to ‘ uint16_t* {aka short unsigned int*} ’ in argument passing

I have had this error using the latest Gunradio since 05/26/2016. Looks like Volk was updated and the update conflicts with Gnuradio's gr-dtv component

Error Log:
/home/hudson/workspace/PyBombs_Build_All_Ubuntu_Matrix/os/Ubuntu_14.04_Desktop_x86_64_VM_R/satisfy_order/deb-src/src/gr-wimax/lib/phy/phy_estimate_fine_offsets_shmidl_and_cox.cc: In function ‘ bool phy_estimate_fine_offsets_shmidl_and_cox(unsigned int, unsigned int, unsigned int, float, const gr_complex_, unsigned int, unsigned int&, double&, gr_complex_, size_t&) ’:
/home/hudson/workspace/PyBombs_Build_All_Ubuntu_Matrix/os/Ubuntu_14.04_Desktop_x86_64_VM_R/satisfy_order/deb-src/src/gr-wimax/lib/phy/phy_estimate_fine_offsets_shmidl_and_cox.cc: 45: 78: error: cannot convert ‘ unsigned int* ’ to ‘ uint16_t* {aka short unsigned int_} ’ in argument passing
volk_32fc_index_max_16u( &M_max, (lv_32fc_t_) &crossvec[0], num_crossvals);
^
make[2]: *** [lib/CMakeFiles/ofdma.dir/phy/phy_estimate_fine_offsets_shmidl_and_cox.cc.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[1]: *** [lib/CMakeFiles/ofdma.dir/all] Error 2
make: *** [all] Error 2

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.