Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Speculative: Move PRN to TrackingState #31

Merged
merged 2 commits into from
Nov 4, 2021
Merged

Conversation

zsoerenm
Copy link
Member

@zsoerenm zsoerenm commented Nov 3, 2021

This moves the PRN to the TrackingState struct.
The PRN was previously passed to the track function.
Reason: The track function should get parameters, that could change with each function call?! However, it doesn't make sense to change the PRN after consecutive function calls.
@dominformant what do you think? Unfortunately this is a breaking change. Do you think it is worth it?

@dominformant
Copy link
Contributor

dominformant commented Nov 4, 2021

I really like this change, as the properties of the tracking state belong to a specific PRN number and GNSS system, so this makes the tracking more consistent.

@coezmaden
Copy link
Contributor

I also support this change. What would be the approach for tracking multiple satellites (multiple PRNs)? Having an array of TrackingState objects and broadcasting track on it? Asking this for the GPU multi satellite kernel.

@zsoerenm zsoerenm merged commit 5c32278 into master Nov 4, 2021
@zsoerenm
Copy link
Member Author

zsoerenm commented Nov 4, 2021

What would be the approach for tracking multiple satellites (multiple PRNs)? Having an array of TrackingState objects and broadcasting track on it?

Exactly, or map over it.

coezmaden pushed a commit to coezmaden/Tracking.jl that referenced this pull request Nov 14, 2021
coezmaden pushed a commit to coezmaden/Tracking.jl that referenced this pull request Nov 14, 2021
zsoerenm pushed a commit that referenced this pull request Nov 17, 2021
* initial commit in the gpu branch

* GPU function blueprints for downcovert & car. rep.

* Gpu carrier generation draft

* downconvert loop blueprint

* Implement carrier replica gpu function

* Implement code replica and corr on GPU

* Delete unnecessary comments

* Reflect the development in readme

* Adjust Gain Controlled Signal for a GPU Signal

* Fix constructor, make use of vector operations

* Remove .vscode garbage, adjust global gitignore

* Change Float16 occurances to Float32 due to perf.

* Change GPU carrier_replica to StructArray, adjust the calculation method

* Complete the GPU downconvert function

* Add CUDA package dependency

* GPU correlation anc code replica blueprint

* Fix syntax

* Correlation using dot product on GPU

* Fix GPU correlate parameter types

* Add new dependencies

* Fix algorithm, use @views macro for performance

* Optimize carrier generation by taking fewer steps

* Union types for the carrier and code

* Gain control for the gpu signal implemented

* GPU code replica, GNSSSignals 28d32c4324e40a0b93391b06820deea98112a02d

* Add functions from ozmaden/GNSSBenchmarks.jl

* Reflect changes under GNSSSignals#feature/gpu

* Functioning GPU TrackingState

* account for CPU TrackingState

* Reflect GNSSSignals changes for tracking_loop

* Update README for the GPSL1 struct change

* Enforce AbstractArray

* AGC for CUDA signals

* functioning GPU tracking loop

* rectify start_sample

* Fix resize problems

* Stylistic change, variable names small letters

* Replace mutiple function calls with a variable

* Remove conditional use_gpu flag, as it's taken care of in GNSSSignals.jl

* cleanup residual errors

* Fix tracking_loop trunc inexact error

* Fix CPU tracking loop

* Implement GPU StructArray gen_carrier_replica!

* Implement GPU StructArray correlate

* Implement GPU StructArray downconvert!

* Allow for both CuArray and StructArray of CuArrays tracking loop

* Performance improvement for the CuArray correlator, implement dot product via Hadamard product for StructArray of CuArrays

* Performance improvements for the StructArray of CuArrays correlate, implement Hadamard correlate

* Performance improvement for the CuArray correlate

* Create match_size_to_signal! function that checks if resizing is needed beforehand

* Delete extra match_size_to_signal! definitions, fix dot products, implement matrix correlation

* Remove Loop Vectorization compat

* Reflect changes in JuliaGNSS:master

* GPU TrackingState, DownconvertedSignalGPU, CarrierReplicaGPU

* GPU tracking state initializes iff signal is known

* GPU Tracking State doesn't need code, insert the main kernel

* Fix phase error in kernel; kernel works for start:end signal; TrackingState code type Nothing for GPU

* Checks for type equality of system.codes and signal, signal structarray assertion

* GPU TrackingState testset

* GPU tracking results testset

* GPU tracking_loop testset, add CUDA to test name

* GPU bit detector testset

* GPU GPSL5 testset

* GPU GPSL1 testset

* GPU GalileoE1B testset

* GPU discriminators testset

* GPU CN0 estimation testset

* GPU BOC testset

* GPU bit buffer testset

* Fix phase calculation (multiples of 2pi)

* Add CUDA tests to runtests includes

* Allow scalar indexing for cn0_estimation test

* Allowscalar deprecation

* Solve scalar indexing in accumaltor results

* Fix GPU multi antenna tracking state

* Seperate functions for matrix and vector cases

* Allowscalar for tracking loop tests

* Remove CUDA broadcasting functions, clean comments

* Update readme with a `CUDA.jl` example

* Merge ozmaden/Tracking#14

* Adjust GPU functions according to the change #31

* Make CUDA test names consistent

* Add multiple antenna GPU test

* Fix examples according to #31

* Check for signal and codes type consistency

* Add Julia BuildKite CI for CUDA tests

* Remove leftovers

* Remove unnecessary structs

* Remove the unnecessary carrier vector

* Remove unused functions and duplicates

Co-authored-by: Soeren Schoenbrod <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants