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

[MkFit] Use binnor for seed and hit sorting, remove Ice/ #37586

Merged
merged 14 commits into from
Apr 27, 2022

Conversation

osschar
Copy link
Contributor

@osschar osschar commented Apr 15, 2022

Changes

  • Add radix-sort option in binnor.
  • While importing seeds use binnor for sorting or rely on previous sorting done during seed cleaning.
  • Split track-related classes out of HitStructures.h/cc into a new TrackStructures.h/cc file-set.
  • Use binnor with radix_sort in LayerOfHits.
  • Use single std::vector for storing dead-bin information.
  • Remove MkFitCore/src/Ice/ directory, remove -Wno-error=strict-aliasing from
    RecoTracker/MkFitCore/BuildFile.xml.
  • Improve std-vs-radix sort heuristic, cleanup binnor_demo.cxx (use same axis parameters as in LayerOfHits; perform timing-loop multiple times).

Validation

MTV plots http://uaf-10.t2.ucsd.edu/~mmasciov/MIC/IceOut/MTV_mkFit_TTbarPU_from1240pre2_cmssw1240pre2_IceOut/

Efficiencies remain unchanged. There are minor fluctuations in fake/duplicate rates induced by more precise sorting of hits in phi and potentially also from additional sorting of incoming seeds in phi (they were only sorted in eta before). There are additional hit-on-track processing changes expected in treatment of dead-regions, large clusters, and through usage of the additional per-module information that is now available -- following all these selection windows will be retuned to achieve optimal performance.

Related issues

@cmsbuild
Copy link
Contributor

-code-checks

Logs: https://cmssdt.cern.ch/SDT/code-checks/cms-sw-PR-37586/29339

Code check has found code style and quality issues which could be resolved by applying following patch(s)

@cmsbuild
Copy link
Contributor

+code-checks

Logs: https://cmssdt.cern.ch/SDT/code-checks/cms-sw-PR-37586/29340

@cmsbuild
Copy link
Contributor

A new Pull Request was created by @osschar (Matevž Tadel) for master.

It involves the following packages:

  • RecoTracker/MkFit (reconstruction)
  • RecoTracker/MkFitCMS (reconstruction)
  • RecoTracker/MkFitCore (reconstruction)

@jpata, @cmsbuild, @clacaputo, @slava77 can you please review it and eventually sign? Thanks.
@makortel, @felicepantaleo, @GiacomoSguazzoni, @JanFSchulte, @rovere, @VinInn, @ebrondol, @gpetruc, @mmusich, @mtosi, @dgulhan this is something you requested to watch as well.
@perrotta, @dpiparo, @qliphy you are the release manager for this.

cms-bot commands are listed here

@slava77
Copy link
Contributor

slava77 commented Apr 25, 2022

@cms-sw/tracking-pog-l2 @mmusich @cms-sw/reconstruction-l2
please clarify on the plans for your review of this PR.
Please expedite if possible.
We have more PRs in mkFIt that would depend on this merged.
Thank you.

@mmusich
Copy link
Contributor

mmusich commented Apr 26, 2022

+1

@jpata
Copy link
Contributor

jpata commented Apr 26, 2022

+reconstruction

  • improved hit sorting and code reorganization
  • minor changes to tracks and everything downstream (per the usual reco language, not a technical PR)

@cmsbuild
Copy link
Contributor

This pull request is fully signed and it will be integrated in one of the next master IBs (tests are also fine). This pull request will now be reviewed by the release team before it's merged. @perrotta, @dpiparo, @qliphy (and backports should be raised in the release meeting by the corresponding L2)

@perrotta
Copy link
Contributor

Is there any evaluation of the effect on timing? Modifying sorting I'd expect can have some...

@slava77
Copy link
Contributor

slava77 commented Apr 26, 2022

test parameters:

  • workflow_profiling = 11834.21
  • enable_test = profiling

@slava77
Copy link
Contributor

slava77 commented Apr 26, 2022

@cmsbuild please test

@slava77
Copy link
Contributor

slava77 commented Apr 26, 2022

@smuzaffar
is there a way to run only a profiling test (after the build), skip the relvals and unit tests?

@smuzaffar
Copy link
Contributor

@slava77 , no sorry currently there is no way to do this.

@osschar
Copy link
Contributor Author

osschar commented Apr 26, 2022

Is there any evaluation of the effect on timing? Modifying sorting I'd expect can have some...

I actually ported radix sort of integers into binnor so I don't expect significant changes (if any, I guess they will be in the noise). But yes, makes sense to check :)

@cmsbuild
Copy link
Contributor

+1

Summary: https://cmssdt.cern.ch/SDT/jenkins-artifacts/pull-request-integration/PR-3a9357/24228/summary.html
COMMIT: 6976fc2
CMSSW: CMSSW_12_4_X_2022-04-26-1100/slc7_amd64_gcc10
Additional Tests: PROFILING
User test area: For local testing, you can use /cvmfs/cms-ci.cern.ch/week0/cms-sw/cmssw/37586/24228/install.sh to create a dev area with all the needed externals and cmssw changes.

Comparison Summary

@slava77 comparisons for the following workflows were not done due to missing matrix map:

  • /data/cmsbld/jenkins/workspace/compare-root-files-short-matrix/data/PR-3a9357/39434.75_TTbar_14TeV+2026D88_HLT75e33+TTbar_14TeV_TuneCP5_GenSimHLBeamSpot14+DigiTrigger+RecoGlobal+HLT75e33+HARVESTGlobal

Summary:

  • No significant changes to the logs found
  • Reco comparison results: 11290 differences found in the comparisons
  • DQMHistoTests: Total files compared: 49
  • DQMHistoTests: Total histograms compared: 3695434
  • DQMHistoTests: Total failures: 9791
  • DQMHistoTests: Total nulls: 1
  • DQMHistoTests: Total successes: 3685620
  • DQMHistoTests: Total skipped: 22
  • DQMHistoTests: Total Missing objects: 0
  • DQMHistoSizes: Histogram memory added: -0.004 KiB( 48 files compared)
  • DQMHistoSizes: changed ( 312.0 ): -0.004 KiB MessageLogger/Warnings
  • Checked 205 log files, 45 edm output root files, 49 DQM output files
  • TriggerResults: no differences found

@slava77
Copy link
Contributor

slava77 commented Apr 26, 2022

Additional Tests: PROFILING

  • MkFitProducer igprof from 24.34 to 24.74
    • essentially all of it is in mkfit::run_OneIteration from 24.09 to 24.57 . Most of the difference seems accidental though, either from timing reproducibility or from a change in order of some objects.
      • find_tracks_load_seeds is the affected function call, its cost goes down 1.67 to 1.56
  • MkFitEventOfHitsProducer from 0.51 to 0.61
    • mkfit::LayerOfHits::endRegistrationOfHits from 0.09 to 0.15 this is probably the clearest measure (not mixed with other calls)
  • overall, there seems to be up to 0.5 (0.1% of the job cost) increase in cost, but the more likely value is closer to 0.1 (0.02%) based on the analysis of related contributions.

@perrotta
Copy link
Contributor

+1

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.

7 participants