1
0
mirror of https://github.com/gnss-sdr/gnss-sdr synced 2024-06-26 15:03:14 +00:00
gnss-sdr/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr
Carles Fernandez 7d0e3126aa Merge branch 'next' of git+ssh://github.com/gnss-sdr/gnss-sdr into next
# Please enter a commit message to explain why this merge is necessary,
# especially if it merges an updated upstream into a topic branch.
#
# Lines starting with '#' will be ignored, and an empty message aborts
# the commit.
2016-02-09 19:43:07 +01:00
..
apps improving documentation 2016-01-31 23:21:28 +01:00
cmake some fixes 2016-01-13 10:22:06 +01:00
gen Updating volk_gnsssdr to the new volk scheme 2016-01-12 20:15:16 +01:00
include/volk_gnsssdr improving documentation 2016-01-31 19:36:48 +01:00
kernels/volk_gnsssdr Added a new volk_gnsssdr kernel that integrates both the phase rotator 2016-02-09 11:49:18 +01:00
lib Merge branch 'next' of git+ssh://github.com/gnss-sdr/gnss-sdr into next 2016-02-09 19:43:07 +01:00
python/volk_gnsssdr_modtool Updating volk_gnsssdr to the new volk scheme 2016-01-12 20:15:16 +01:00
tmpl Updating volk_gnsssdr to the new volk scheme 2016-01-12 20:15:16 +01:00
.gitignore Adding README and .gitignore 2016-01-22 02:02:23 +01:00
CMakeLists.txt tagging version 2016-01-22 10:14:43 +01:00
COPYING copy GPLv3 license from gnss-sdr 2016-01-22 00:54:52 +01:00
Doxyfile.in tagging version 2016-01-22 10:14:43 +01:00
DoxygenLayout.xml Updating volk_gnsssdr to the new volk scheme 2016-01-12 20:15:16 +01:00
README.md Merge branch 'next' of git+ssh://github.com/gnss-sdr/gnss-sdr into next 2016-01-28 18:10:21 +01:00
volk_gnsssdr.pc.in some linking fixes 2014-11-09 15:31:35 +01:00

Welcome to VOLK_GNSSSDR, the Vector-Optimized Library of Kernels for GNSS-SDR

VOLK_GNSSSDR is a sub-project of GNSS-SDR. This library provides a set of extra kernels that can be used stand-alone or in combination with VOLK's. Please see http://libvolk.org for documentation, source code, and contact information about the original VOLK.

The boilerplate of this code was initially generated with volk_modtool, an application provided by VOLK that creates the skeleton than can then be filled with custom kernels. Some modifications were added to accomodate the specificities of Global Navigation Satellite Systems (GNSS) signal processing. Those changes are clearly indicated in the source code, and do not break compatibility.

This library contains kernels of hand-written SIMD code for different mathematical operations, mainly with 8-bit and 16-bit real and complex data types, offering a platform/architecture agnostic version that will run in all machines, plus other versions for different SIMD instruction sets. Then, the application volk_gnsssdr_profile runs some iterations of all versions that your machine can execute and annotates which is the fastest, which will then be selected at runtime when executing GNSS-SDR. In this way, we can address at the same time portability (by creating executables that will run in nearly all processor architectures) and efficiency (by providing custom implementations specially designed to take advantage of the specific processor that is running the code).

These kernels have some specific features (e.g. saturation arithmetics) that are aimed to GNSS signal processing, but could make them not suitable for its general use in other applications. Check out the generic (that is, plain C) implementation to see what each kernel is actually doing.

How to use VOLK_GNSSSDR:

This library is automatically built and installed along with GNSS-SDR if it is not found by CMake on your system at configure time.

However, you can install and use VOLK_GNSSSDR kernels as you use VOLK's, independently from GNSS-SDR.

First, make sure that the required dependencies are installed in you machine:

$ sudo apt-get install git subversion cmake python-cheetah libboost-dev libbbost-filesystem

In order to build and install the library, go to the base folder of the source code and do:

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

That's it!

Before its first use, please execute volk_gnsssdr_profile to let your system know which is the fastest available implementation. This only has to be done once:

$ volk_gnsssdr_profile

From now on, GNSS-SDR (and any other program of your own that makes use of VOLK_GNSSSDR) will benefit from the acceleration provided by SIMD instructions available in your processor.


VOLK_GNSSSDR was originally created by Andres Cecilia Luque in the framework of the Summer Of Code In Space (SOCIS 2014) program organized by the European Space Agency, and evolved since then by other authors (see each file header for main authorship). This software is released under the GNU General Public License version 3, see the file COPYING.

This project is managed by Centre Tecnologic de Telecomunicacions de Catalunya.