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

Refactoring and speeding-up of the XML parser for the L1T O2O #17059

Merged
merged 16 commits into from Feb 8, 2017

Conversation

kkotov
Copy link
Contributor

@kkotov kkotov commented Dec 16, 2016

The original XML parser developed by Thomas and Vangelis did a good job for the rapidly developing L1T O2O in Run II 2016. Now I've revisited some of it's design, simplified the interface, and as the result took advantage of the c++11 move semantics. In a nutshell, I replace the std::vector<l1t::TableRow> table-structure with a simpler std::map of column_name -> vector_of_values. While l1t::TableRow and l1t::Setting both lack a move constructors and abuse copy semantics every time a new l1t::Setting is added to the l1t::TrigSystem::procSettings_ array, the new table representation burns no extra cycles when r-value l1t::Parameter is added to the l1t::TriggerSystem::procParameters array. This change combined together with further optimization in l1t::TriggerSystem class provides a substantial (up to x5) speed increase, easily noticeable when parsing uGTrs configuration.

The original code still lives side by side with the new one in L1Trigger/L1TCommon. The O2O online producers in L1TriggerConfig/L1TConfigProducers as well as uGMT and BMTF helper classes in L1Trigger/{L1TMuon,L1TMuonBarrel} were modified to use the new parser. The code was tested by re-running L1TO2O on one of the 2016 keys and observing agreement in payload hash codes

@cmsbuild
Copy link
Contributor

A new Pull Request was created by @kkotov (Khristian Kotov) for CMSSW_9_0_X.

It involves the following packages:

L1Trigger/L1TCommon
L1Trigger/L1TMuon
L1Trigger/L1TMuonBarrel
L1TriggerConfig/L1TConfigProducers
L1TriggerConfig/XmlConfigTools

The following packages do not have a category, yet:

L1TriggerConfig/XmlConfigTools
Please create a PR for https://github.com/cms-sw/cms-bot/blob/master/categories.py to assign category

@cmsbuild, @rekovic, @mulhearn, @davidlange6 can you please review it and eventually sign? Thanks.
@Martin-Grunewald, @kreczko this is something you requested to watch as well.
@slava77, @smuzaffar you are the release manager for this.

cms-bot commands are listed here #13028

@lgray
Copy link
Contributor

lgray commented Jan 4, 2017

@cmsbuild please test

@kkotov You need to make a pull request in cms-bot to add the new package.

@cmsbuild
Copy link
Contributor

cmsbuild commented Jan 4, 2017

The tests are being triggered in jenkins.
https://cmssdt.cern.ch/jenkins/job/ib-any-integration/17178/console Started: 2017/01/04 19:33

@cmsbuild
Copy link
Contributor

cmsbuild commented Jan 4, 2017

@cmsbuild
Copy link
Contributor

cmsbuild commented Jan 4, 2017

Comparison job queued.

@cmsbuild
Copy link
Contributor

cmsbuild commented Jan 4, 2017

@kkotov
Copy link
Contributor Author

kkotov commented Jan 5, 2017

@lgray , could you point me to any instructions on how to add new packages using cms-bot? Thanks!

@lgray
Copy link
Contributor

lgray commented Jan 5, 2017

@kkotov You need to clone https://github.com/cms-sw/cms-bot/ and then edit https://github.com/cms-sw/cms-bot/blob/master/categories.py and make a pull request.

@kkotov
Copy link
Contributor Author

kkotov commented Jan 5, 2017

@lgray Thanks for the hint! I've just made a new PR: cms-sw/cms-bot#799 . A theoretical question aside: am I also allowed to introduce new categories? For example, I've added my new package L1TriggerConfig/XmlConfigTools under l1 meaning that l1 managers (Mike or Vladimir) will have to sign off every time I modify my package. On the other hand, if I introduce my own l1o2o category with the packages that are not used anywhere but in L1T O2O, I'd be a natural person to have full control over this code.

@lgray
Copy link
Contributor

lgray commented Jan 5, 2017 via email

@slava77
Copy link
Contributor

slava77 commented Jan 5, 2017 via email

@rekovic
Copy link
Contributor

rekovic commented Jan 17, 2017

as discussed with @kkotov, needs moving code around and putting new modules in the existing L1Trigger/L1TCommon package.

@davidlange6
Copy link
Contributor

As for categories - of course the idea is for actual code review before it gets into the release for general use - so having developers "review" their own code makes little sense..

@kkotov
Copy link
Contributor Author

kkotov commented Feb 6, 2017

The error above must be due to a problem with RelVal accessibility. But the logs seem to be incomplete.

@rekovic
Copy link
Contributor

rekovic commented Feb 7, 2017

please test

@cmsbuild
Copy link
Contributor

cmsbuild commented Feb 7, 2017

The tests are being triggered in jenkins.
https://cmssdt.cern.ch/jenkins/job/ib-any-integration/17659/console Started: 2017/02/07 11:19

@cmsbuild
Copy link
Contributor

cmsbuild commented Feb 7, 2017

@cmsbuild
Copy link
Contributor

cmsbuild commented Feb 7, 2017

Comparison job queued.

@cmsbuild
Copy link
Contributor

cmsbuild commented Feb 7, 2017

@rekovic
Copy link
Contributor

rekovic commented Feb 7, 2017

+1

@cmsbuild
Copy link
Contributor

cmsbuild commented Feb 7, 2017

This pull request is fully signed and it will be integrated in one of the next CMSSW_9_0_X IBs (tests are also fine). This pull request requires discussion in the ORP meeting before it's merged. @davidlange6, @smuzaffar

@davidlange6
Copy link
Contributor

+1

@cmsbuild cmsbuild merged commit c262efe into cms-sw:CMSSW_9_0_X Feb 8, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

8 participants