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

Unsynchronised passing of weight-vector/ taps from postdistorter to predistorter #8

Open
alekhgupta1441 opened this issue Jul 16, 2020 · 2 comments
Labels
bug Something isn't working help wanted Extra attention is needed

Comments

@alekhgupta1441
Copy link
Collaborator

alekhgupta1441 commented Jul 16, 2020

Currently, gr-dpd uses message parsing for passsing the trained 'taps' from postdistorter to predistorter after each iteration but as message parsing is highly asynchronous and has no alignment with stream data, it is causing it to reach the predistorter after huge time gap and not simultaneously along the immediate next stream data as expected. To avoid this taps can be passed on as stream data as well BUT GNU Radio flowgraphs donot support loops in flowgraphs so this cannot be done for now.

So, now this is a serious issue to find a way to perform learning in a synchronous manner keeping in view the fact that loops are not allowed in GNU Radio and message parsing can form loops but is totally asynchronous process irrespective of stream flow.

Below is the flowgraph which clearly shows the stream flow and loop which is forming involving message 'taps'.

Screenshot

Any kind of suggestions regarding this issue will be highly appreciated.

@alekhgupta1441 alekhgupta1441 added bug Something isn't working help wanted Extra attention is needed labels Jul 16, 2020
@alekhgupta1441
Copy link
Collaborator Author

A potential cause of Issue #6

@alekhgupta1441
Copy link
Collaborator Author

alekhgupta1441 commented Aug 28, 2020

At this stage when GSoC has almost came to an end, after discussions with some mentors and some other experienced people I came up with commit@afdb98a that has helped to achieve some sort of synchronisation by using a 'flag' output and input port in predistorter and postdistorter respectively, to keep track of whether 'taps' have been updated in predistorter or not and accordingly perform weights estimation. But since message passing is an uncertain and unreliable process w.r.t. time the performance improvements these changes bring are uncertain too.

                          Screenshot of RLS postdistorter test run for an Input data file

RLS_3

Although above result looks decent to a little extent, there is catch here that this result is achieved for PA model parameters (1, 1, 2, 2, 2) and using DPD parameters (3, 3, 1, 1, 1). So this has been achieved by just experimenting with model parameter values. While ideally for same model parameters there should be decent or desirable predistortion effect. So, synchronisation of passing 'taps' with stream or a possibly quite different approach to achieve synchronised estimation and predistortion is required.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

1 participant