1
0
mirror of https://github.com/gnss-sdr/gnss-sdr synced 2025-12-08 17:48:06 +00:00
Commit Graph

10130 Commits

Author SHA1 Message Date
Carles Fernandez
f3078be133 Update changelog 2025-10-01 20:46:45 +02:00
Carles Fernandez
4cec408f8e Merge branch 'next' of github.com:gnss-sdr/gnss-sdr into next 2025-10-01 20:08:58 +02:00
Carles Fernandez
40ead0e61d Merge branch 'initial-labsat-4-support' into next 2025-10-01 16:39:28 +02:00
Carles Fernandez
a724900df8 Fix fir C++11 2025-10-01 14:45:06 +02:00
Carles Fernandez
5ab710af34 Fix code formatting 2025-10-01 12:15:42 +02:00
Carles Fernandez
442fb13ff1 Fix for C++11, code formatting 2025-10-01 12:01:32 +02:00
Carles Fernandez
7d21f0b0ae Fix building when using boost:filesystem 2025-10-01 11:12:18 +02:00
Carles Fernandez
fa954111b3 cpu_features: update AArch64 features to Linux 6.12 2025-09-30 10:53:02 +02:00
Mathieu Favreau
d39f8bbc96 Fix seconds to skip 2025-09-29 22:10:21 +00:00
Mathieu Favreau
3b5a19cf8c Add seconds to skip and logs 2025-09-29 19:37:26 +00:00
Mathieu Favreau
6db87f1ede Use gnss sdr file system header 2025-09-29 18:30:30 +00:00
Mathieu Favreau
84000aaf83 Cleanup 2025-09-29 15:38:46 +00:00
Mathieu Favreau
eabaaf3a1a Don't use filesystem 2025-09-29 15:37:02 +00:00
Mathieu Favreau
9f68c73dc0 Initial support labsat 4 2025-09-29 15:08:53 +00:00
Carles Fernandez
bb84ffbd6f Add Marcus Alagar to the list of contributors 2025-09-29 10:23:17 +02:00
Carles Fernandez
cfe9b3b580 Merge branch 'BigTurtle8-next' into next 2025-09-29 09:51:02 +02:00
Carles Fernandez
db9825afb7 Merge branch 'next' of https://github.com/BigTurtle8/gnss-sdr into BigTurtle8-next 2025-09-29 09:36:16 +02:00
Mathieu Favreau
d65cabf72e Fix labsat3w file reading 2025-09-26 12:28:10 +02:00
Carles Fernandez
37365fb94a CI: make clang-tidy to reformat code after applying fixes 2025-09-18 20:43:18 +02:00
Carles Fernandez
718ce7f274 Make .clang-tidy a valid YAML file 2025-09-18 20:41:10 +02:00
Carles Fernandez
ae4e7f7b24 CI: fix clang-tidy job 2025-09-18 19:21:44 +02:00
Carles Fernandez
3ec915caba CI: fix typo in volk-gnsssdr-macos-xcode job 2025-09-16 12:47:29 +02:00
Carles Fernandez
721b946102 OSNMA: be explicit if no Public Key is available 2025-09-16 11:26:23 +02:00
Marcus Alagar
040262f906 Fix various linting errors, use clang-format-19
Fix various linting errors, both for cpplint and
then clang-format. For the latter, used
clang-format-19 to quickly fix it all.

Signed-off-by: Marcus Alagar <mvala079@gmail.com>
2025-09-14 03:00:17 -07:00
Marcus Alagar
2e84e5bddb Implement s32f sin/cos, associated puppet, with RVV
Implement 32-bit floating-point complex number vector generator
using a fixed phase increment on each element utilizing
RVV C intrinsics.

