At GRCon13 a small working group met to discuss improvements for VOLK.
- Nathan West
- Nick Foster
- Sean Nowlan
- Tom Rondeau
- Doug Geiger came to hack on VOLK on Friday.
There was a lot of agreement between attendees, and in general people had similar thoughts on the direction needed to improve VOLK. In general VOLK could benefit from more proto kernels and kernels. Both of these improvements should be guided by data, ideally collected from users. We discussed methods to collect data. Most of the attendees had high interest in producing more NEON and/or orc proto kernels.
The immediate solution for collecting performance of existing kernels is to run a post install task of GNU Radio during a pyBOMBS install to run volk_profile and submit the results to gnuradio.org. Tim O'Shea volunteered to do this during the hackfest (https://github.com/pybombs/pybombs/commit/a6139721513eb49b7d856807976e6cab69ccd1c2). The next step will be to collate those results in a meaningful way, ideally automatically generating some results that are publicly viewable.
The next step will be to determine which blocks could benefit from pushing calculations out to VOLK, either in new kernels or existing kernels. An initial push to this might be testing block performance using different GCC optimizations.
The dispatcher is a recent improvement to VOLK that moves the decision of an aligned vs unaligned kernel from the block to VOLK. Kernel authors can write their own dispatchers. More info is on the volk readme at https://github.com/gnuradio/gnuradio/blob/master/volk/kernels/README.txt
Including .S files in VOLK¶
We discussed approaches to including .S files with raw ASM in to VOLK. The organization of this should be asm files go in kernels/volk/asm/$machine_name/$kernel_name. Doug pointed out that orc should probably be moved to reflect this, and spu_lib should either me moved or removed as well.