Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?

Common Problems with GNU Radio/VOLK submodules

This is a list of problems that we expect people to run in to when working with GNU Radio and the VOLK submodule. Each problem has a probable cause, the error message, and a solution.

Problem 1

Cause

Checkout commit that has in-tree volk after initializing submodule

Error Message

git checkout master
    error: The following untracked working tree files would be overwritten by checkout:
        volk/CMakeLists.txt
        volk/apps/CMakeLists.txt
        volk/apps/volk-config-info.cc
        volk/apps/volk_profile.cc
        volk/cmake/msvc/config.h
        volk/cmake/msvc/inttypes.h
        volk/cmake/msvc/stdbool.h
        volk/cmake/msvc/stdint.h
        volk/gen/archs.xml
        volk/gen/machines.xml
        volk/gen/volk_arch_defs.py
        volk/gen/volk_compile_utils.py
        volk/gen/volk_kernel_defs.py
        volk/gen/volk_machine_defs.py
        volk/gen/volk_tmpl_utils.py
        volk/include/volk/constants.h
        volk/include/volk/volk_common.h
        volk/include/volk/volk_complex.h
        volk/include/volk/volk_malloc.h
        volk/include/volk/volk_prefs.h
        volk/kernels/README.txt
        volk/kernels/volk/asm/neon/volk_16i_max_star_horizontal_16i.s
        volk/kernels/volk/asm/neon/volk_32f_s32f_multiply_32f_neonasm.s
        volk/kernels/volk/asm/neon/volk_32f_x2_add_32f_a_neonasm.s
        volk/kernels/volk/asm/neon/volk_32f_x2_add_32f_a_neonpipeline.s
        volk/kernels/volk/asm/neon/volk_32f_x2_dot_prod_32f_neonasm.s
        volk/kernels/volk/asm/neon/volk_32f_x2_dot_prod_32f_neonasm_opts.s
        volk/kernels/volk/asm/neon/volk_32fc_32f_dot_prod_32fc_a_neonasm.s
        volk/kernels/volk/asm/neon/volk_32fc_32f_dot_prod_32fc_a_neonasmpipeline.s
        volk/kernels/volk/asm/neon/volk_32fc_32f_dot_prod_32fc_a_neonasmvmla.s
        volk/kernels/volk/asm/neon/volk_32fc_32f_dot_prod_32fc_unrollasm.s
        volk/kernels/volk/asm/neon/volk_32fc_x2_dot_prod_32fc_neonasm.s
        volk/kernels/volk/asm/neon/volk_32fc_x2_dot_prod_32fc_neonasm_opttests.s
        volk/kernels/volk/asm/neon/volk_32fc_x2_multiply_32fc_neonasm.s
        volk/kernels/volk/asm/neon/volk_arm_32fc_32f_dot_prod_32fc_a_neonpipeline.s
        volk/kernels/volk/volk_16i_32fc_dot_prod_32fc.h
        volk/kernels/volk/volk_16i_branch_4_state_8.h
        volk/kernels/volk/volk_16i_convert_8i.h
        volk/kernels/volk/volk_16i_max_star_16i.h
        volk/kernels/volk/volk_16i_max_star_horizontal_16i.h
        volk/kernels/volk/volk_16i_permute_and_scalar_add.h
        volk/kernels/volk/volk_16i_s32f_convert_32f.h
        volk/kernels/volk/volk_16i_x4_quad_max_star_16i.h
        volk/kernels/volk/volk_16i_x5_add_quad_16i_x4.h
        volk/kernels/volk/volk_16ic_deinterleave_16i_x2.h
        volk/kernels/volk/volk_16ic_deinterleave_real_16i.h
        volk/kernels/volk/volk_16ic_deinterleave_real_8i.h
        volk/kernels/volk/volk_16ic_magnitude_16i.h
        volk/kernels/volk/volk_16ic_s32f_deinterleave_32f_x2.h
        volk/kernels/volk/volk_16ic_s32f_deinterleave_real_32f.h
        volk/kernels/volk/volk_16ic_s32f_magnitude_32f.h
        volk/kernels/volk/volk_16u_byteswap.h
        volk/kernels/volk/volk_16u_byteswappuppet_16u.h
        volk/kernels/volk/volk_32f_accumulator_s32f.h
        volk/kernels/volk/volk_32f_acos_32f.h
        volk/kernels/volk/volk_32f_asin_32f.h
        volk/kernels/volk/volk_32f_atan_32f.h
        volk/kernels/volk/volk_32f_binary_slicer_32i.h
        volk/kernels/volk/volk_32f_binary_slicer_8i.h
        volk/kernels/volk/volk_32f_convert_64f.h
        volk/kernels/volk/volk_32f_cos_32f.h
        volk/kernels/volk/volk_32f_expfast_32f.h
        volk/kernels/volk/volk_32f_index_max_16u.h
        volk/kernels/volk/volk_32f_invsqrt_32f.h
        volk/kernels/volk/volk_32f_log2_32f.h
        volk/kernels/volk/volk_32f_s32f_32f_fm_detect_32f.h
        volk/kernels/volk/volk_32f_s32f_calc_spectral_noise_floor_32f.h
        volk/kernels/volk/volk_32f_s32f_convert_16i.h
        volk/kernels/volk/volk_32f_s32f_convert_32i.h
        volk/kernels/volk/volk_32f_s32f_convert_8i.h
        volk/kernels/volk/volk_32f_s32f_multiply_32f.h
        volk/kernels/volk/volk_32f_s32f_normalize.h
        volk/kernels/volk/volk_32f_s32f_power_32f.h
        volk/kernels/volk/volk_32f_s32f_stddev_32f.h
        volk/kernels/volk/volk_32f_sin_32f.h
        volk/kernels/volk/volk_32f_sqrt_32f.h
        volk/kernels/volk/volk_32f_stddev_and_mean_32f_x2.h
        volk/kernels/volk/volk_32f_tan_32f.h
        volk/kernels/volk/volk_32f_tanh_32f.h
        volk/kernels/volk/volk_32f_x2_add_32f.h
        volk/kernels/volk/volk_32f_x2_divide_32f.h
        volk/kernels/volk/volk_32f_x2_dot_prod_16i.h
        volk/kernels/volk/volk_32f_x2_dot_prod_32f.h
        volk/kernels/volk/volk_32f_x2_interleave_32fc.h
        volk/kernels/volk/volk_32f_x2_max_32f.h
        volk/kernels/volk/volk_32f_x2_min_32f.h
        volk/kernels/volk/volk_32f_x2_multiply_32f.h
        volk/kernels/volk/volk_32f_x2_pow_32f.h
        volk/kernels/volk/volk_32f_x2_s32f_int
