A lot of really good changes came to VOLK with v1.4. It wouldn't have been possible without the following contributors:
- Andrej Rode firstname.lastname@example.org
- Bernhard M. Wiedemann email@example.com
- Carles Fernandez firstname.lastname@example.org
- Christoph Mayer Christoph.Mayer@cern.ch
- Damian Miralles email@example.com
- Douglas Anderson firstname.lastname@example.org
- hcab14 email@example.com
- Johannes Demel firstname.lastname@example.org
- Josh Blum email@example.com
- luz.paz firstname.lastname@example.org
- Magnus Lundmark email@example.com
- Marcus Müller firstname.lastname@example.org
- Michael Dickens email@example.com
- Nathan West firstname.lastname@example.org
- Nick Foster email@example.com
- Paul Cercueil firstname.lastname@example.org
- Stefan Wunsch email@example.com
Generally, there are a lot of kernel changes and some minor dependency changes. I'm trying to remove boost as a dependency and we've introduced mako templates rather than the old Cheetah-templates to keep in line with GNU Radio. There are also several new CI files that support appveyor, travis-ci, and gitlab. Right now all pull requests must pass travis-ci.
The easiest way to show these changes is simply with two lists:
32 bit reversal
- double precision (
New proto-kernels by architecture
Note that in some cases an unaligned version was added where an aligned version already existed
- conjugate dot products
- move all neonasm to aligned protokernels
- added ARM version of volk_32u_reverse_32u (RBIT)
Additionally, there are new protokernel intrinsics available for use in writing new kernels.
Then, we also had some general kernel and protokernel bug fixes and using proper type-named C functions which happened to increase performance:
The polarbutterfly went through some heavy refactoring and bug fixes as well as adding an AVX version.
Fix GH issue #139 for
32fc_index_max_* kernels resulting in a slightly wrong index being returned.
Fix bug 106 (volk_64u_popcnt bug in generic implementation)
CI and Builds
As previously mentioned there are appveyor, travis-ci, and gitlab CI files available. There is a travis-ci instance checking all pull requests at https://travis-ci.org/gnuradio/volk/ and a gitlab mirror running CI checks at https://gitlab.com/n-west/volk.
While working on these CI files the kernel tests were split in to individual ctest targets so that each kernel is its own test rather than running them as a monolithic binary. This allows parallel testing, but mostly enables easier diagnostics when a test fails. The readme is now a markdown file that renders well on GitHub and Gitlab along with the travis-ci status as a badge.
Within this release two tools were run that reorganized includes and fixed a bunch of typos within code.
As part of the attempt to build VOLK without boost a bunch of app and build utilities were written to replace boost-code. This shouldnt be visible to the user, but will hopefully make future builds easier and smaller with fewer build and run-time dependencies. Builds with python 2.7 and 3 should work-- although six is required for python2.7 support.
Some build changes make it easier to do a relocatable build and order all files before building so that building from a particular revision (from now on) should be reproducible across machines building the same architectures. To use a relocatable install use the VOLK_PREFIX environment variable. This should support snaps (Canonical packaging environment).
modtool: update the cmake find module for volk mods modtool: deconflict module include guards from main volk