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

HLT GPU tutorial #47607

Open
wants to merge 4 commits into
base: master
Choose a base branch
from
Open

HLT GPU tutorial #47607

wants to merge 4 commits into from

Conversation

fwyzard
Copy link
Contributor

@fwyzard fwyzard commented Mar 17, 2025

PR description:

Implement a tutorial for using GPUs in CMSSW.

The outline is:

  • take a collection of PF jets
  • convert to SoA format
  • [automatically] copy to device
  • read jet corrections from the EventSetup
  • apply the corrections based on pT and |eta|
  • produce a SoA with corrected jets
  • apply some cuts based on pT and |eta|
  • compute the invariant mass of all combinations of 2 or 3 jets
  • select all combinations with invariant mass in a given range
  • fill a SoA with all combinations of (j1, j2, n/a) or (j1, j2, j3)
  • [automatically] copy to host
  • print the combinations of PF jets

This PR includes the bug fixes from #47605.

PR validation:

The tutorial runs successfully on top of CMSSW_15_0_0.

If this PR is a backport please specify the original PR and why you need to backport that PR. If this PR will be backported please specify to which release cycle the backport is meant for:

To be backported to 15.0.x to help with HLT developments.

@cmsbuild
Copy link
Contributor

cmsbuild commented Mar 17, 2025

cms-bot internal usage

@cmsbuild
Copy link
Contributor

+code-checks

Logs: https://cmssdt.cern.ch/SDT/code-checks/cms-sw-PR-47607/44116

@cmsbuild
Copy link
Contributor

A new Pull Request was created by @fwyzard for master.

It involves the following packages:

  • DataFormats/HeterogeneousTutorial (****)
  • DataFormats/SoATemplate (heterogeneous)
  • HeterogeneousCore/AlpakaCore (heterogeneous)
  • HeterogeneousCore/AlpakaInterface (heterogeneous)
  • HeterogeneousCore/Tutorial (****)

The following packages do not have a category, yet:

DataFormats/HeterogeneousTutorial
HeterogeneousCore/Tutorial
Please create a PR for https://github.com/cms-sw/cms-bot/blob/master/categories_map.py to assign category

@cmsbuild, @fwyzard, @makortel can you please review it and eventually sign? Thanks.
@makortel, @missirol, @mmusich, @rovere this is something you requested to watch as well.
@antoniovilela, @mandrenguyen, @rappoccio, @sextonkennedy you are the release manager for this.

cms-bot commands are listed here

It contains various modules and data structres:

an EDProducer to convert PFJets to a simplified SoA format
  - a heterogeneous global::EDProducer running on CPU
  - SoA data structures
  - automatic data transfers from host to device

an EDProducer to apply residual jet corrections on GPU
  - an asynchronous global::EDProducer running on GPU
  - a simple 1D kernel

an ESProducer for the jet corrections
  - a new EventSetup record
  - new “portable” data structures and EventSetup conditions
  - a heterogeneous ESProducer

an EDProducer to find all jet pairs and triplets passing some selection criteria
  - a stream::SynchronizingEDProducer
  - new persistent and local SoA data structures
  - automatic copy of a configuration object to the GPUs
  - more complex 2D and 3D kernels

an EDAnalyzer to print the N-tuplets
  - a traditional edm::EDAnalyzer running on CPU
  - automatic data transfers from device to host

It also contains a configuration file to run the full job on GPUs or on CPU.

Note: these packages are distributed under the GNU GPL v3 license.
@cmsbuild
Copy link
Contributor

+code-checks

Logs: https://cmssdt.cern.ch/SDT/code-checks/cms-sw-PR-47607/44126

@cmsbuild
Copy link
Contributor

Pull request #47607 was updated. @cmsbuild, @fwyzard, @makortel can you please check and sign again.

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.

2 participants