Aborting

Solution

Deinitialize the submodule, then perform your checkout

git submodule deinit volk

Problem 2

Cause

We have an in-tree volk/ and checking out a branch with submodule volk

Error Message

$ git checkout volk-split
error: Updating the following directories would lose untracked files in it:
        volk
Aborting

Solution

Manually remove the volk directory and checkout the desired branch

$ rm -rf volk
$ git checkout volk-split
Switched to branch 'volk-split'
Your branch is up-to-date with 'nwest/volk-split'.

Problem 3

Cause

The VOLK submodule is not checked out

Error Message

$ cmake ..
    CMake Warning at CMakeLists.txt:279 (find_package):
      By not providing "FindVolk.cmake" in CMAKE_MODULE_PATH this project has
      asked CMake to find a package configuration file provided by "Volk", but
      CMake did not find one.

      Could not find a package configuration file provided by "Volk" with any of
      the following names:

        VolkConfig.cmake
        volk-config.cmake

      Add the installation prefix of "Volk" to CMAKE_PREFIX_PATH or set
      "Volk_DIR" to a directory containing one of the above files.  If "Volk"
      provides a separate development package or SDK, be sure it has been
      installed.


    CMake Error at CMakeLists.txt:287 (message):
      VOLK submodule is not checked out


    -- Configuring incomplete, errors occurred!
    See also "/opt/code/sandbox/gnuradio/build/CMakeFiles/CMakeOutput.log".

Solution

Initialize and update your submodule

$ git submodule update --init --recursive
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment