Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Comments

Close side panel

Unmangling/caching of multiple links per RU#1840

Merged
sawenzel merged 6 commits intoAliceO2Group:devAliceO2Group/AliceO2:devfrom
shahor02:fix_alpDecshahor02/AliceO2:fix_alpDecCopy head branch name to clipboard
Apr 4, 2019
Merged

Unmangling/caching of multiple links per RU#1840
sawenzel merged 6 commits intoAliceO2Group:devAliceO2Group/AliceO2:devfrom
shahor02:fix_alpDecshahor02/AliceO2:fix_alpDecCopy head branch name to clipboard

Conversation

@shahor02
Copy link
Collaborator

Every GBT link is writing its data to a separate CRU superpage -> multiple triggers of the same link per superpage. When multiple links are dumped into the same file, the trigger data is not contiguous.
Here we are caching data of each link in a separate buffer, so that decoding can run over the same trigger of different links.
The signature of getRUDecodingStatSW, getRUDecodingStatHW methods has changed, not instead of the reference, they return pointers on relevant RUDecodingStat (will be 0 if RU was not seen in the data).

@shahor02 shahor02 force-pushed the fix_alpDec branch 2 times, most recently from db65892 to 43afedd Compare April 1, 2019 08:47
Copy link
Collaborator

@iouribelikov iouribelikov left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@shahor02 Just another question. How many triggers do we actually cache ? One, or all in a rawdata chunk ?

rdhNew->heartbeatOrbit != rdhOld->heartbeatOrbit ||
rdhNew->heartbeatBC != rdhOld->heartbeatBC ||
rdhNew->triggerType != rdhOld->triggerType) {
!(rdhNew->triggerType & rdhOld->triggerType)) {
Copy link
Collaborator

@iouribelikov iouribelikov Apr 4, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@shahor02 Sorry, I am afraid I put this question at a wrong place. So I repeat it here: What if the "new trigger" and "old trigger" differ by just one bit. Naively, this should mean that these two triggers are still different. This was the case with the previous logics. But the new logics would consider such triggers as identical. Is it indeed OK ?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @iouribelikov , the trigger is actually composed from different trigger bits, e.g. the HB trigger flag may coincide with the physical trigger flag PhT. Right now I am not sure when the they will decouple: in the extra pages (RDH's) of the same physical trigger or at the next one, so I did it in the way that if they decouple after the 1st page, it is not interpreted as a new trigger. I assume once we understand all trigger states more complex check will be needed. Right not this check (especially in its old form) is not particularly useful since the read change of the trigger would necessarily change also the orbit/BC

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you, @shahor02, for the clarification ! OK. Let's stay like that until the situation becomes more clear.

@iouribelikov
Copy link
Collaborator

@shahor02 @sawenzel Not sure if I could check anything else for this PR. Let's merge it. Thank you !

@sawenzel sawenzel merged commit 5d1e0cd into AliceO2Group:dev Apr 4, 2019
@shahor02
Copy link
Collaborator Author

shahor02 commented Apr 4, 2019

For the record, posting here answer to Yura's question:

What I cache in the reader are the raw data pages corresponding to some number of triggers for each link and this is a forced measure which I would prefer to avoid, since it involves extra copying. The problem is that a priori I don't know how many links are used for every RU but I know that (i) each link writes to its own superpage, (ii) there could be at most 256 pages in the superpage, (iii) single trigger of single link contains at most 1 trigger and (iv) the raw date file is made by dumping sequentially the superpages for every link of the same trigger, then the same for the next trigger etc.

So, if I keep reading until I will see at least N>256 triggers for the link with smallest number of pages, I am guaranteed to see all the links of all RUs of at least these N triggers.

The N triggers to cache is set via setMinTriggersToCache(n) methods, by default I read 260 triggers, if requested N is < 257, it is automatically set to 257.
The upper limit is defined by the available memory only.

@shahor02 shahor02 deleted the fix_alpDec branch June 1, 2020 21:31
EmilGorm pushed a commit to EmilGorm/AliceO2 that referenced this pull request Apr 15, 2023
* DPG: update PID qa

- Remove integrated charge if split is required
- Add TOF map
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

Morty Proxy This is a proxified and sanitized view of the page, visit original site.