1
0
mirror of https://github.com/gnss-sdr/gnss-sdr synced 2024-11-17 23:34:56 +00:00
Commit Graph

369 Commits

Author SHA1 Message Date
Carles Fernandez
c8f71204fc Make kernels compatible with c98 standard
so the library can be built by more compilers
2016-05-31 20:56:19 +02:00
Carles Fernandez
5a73b4e047 Improve package reproducibility
Packages using CMake often use file(GLOB ...) to retrieve a list of
source files. As this is based on readdir(), the resulting file list
is unsorted. A common use case is to pass this list directly to
add_executable or add_library. But as the order is unpredictable, the
binaries are not reproducible (because the order in which the objects
are linked will vary).

See https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=824263
2016-05-23 19:51:59 +02:00
Carles Fernandez
896d6bc045 Tag library version with git 2016-05-21 01:09:17 +02:00
Carles Fernandez
16c4bb677e Fix building when using PyBOMBS 2016-05-21 01:06:46 +02:00
Carles Fernandez
daee8de0e0 Fix bug in AVX2 puppet 2016-05-21 00:42:21 +02:00
Carles Fernandez
19f46c2cd9 Bump version number to v0.0.7
preparing v0.0.7 release and minor code cleaning
2016-05-13 19:17:56 +02:00
Carles Fernandez
d5d80395ba Update volk_gnsssdr_profile manpage 2016-05-11 19:20:01 +02:00
Carles Fernandez
dcc9b6ed8c Remove compiler flags from MSVC builds
See https://github.com/gnuradio/volk/pull/78
2016-05-08 08:34:35 +02:00
Carles Fernandez
84911043b4 Documenting kernels constraint 2016-05-06 08:25:04 +02:00
Carles Fernandez
fd81154b95 Smaller figure 2016-05-05 20:37:32 +02:00
Carles Fernandez
f3f2e9458b Adding caption and Doxygen path 2016-05-05 20:36:22 +02:00
Carles Fernandez
0881f19a89 Updating list of kernels 2016-05-05 19:40:34 +02:00
Carles Fernandez
1a1f0f9abe Add reference to ION GNSS+ 2016 paper 2016-05-05 19:19:53 +02:00
Carles Fernandez
1b607751ef Add graphic example of VOLK_GNSSSDR usage 2016-05-05 18:59:02 +02:00
Carles Fernandez
99d6ce9ba7 Remove line that was causing random fails in parallel compilations
in Mac OS X
2016-05-05 18:02:03 +02:00
Carles Fernandez
831cc75153 Remove tabs from the source code 2016-05-02 23:46:30 +02:00
Carles Fernandez
c6eec90849 adding zlib license text 2016-04-29 08:03:20 +02:00
Carles Fernandez
25e5c744d7 More consistent naming
now volk_gnsssdr_16ic_xn_resampler_16ic implements the same resampler
than volk_gnsssdr_32fc_xn_resampler_32fc. The old one, which is faster
in SSE implementations at the expense of some constraints on the inputs
(to be documented), is now named
volk_gnsssdr_16ic_xn_resampler_fast_16ic
2016-04-28 20:12:27 +02:00
Carles Fernandez
4c4f6c1def Commenting out messages on standard output
which interferes with programs trying to use it for legitimate purposes.
2016-04-27 21:00:59 +02:00
Carles Fernandez
e102de53fc fixing lintian warning spelling-error-in-binary 2016-04-26 20:06:49 +02:00
Carles Fernandez
36ab6a0e67 merging text fixes 2016-04-25 16:48:01 +02:00
Carles Fernandez
b2cc18bfa5 Adding AVX protokernel 2016-04-23 16:31:41 +02:00
Carles Fernandez
c6359c3313 fix in documentation 2016-04-23 16:30:36 +02:00
Carles Fernandez
2b7175083f Merge branch 'next' of git+ssh://github.com/gnss-sdr/gnss-sdr into next 2016-04-13 18:26:19 +02:00
Carles Fernandez
414eaddb42 Fixing resamplers
Under some circumstances (i.e. negative Doppler) it could cause a
segmentation fault. It is now fixed for all protokernels.
2016-04-12 01:05:47 +02:00
Carles Fernandez
9cb60ec948 fixing resampler 2016-04-07 12:42:24 +02:00
Carles Fernandez
1aa9a9fd1e Fixing resampler 2016-04-07 12:03:05 +02:00
Carles Fernandez
9ebbb3b460 fix kernel
This fixes a runtime error, since VOLK functions are static and a
segmentation fault was caused when aligned and unaligned versions were
called concurrently.
2016-04-03 09:07:10 +02:00
Carles Fernandez
a5fb34c800 Fixing NEON proto-kernels 2016-04-03 02:27:54 +02:00
Carles Fernandez
57107cf86d Introducing a new resampler kernel for comparison 2016-04-01 12:41:00 +02:00
Carles Fernandez
7658f64527 adding unaligned protokernels 2016-04-01 10:36:52 +02:00
Carles Fernandez
5841258a36 bug fix 2016-04-01 01:51:58 +02:00
Carles Fernandez
99ceb30a0e Fixes related to the MSVC compiler 2016-04-01 01:50:09 +02:00
Carles Fernandez
684073bef6 adding NEON puppet 2016-04-01 01:47:51 +02:00
Carles Fernandez
43330588a8 adding include for neon intrinsics 2016-04-01 01:25:57 +02:00
Carles Fernandez
f6cfc64cf7 adding NEON protokernel 2016-04-01 01:21:35 +02:00
Carles Fernandez
a71b118170 Workaround for problems with orc 2016-03-31 21:35:05 +02:00
Carles Fernandez
817139ba50 ask for aligned memory in a more portable way 2016-03-31 19:39:37 +02:00
Carles Fernandez
36660e05ca Removing unused class (nco_lib, replaced by volk kernels) 2016-03-30 22:37:43 +02:00
Carles Fernandez
4f3273f296 code cleaning, removing tabs 2016-03-30 22:27:12 +02:00
Carles Fernandez
9eb175fb0e Adding new resampler kernel and integrating it in the multicorrelator 2016-03-30 21:33:43 +02:00
Carles Fernandez
d8b45d9b79 fix wrong storeu by store 2016-03-28 13:51:51 +02:00
Carles Fernandez
78372ba2e9 adding _mm256_zeroupper() at the end of AVX and AVX2 protokernels
This avoids penalties for state transitions from 256-bit x86-AVX
instructions to x86-SSE instructions
2016-03-28 11:58:01 +02:00
Carles Fernandez
b1d99d58ec fix typo in puppet initialization
The AVX2 protokernel achieves an acceleration factor x13.
2016-03-28 10:14:32 +02:00
Carles Fernandez
26e68e89f2 adding AVX2 protokernels (aligned and unaligned) 2016-03-28 09:42:55 +02:00
Carles Fernandez
7c1f5723e6 remove unneeded stores in NEON protokernels 2016-03-27 13:00:04 +02:00
Carles Fernandez
d113835073 adding new kernel: volk_gnsssdr_32fc_x2_rotator_dot_prod_32fc_xn
Including generic, SSE3 (aligned and unaligned), AVX (aligned and
unaligned) and NEON protokernels.
2016-03-27 12:50:53 +02:00
Carles Fernandez
751764343c adding AVX2 protokerns
I haven't found a way to do the rotator part better than with SSE3. Only
the dot product takes real advantage of 256-bit registers. Even tough,
the gain with respect to SSE3 is about 12%.
2016-03-26 01:51:01 +01:00
Carles Fernandez
d987a04d42 adding AVX2 protokernels 2016-03-22 18:03:34 +01:00
Carles Fernandez
bd6c028ec4 bug fix
writing to the input pointer was having bad consequences (random fails
in other kernels)
2016-03-22 18:00:56 +01:00
Javier Arribas
0e47d97dec Adding a missing include in gnsssdr volk kernel library (volk_gnsssdr_16ic_x2_rotator_dot_prod_16ic_xn) 2016-03-21 16:07:16 +01:00
Carles Fernandez
703de227a2 fix typo 2016-03-21 00:44:09 +01:00
Carles Fernandez
a908804b44 fix phase computation in the tail items of the NEON protokernel 2016-03-21 00:40:36 +01:00
Carles Fernandez
1983562496 The sincos kernel now accepts an initial phase 2016-03-21 00:38:08 +01:00
Carles Fernandez
485a405bab Adding new neon kernel and solving x86 issues
Managing memory with volk_gnsssdr instead of malloc and free. This seems
to solve runtime problems (segmentation faults) in i386 (32 bit)
architectures.
2016-03-20 13:11:53 +01:00
Carles Fernandez
883cf629d1 Adding new NEON protokernel
Try another strategy based on multiply-and-accumulate for the dot
product. In all SIMD protokernels, managing memory with
volk_gnsssdr_malloc and volk_gnsssdr_free instead of calloc and free
2016-03-20 12:23:45 +01:00
Carles Fernandez
fa292961c1 Fix neon protokernel 2016-03-20 01:50:04 +01:00
Carles Fernandez
9c8fc9436e Adding and integrating sincos kernel 2016-03-20 01:45:01 +01:00
Carles Fernandez
2be266cc71 adding sincos kernel 2016-03-19 21:41:19 +01:00
Carles Fernandez
c9ff9759cc Fixing some numerical problems 2016-03-18 19:46:18 +01:00
Carles Fernandez
2cf1ea85af fix app name in help message 2016-03-13 12:07:40 +01:00
Carles Fernandez
87dc56e147 Using vector multiply-accumulate in NEON kernels
Aprox 10% of improvememnt
2016-03-12 21:47:35 +01:00
Carles Fernandez
f7c1c9ce43 Using multiply-accumulate in NEON 2016-03-12 19:30:00 +01:00
Carles Fernandez
c236c3ab67 Exploiting multiply-accumulate in NEON 2016-03-12 13:32:10 +01:00
Carles Fernandez
a93a01e9b1 prefetching data 2016-03-12 12:22:26 +01:00
Carles Fernandez
268f298fad More elegant workaround for 32-bit architecutres 2016-03-12 09:28:25 +01:00
Carles Fernandez
d9c333c85f Improving documentation
Adding Doxygen documentation to VOLK_GNSSSDR kernels
2016-03-10 00:56:23 +01:00
Carles Fernandez
f6e713929a Adding documentation
Copied from VOLK, with some minor changes
2016-03-09 21:01:22 +01:00
Carles Fernandez
81f4eadb5b Deleting old, unused file 2016-03-09 19:35:56 +01:00
Carles Fernandez
243d66218b Change @VERSION by @LIBVER@ 2016-03-09 18:41:02 +01:00
Carles Fernandez
250375dbd3 Fix incorrect include when building with MSVC
Keeping track of VOLK's improvements, see
65539f2691
2016-03-09 18:23:19 +01:00
Carles Fernandez
9a92672905 Fix some CMake complaints
Keeping track of VOLK's improvements, see
434c994f21
2016-03-09 18:19:05 +01:00
Carles Fernandez
cf44382afe tmpl: cast windows regs to int* calling cpuidex
Keeping track of VOLK's improvements. See
b1b69e1ae3
2016-03-09 18:15:28 +01:00
Carles Fernandez
1e9a9d1a55 reverting wrong commit 2016-03-09 15:56:07 +01:00
Carles Fernandez
59011a7772 prefetching data in the cache 2016-03-07 19:57:22 +01:00
Carles Fernandez
aac79eb78a prefetching data in the cache 2016-03-07 19:25:12 +01:00
Carles Fernandez
a3d7683c85 Fix segmentation fault of volk_gnsssdr_profile in 32-bit architectures
Temporal deactivation of the unaligned protokernel of the multiple
correlator. It does not affect receiver's performance. The commit
includes other minor fixes.
2016-03-07 18:35:40 +01:00
Carles Fernandez
b24db5d77e Fix compilation with CMake 3.5
The CMake variables CMAKE_BINARY_DIR and CMAKE_SOURCE_DIR should never be set. Now CMake 3.5 prevents the user from doing that. They have been replaced by their counterparts PROJECT_BINARY_DIR and PROJECT_SOURCE_DIR
2016-02-25 15:26:32 +01:00
Carles Fernandez
9ae59c2009 Adding missing include 2016-02-22 10:07:08 +01:00
Carles Fernandez
11c84ed8ad Fixing kernels 2016-02-19 11:03:24 +01:00
Carles Fernandez
b2a654c646 fix typos 2016-02-14 15:06:45 +01:00
Carles Fernandez
1930f02c4f saving one register in neon implementation 2016-02-14 15:02:17 +01:00
Carles Fernandez
6156f4b3de some small fixes 2016-02-14 14:52:26 +01:00
Carles Fernandez
e8dfd860fb prefetching data in neon implementation
5% of average improvement
2016-02-13 14:26:40 +01:00
Carles Fernandez
a4e2ceb9c4 Adding neon implementation
Input data have been re-scaled to avoid saturation problems
2016-02-13 14:16:40 +01:00
Javier Arribas
d4d73e24c1 Fixing some includes in volk gnsssdr kernels 2016-02-12 12:36:08 +01:00
Carles Fernandez
e400885800 Fixing puppets
In kernels which output is shorter than num_points, memory is firtly
filled bu zeros and then the kernel is executed.
2016-02-11 21:15:46 +01:00
Javier Arribas
7f9dccd386 generic implementation simplification in volk gnsssdr kernel module 2016-02-11 17:57:03 +01:00
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
Javier Arribas
9bf4710679 Added a new volk_gnsssdr kernel that integrates both the phase rotator
and n dot_product kernels. Enabled in cpu_multicorrelator_16sc
2016-02-09 11:49:18 +01:00
Carles Fernandez
794d141e84 Improved processor/feature detection when building with MSVC 2016-02-07 10:56:21 +01:00
Carles Fernandez
844c33d699 improving documentation 2016-01-31 23:21:28 +01:00
Carles Fernandez
bb54222883 improving documentation 2016-01-31 23:13:10 +01:00
Carles Fernandez
213486c2eb improving documentation 2016-01-31 19:36:48 +01:00
Carles Fernandez
833fe313c7 Improving documentation 2016-01-31 18:13:03 +01:00
Carles Fernandez
f4875012df prefetch data in the cache in neon implementation
8% of average improvement
2016-01-31 10:41:51 +01:00
Carles Fernandez
8a6c4d767f ask for aligned memory in neon implementation
1% improvement
2016-01-31 10:39:24 +01:00
Carles Fernandez
4fcffa2bdd some improvements
phase computation was correclty done in SSE implementation but not in
NEON. Ask for aligned memory in NEON implementation. Some code cleaning
2016-01-31 09:49:50 +01:00
Carles Fernandez
db321d1c2e Fixing missing phase increment in SIMD implementations
After computing the rotation with SIMD instructions, we were not
incrementing the phase step, so the first iteration in the 'c region'
had the same phase than the last sample computed with SIMD instructions.
This commit fix the bux in SSE3 and NEON implementations
2016-01-29 19:42:30 +01:00
Carles Fernandez
8c07815852 fix missing time step in neon implementation 2016-01-29 19:30:31 +01:00