Skip to content

[Backport to 17_0_X (#50691)] SoA Schema evolution#51316

Open
Electricks94 wants to merge 10 commits into
cms-sw:CMSSW_17_0_Xfrom
Electricks94:SoASerialisation_170X
Open

[Backport to 17_0_X (#50691)] SoA Schema evolution#51316
Electricks94 wants to merge 10 commits into
cms-sw:CMSSW_17_0_Xfrom
Electricks94:SoASerialisation_170X

Conversation

@Electricks94

Copy link
Copy Markdown
Contributor

PR description:

Extension of the custom streamer of the SoA Backend to encounter for the following cases:

  • Added columns/eigen columns/scalars are initialised to 0
  • Removed or rearranged columns are handle correctly by ROOT
  • columns with changed type (e.g. double to float) are handle by ROOTm this holds also for Eigen columns and scalars
  • Eigen columns with changed dimensions for example Eigen::Matrix<float, 4, 2> -> Eigen::Matrix<float, 3, 2>; result in a meaningfull error at reading
  • Columns with enum types are stored as integers in the SoA backend and only exposed as enums. Hence, the schema evolution behaves exactly like in the case of integers and also 8 byte large enums are supported which is not case with ROOT normally (see Add support for enums with non-default size root-project/root#17009)
  • Examples using ioread rules are provided to showcase how complex cases (e.g. using custom types for SoA columns) can be handled

PR validation:

A set of SoA Layouts is provided which evolve from a base SoA Layout. The base SoA Layout is stored multiple times using a different type alias which is then changed in the code to simulate an evolving class. The created ROOT files are then used to validate the reading of the previously stored Collections.

This PR is an extension of #50487

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:

This is a backport of #50691 to 17_0_X

@felicepantaleo fyi

@cmsbuild

cmsbuild commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

cms-bot internal usage

@cmsbuild

Copy link
Copy Markdown
Contributor

+code-checks

Logs: https://cmssdt.cern.ch/SDT/code-checks/cms-sw-PR-51316/49931

  • Found files with invalid states:
    • DataFormats/PortableTestObjects/test/SoAReader_cfg.py:
    • DataFormats/PortableTestObjects/plugins/SchemaEvolutionSoAProducer.cc:
    • DataFormats/PortableTestObjects/plugins/EvolutionTwoAnalyzer.cc:
    • DataFormats/PortableTestObjects/plugins/EvolutionFourAnalyzer.cc:
    • DataFormats/PortableTestObjects/plugins/EvolutionFiveAnalyzer.cc:
    • DataFormats/PortableTestObjects/test/SchemaEvolutionFiveReader.py:
    • DataFormats/PortableTestObjects/test/SchemaEvolutionZeroReader.py:
    • DataFormats/PortableTestObjects/test/SchemaEvolutionTwoReader.py:
    • DataFormats/PortableTestObjects/plugins/SchemaEvolutionAnalyzer.cc:
    • DataFormats/PortableTestObjects/test/SchemaEvolutionFourReader.py:
    • DataFormats/PortableTestObjects/plugins/EvolutionOneAnalyzer.cc:
    • DataFormats/PortableTestObjects/test/SchemaEvolutionThreeReader.py:
    • DataFormats/PortableTestObjects/plugins/EvolutionThreeAnalyzer.cc:
    • DataFormats/PortableTestObjects/plugins/SchemaEvolutionProducer.cc:
    • DataFormats/PortableTestObjects/interface/SchemaEvolutionSoA.h:
    • DataFormats/PortableTestObjects/plugins/EvolutionZeroAnalyzer.cc:
    • DataFormats/PortableTestObjects/test/SchemaEvolutionWriter.py:
    • DataFormats/PortableTestObjects/interface/SchemaEvolutionHostCollection.h:
    • DataFormats/PortableTestObjects/test/SoAWriter_cfg.py:
    • DataFormats/PortableTestObjects/test/TestSchemaEvolution.sh:
    • DataFormats/PortableTestObjects/test/SchemaEvolutionOneReader.py:

@cmsbuild

cmsbuild commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

A new Pull Request was created by @Electricks94 for CMSSW_17_0_X.

It involves the following packages:

  • DataFormats/Portable (heterogeneous)
  • DataFormats/SoATemplate (heterogeneous)
  • HeterogeneousCore/TestModules (****)

The following packages do not have a category, yet:

HeterogeneousCore/TestModules
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.
@ftenchini, @mandrenguyen, @sextonkennedy you are the release manager for this.

cms-bot commands are listed here

@fwyzard

fwyzard commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

type ngt

@fwyzard

fwyzard commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

backport #50691

@fwyzard

fwyzard commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

enable gpu

@fwyzard

fwyzard commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

please test

@fwyzard

fwyzard commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

+heterogeneous

@cmsbuild

Copy link
Copy Markdown
Contributor

-1

Failed Tests: RelVals-AMD_MI300X
Size: This PR adds an extra 16KB to repository
Summary: https://cmssdt.cern.ch/SDT/jenkins-artifacts/pull-request-integration/PR-3bc521/54272/summary.html
COMMIT: 23ae7c9
CMSSW: CMSSW_17_0_X_2026-06-25-1100/el8_amd64_gcc13
Additional Tests: GPU,AMD_MI300X,AMD_W7900,NVIDIA_H100,NVIDIA_L40S,NVIDIA_T4
User test area: For local testing, you can use /cvmfs/cms-ci.cern.ch/week1/cms-sw/cmssw/51316/54272/install.sh to create a dev area with all the needed externals and cmssw changes.

Failed RelVals-AMD_MI300X

  • 34634.40334634.403_TTbar_14TeV+Run4D121PU_Patatrack_PixelOnlyAlpaka_Validation/step2_TTbar_14TeV+Run4D121PU_Patatrack_PixelOnlyAlpaka_Validation.log
  • 34634.75134634.751_TTbar_14TeV+Run4D121PU_HLT75e33TimingAlpaka/step2_TTbar_14TeV+Run4D121PU_HLT75e33TimingAlpaka.log

Comparison Summary

Summary:

  • You potentially removed 1 lines from the logs
  • Reco comparison results: 4 differences found in the comparisons
  • DQMHistoTests: Total files compared: 54
  • DQMHistoTests: Total histograms compared: 4337615
  • DQMHistoTests: Total failures: 45
  • DQMHistoTests: Total nulls: 0
  • DQMHistoTests: Total successes: 4337550
  • DQMHistoTests: Total skipped: 20
  • DQMHistoTests: Total Missing objects: 0
  • DQMHistoSizes: Histogram memory added: 0.0 KiB( 53 files compared)
  • Checked 232 log files, 203 edm output root files, 54 DQM output files
  • TriggerResults: no differences found

AMD_W7900 Comparison Summary

Summary:

NVIDIA_H100 Comparison Summary

Summary:

NVIDIA_L40S Comparison Summary

Summary:

NVIDIA_T4 Comparison Summary

Summary:

Max Memory Comparisons exceeding threshold NVIDIA_T4

@cms-sw/core-l2 , I found 1 workflow step(s) with memory usage exceeding the error threshold:

Expand to see workflows ...
  • Error: Workflow 34634.712_TTbar_14TeV+Run4D121PU_lstOnGPUIters01TrackingOnly step3 max memory diff 76.3 exceeds +/- 30.0 MiB

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.

3 participants