Signed-off-by: Marcus Alagar <mvala079@gmail.com>
2025-09-14 03:00:16 -07:00
Marcus Alagar
87aa7b1469 Implement 32f sincos with RVV
Implement experimental 32-bit floating-point number generation
of complex numbers using sin and cos utilizing RVV C intrinsics.
To be fully honest, simply reverse-engineered the NEON implementation,
and not entirely sure how the final two big calculations ("extended
precision modular arithmetic" and calculating both polynomials)
were derived. As such, it is possible there is a method that better
utilizes the capabilities of RVV, and welcome any change that would
be able to take advantage of it.

Signed-off-by: Marcus Alagar <mvala079@gmail.com>
2025-09-14 03:00:16 -07:00
Marcus Alagar
e80b6095c8 Implement 32fc x2 rotator dot product, puppet, with RVV
Now, actually implement 32fc x2 rotator dot product and its associated
puppet utilizing RVV C intrinsics.

Signed-off-by: Marcus Alagar <mvala079@gmail.com>
2025-09-14 03:00:15 -07:00
Marcus Alagar
cc52744555 Implement 32fc 32f rotator dot product, puppet, with RVV
Implement 32-bit floating-point complex number rotator and dot product
with input scalar 32-bit floating-point complex vectors utilizing RVV
C intrinsics.

Signed-off-by: Marcus Alagar <mvala079@gmail.com>
2025-09-14 03:00:15 -07:00
Marcus Alagar
fba54b4a91 Implement 16ic x2 rotator dot product, puppet, with RVV
Implement 16-bit complex integer number vector rotation
and dot product using RVV C intrinsics.

Signed-off-by: Marcus Alagar <mvala079@gmail.com>
2025-09-14 03:00:14 -07:00
Marcus Alagar
bb15003645 Implement 16ic 16i rotator dot product, puppet, with RVV
In process, attempted experimental optimization.
Specifically, at point where would perform dot product, loaded the
accumulators in a vectorized way so that can simply rotate through
the accumulators instead of having to reload each one at a time.

However, ended up actually making the test slower. This
may, however, be a symptom of the relatively small test, so
it may be worth keeping an eye out in case use cases
turn out to mainly be for bigger vectors.

Signed-off-by: Marcus Alagar <mvala079@gmail.com>
2025-09-14 03:00:14 -07:00
Marcus Alagar
76b730cf53 Implement 16i rotator, puppet, with RVV
Implement rotator of 16-bit integer values using
RVV intrinsics, along with its corresponding puppet
to enable testing.

Signed-off-by: Marcus Alagar <mvala079@gmail.com>
2025-09-14 03:00:13 -07:00
Marcus Alagar
b6d141cd80 Replace wordy pseudointrinsic with more concise
Replace the wordy pseudoinstrict of `vset` with the
more concise (at least in these use cases) one of
`vcreate`.

Signed-off-by: Marcus Alagar <mvala079@gmail.com>
2025-09-14 03:00:13 -07:00
Marcus Alagar
b41df87919 Implement 64f accumulator
Implement 64-bit floating-point number accumulator using
RVV intrinsics.

Signed-off-by: Marcus Alagar <mvala079@gmail.com>
2025-09-14 03:00:12 -07:00
Marcus Alagar
9918f6d613 Implement high dynamics resampler and puppet
Implement high dynamics resampler, which seems to include a second-order
term in calculating the index as well as using a simple for loop
after calculating the first resample that just `memcpy`s at
an offset for the adjacent correlators.

Signed-off-by: Marcus Alagar <mvala079@gmail.com>
2025-09-14 03:00:12 -07:00
Marcus Alagar
40b4d0a40f Implement fast xn resampler and puppet
Implement fast 16-bit integer complex number xn resampler along
with its corresponding puppet. Essentially just runs the
fast resampler code in a for loop for each desired output.

Signed-off-by: Marcus Alagar <mvala079@gmail.com>
2025-09-14 03:00:11 -07:00
Marcus Alagar
edd24b6eab Implement fast resampler, puppet
Implement experiement fast resampler for 16-bit integer complex numbers,
which uses the extra prerequirement of phase never reaching more than
twice the length of `local_code` to sidestep all slow division steps
and instead use simple branching and addition/subtraction.

Signed-off-by: Marcus Alagar <mvala079@gmail.com>
2025-09-14 03:00:11 -07:00
Marcus Alagar
5bf77fc99b Fix unclear comment mistakes in xn resamplers
Signed-off-by: Marcus Alagar <mvala079@gmail.com>
2025-09-14 03:00:10 -07:00
Marcus Alagar
b2f838ca5a Optimize xn resamplers
Optimize and clarify that `inPtr` is not stripmined in xn resamplers
by moving the declaration of the pointer out of the loop. This
may or may not remove an additional store or give a hint to the compiler
to keep the pointer value handy. More importantly, it clarifies
that the input data in this resampler is specifically not being
stripmined through, instead being referenced as the offsets buffer
and output are being stripmined through.

Also experimentally optimize xn resampler by doing remainder
and conversion (to address offset) in vector calculations instead
of in for loop.

Finally optimize xn resampler functions, by moving the
wrapping of the index and its conversion to a raw
address offset is moved from a basic for loop to vector
computation.

Signed-off-by: Marcus Alagar <mvala079@gmail.com>
2025-09-14 03:00:10 -07:00
Marcus Alagar
08f93787c6 Make complex resampler tab style consistent
Signed-off-by: Marcus Alagar <mvala079@gmail.com>
2025-09-14 03:00:09 -07:00
Marcus Alagar
eaf2785673 Implement 32fc xn resampler, puppet
Implement 32-bit floating-point complex number resampler using
RVV intrinsics using the same trick that worked with 16-bit
integer complex numbers. Namely, interpreting the two
32-bit components of the complex numbers as a single
64-bit number for the purposes of moving around.

Signed-off-by: Marcus Alagar <mvala079@gmail.com>
2025-09-14 03:00:09 -07:00
Marcus Alagar
9aefe82cd8 Implement 16ic xn resampler, puppet
Implement 16-bit integer complex number resampler
using RVV intrinsics by interpreting each complex number
(with two 16-bit components) as a single 32-bit integer
for the purposes of moving them around.

Signed-off-by: Marcus Alagar <mvala079@gmail.com>
2025-09-14 03:00:09 -07:00
Marcus Alagar
54f609e1fa Implement 16i xn resampler, puppet
Implement 16-bit integer xn resampler with a slightly
modifded copy of 32f xn resampler logic, along with the
16i resamplerxnpupper to allow it to be tested.

Signed-off-by: Marcus Alagar <mvala079@gmail.com>
2025-09-14 03:00:08 -07:00
Marcus Alagar
4c32ee0fe6 Implement 32f xn resampler, puppet
Implement 32-bit floating-point xn resampler
utilizing RVV intrinsics. It essentially uses the generic
logic except for the actual transfer part. Instead, it
saves the indices to sample from in a temporary buffer
that it then uses in RVV to do a simple unordered
indexed load into a unit-stride store.

Signed-off-by: Marcus Alagar <mvala079@gmail.com>
2025-09-14 03:00:08 -07:00
Marcus Alagar
308f7f4aa0 Optimize 32fc to 8ic conversion
Optimize 32-bit floating-point complex number to 8-bit
integer complex number conversion using RVV by skipping
the need to segment load/store by simply converting the raw
numbers stored within the complex numbers.

Signed-off-by: Marcus Alagar <mvala079@gmail.com>
2025-09-14 03:00:07 -07:00
Marcus Alagar
71d4b045c9 Optimize 32fc to 16ic conversion
Optimize 32-bit floating-point complex numbers to 16-bit
integer complex number conversion using RVV intrinsics,
by not segment storing/loading and instead converting
the raw numbers.

Signed-off-by: Marcus Alagar <mvala079@gmail.com>
2025-09-14 03:00:07 -07:00
Marcus Alagar
f5999872f6 Optimize 16ic to 32fc conversion
Optimize conversion from 16-bit integer complex numbers to
32-bit floating-point complex numbers using RVV intrinsics
by skipping any need to distinguish between real and imaginary
numbers and instead just loading a contiguous selectiong
of components.

Timing results:
Old - generic: 39736.8 ms, rvv: 10406.7 ms
New - generic: 40479.9 ms, rvv: 8245.38 ms

Signed-off-by: Marcus Alagar <mvala079@gmail.com>
2025-09-14 03:00:06 -07:00
Marcus Alagar
1b265d55be Make other conversion consistent with generic implementation
Make 32-bit floating-point complex number to 8-bit integer
complex number conversion consistent with the generic
implementation. Specifically, made it so, after
being multiplied by `INT8_MAX`, but before narrowing,
saturate each number to 8 bits.

Signed-off-by: Marcus Alagar <mvala079@gmail.com>
2025-09-14 03:00:06 -07:00
Marcus Alagar
67c3c0f1ea Make conversion consistent with generic implementation
Make 32-bit floating point complex number to 16-bit integer
complex number conversion using RVV intrinsics consistent
with the generic implementation and documentation
by saturating the value within 16-bits before converting.

Signed-off-by: Marcus Alagar <mvala079@gmail.com>
2025-09-14 03:00:05 -07:00
Marcus Alagar
f07af19b7e Implement RVV 32fc to 8i conversion
Implement converting a vector of 32-bit floating point
complex numbers into a vector of 8-bit integer complex numbers
using RVV C intrinsics in `volk_gnsssdr_32fc_convert_8i_rvv`.

Required a lot of debugging, with attempts ranging from
saturation to not doing a narrowing conversion to using
the specification-recommended "round-to-odd" conversion.

In end, the problem was that the generic
implementation, with no notice in the function documentation
at all, actually multiplies the floating-point number by `INT8_MAX`
before converting.

Signed-off-by: Marcus Alagar <mvala079@gmail.com>
2025-09-14 03:00:05 -07:00
Marcus Alagar
bdddb5dd68 Implement RVV 32fc to 16i conversion
Since RVV 32fc to 8i is conversion is not working, try implementing
a smaller scale conversion of a vector of 32-bit floating-point
complex numbers to 16-bit integer complex numbers.

Signed-off-by: Marcus Alagar <mvala079@gmail.com>
2025-09-14 03:00:04 -07:00