Skip to content

SoA Schema evolution - #50691

Merged
cmsbuild merged 10 commits into
cms-sw:masterfrom
Electricks94:SoASerialisation
Aug 14, 2026
Merged

SoA Schema evolution#50691
cmsbuild merged 10 commits into
cms-sw:masterfrom
Electricks94:SoASerialisation

Conversation

@Electricks94

@Electricks94 Electricks94 commented Apr 8, 2026

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

@felicepantaleo fyi

@Electricks94

Copy link
Copy Markdown
Contributor Author

type ngt

@cmsbuild

cmsbuild commented Apr 8, 2026

Copy link
Copy Markdown
Contributor

cms-bot internal usage

@Electricks94
Electricks94 marked this pull request as draft April 8, 2026 14:15
@cmsbuild

cmsbuild commented Apr 8, 2026

Copy link
Copy Markdown
Contributor

-code-checks

Logs: https://cmssdt.cern.ch/SDT/code-checks/cms-sw-PR-50691/48929

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

@cmsbuild

cmsbuild commented Apr 9, 2026

Copy link
Copy Markdown
Contributor

+code-checks

Logs: https://cmssdt.cern.ch/SDT/code-checks/cms-sw-PR-50691/48940

@cmsbuild

cmsbuild commented Apr 9, 2026

Copy link
Copy Markdown
Contributor

Pull request #50691 was updated.

@cmsbuild

cmsbuild commented May 4, 2026

Copy link
Copy Markdown
Contributor

+code-checks

Logs: https://cmssdt.cern.ch/SDT/code-checks/cms-sw-PR-50691/49225

@cmsbuild

cmsbuild commented May 4, 2026

Copy link
Copy Markdown
Contributor

Pull request #50691 was updated.

@cmsbuild

Copy link
Copy Markdown
Contributor

+code-checks

Logs: https://cmssdt.cern.ch/SDT/code-checks/cms-sw-PR-50691/49918

@fwyzard

fwyzard commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

please test

@cmsbuild

Copy link
Copy Markdown
Contributor

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

@Electricks94

Copy link
Copy Markdown
Contributor Author

I see now PrologueTest and PrologueTest_multiblock failing in the unit tests but these tests also seem to fail in the master branch without the changes proposed here. Is this a known problem?

@cmsbuild

Copy link
Copy Markdown
Contributor

-1

Failed Tests: RelVals-AMD_W7900 amd_mi300xUnitTests amd_w7900UnitTests
Size: This PR adds an extra 128KB to repository
Summary: https://cmssdt.cern.ch/SDT/jenkins-artifacts/pull-request-integration/PR-0cee1e/54249/summary.html
COMMIT: 49d05a0
CMSSW: CMSSW_20_1_X_2026-06-23-2300/el9_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/50691/54249/install.sh to create a dev area with all the needed externals and cmssw changes.

Failed RelVals-AMD_W7900

  • 34434.40434434.404_TTbar_14TeV+Run4D121_Patatrack_PixelOnlyAlpaka_Profiling/step2_TTbar_14TeV+Run4D121_Patatrack_PixelOnlyAlpaka_Profiling.log

Comparison Summary

Summary:

  • No significant changes to the logs found
  • Reco comparison results: 0 differences found in the comparisons
  • DQMHistoTests: Total files compared: 45
  • DQMHistoTests: Total histograms compared: 3414477
  • DQMHistoTests: Total failures: 0
  • DQMHistoTests: Total nulls: 0
  • DQMHistoTests: Total successes: 3414459
  • DQMHistoTests: Total skipped: 18
  • DQMHistoTests: Total Missing objects: 0
  • DQMHistoSizes: Histogram memory added: 0.0 KiB( 44 files compared)
  • Checked 195 log files, 163 edm output root files, 45 DQM output files
  • TriggerResults: no differences found

NVIDIA_H100 Comparison Summary

Summary:

  • No significant changes to the logs found
  • Reco comparison results: 83 differences found in the comparisons
  • DQMHistoTests: Total files compared: 7
  • DQMHistoTests: Total histograms compared: 167007
  • DQMHistoTests: Total failures: 11825
  • DQMHistoTests: Total nulls: 0
  • DQMHistoTests: Total successes: 155182
  • DQMHistoTests: Total skipped: 0
  • DQMHistoTests: Total Missing objects: 0
  • DQMHistoSizes: Histogram memory added: 0.0 KiB( 6 files compared)
  • Checked 25 log files, 20 edm output root files, 7 DQM output files
  • TriggerResults: found differences in 3 / 6 workflows

NVIDIA_L40S Comparison Summary

Summary:

  • No significant changes to the logs found
  • Reco comparison results: 64 differences found in the comparisons
  • DQMHistoTests: Total files compared: 7
  • DQMHistoTests: Total histograms compared: 167007
  • DQMHistoTests: Total failures: 10378
  • DQMHistoTests: Total nulls: 0
  • DQMHistoTests: Total successes: 156629
  • DQMHistoTests: Total skipped: 0
  • DQMHistoTests: Total Missing objects: 0
  • DQMHistoSizes: Histogram memory added: 0.0 KiB( 6 files compared)
  • Checked 25 log files, 20 edm output root files, 7 DQM output files
  • TriggerResults: found differences in 4 / 6 workflows

NVIDIA_T4 Comparison Summary

Summary:

  • No significant changes to the logs found
  • Reco comparison results: 95 differences found in the comparisons
  • DQMHistoTests: Total files compared: 7
  • DQMHistoTests: Total histograms compared: 167007
  • DQMHistoTests: Total failures: 17493
  • DQMHistoTests: Total nulls: 0
  • DQMHistoTests: Total successes: 149514
  • DQMHistoTests: Total skipped: 0
  • DQMHistoTests: Total Missing objects: 0
  • DQMHistoSizes: Histogram memory added: 0.0 KiB( 6 files compared)
  • Checked 25 log files, 20 edm output root files, 7 DQM output files
  • TriggerResults: found differences in 3 / 6 workflows

@fwyzard

fwyzard commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

I see now PrologueTest and PrologueTest_multiblock failing in the unit tests but these tests also seem to fail in the master branch without the changes proposed here. Is this a known problem?

Yes, they should be fixed by #51201.

@fwyzard

fwyzard commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

please test with #51201

@cmsbuild

Copy link
Copy Markdown
Contributor

+1

Size: This PR adds an extra 16KB to repository
Summary: https://cmssdt.cern.ch/SDT/jenkins-artifacts/pull-request-integration/PR-0cee1e/54252/summary.html
COMMIT: 49d05a0
CMSSW: CMSSW_20_1_X_2026-06-24-1100/el9_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/50691/54252/install.sh to create a dev area with all the needed externals and cmssw changes.

Comparison Summary

Summary:

  • No significant changes to the logs found
  • Reco comparison results: 0 differences found in the comparisons
  • DQMHistoTests: Total files compared: 45
  • DQMHistoTests: Total histograms compared: 3414477
  • DQMHistoTests: Total failures: 0
  • DQMHistoTests: Total nulls: 0
  • DQMHistoTests: Total successes: 3414459
  • DQMHistoTests: Total skipped: 18
  • DQMHistoTests: Total Missing objects: 0
  • DQMHistoSizes: Histogram memory added: 0.0 KiB( 44 files compared)
  • Checked 195 log files, 163 edm output root files, 45 DQM output files
  • TriggerResults: no differences found

AMD_MI300X Comparison Summary

Summary:

  • No significant changes to the logs found
  • Reco comparison results: 58 differences found in the comparisons
  • DQMHistoTests: Total files compared: 7
  • DQMHistoTests: Total histograms compared: 167007
  • DQMHistoTests: Total failures: 12867
  • DQMHistoTests: Total nulls: 0
  • DQMHistoTests: Total successes: 154140
  • DQMHistoTests: Total skipped: 0
  • DQMHistoTests: Total Missing objects: 0
  • DQMHistoSizes: Histogram memory added: 0.0 KiB( 6 files compared)
  • Checked 25 log files, 20 edm output root files, 7 DQM output files
  • TriggerResults: found differences in 3 / 6 workflows

AMD_W7900 Comparison Summary

Summary:

  • No significant changes to the logs found
  • Reco comparison results: 67 differences found in the comparisons
  • DQMHistoTests: Total files compared: 7
  • DQMHistoTests: Total histograms compared: 167007
  • DQMHistoTests: Total failures: 12830
  • DQMHistoTests: Total nulls: 0
  • DQMHistoTests: Total successes: 154177
  • DQMHistoTests: Total skipped: 0
  • DQMHistoTests: Total Missing objects: 0
  • DQMHistoSizes: Histogram memory added: 0.0 KiB( 6 files compared)
  • Checked 25 log files, 20 edm output root files, 7 DQM output files
  • TriggerResults: found differences in 3 / 6 workflows

NVIDIA_H100 Comparison Summary

Summary:

  • No significant changes to the logs found
  • Reco comparison results: 76 differences found in the comparisons
  • DQMHistoTests: Total files compared: 7
  • DQMHistoTests: Total histograms compared: 167007
  • DQMHistoTests: Total failures: 13801
  • DQMHistoTests: Total nulls: 0
  • DQMHistoTests: Total successes: 153206
  • DQMHistoTests: Total skipped: 0
  • DQMHistoTests: Total Missing objects: 0
  • DQMHistoSizes: Histogram memory added: 0.0 KiB( 6 files compared)
  • Checked 25 log files, 20 edm output root files, 7 DQM output files
  • TriggerResults: found differences in 3 / 6 workflows

NVIDIA_L40S Comparison Summary

Summary:

  • No significant changes to the logs found
  • Reco comparison results: 52 differences found in the comparisons
  • DQMHistoTests: Total files compared: 7
  • DQMHistoTests: Total histograms compared: 167007
  • DQMHistoTests: Total failures: 12079
  • DQMHistoTests: Total nulls: 0
  • DQMHistoTests: Total successes: 154928
  • DQMHistoTests: Total skipped: 0
  • DQMHistoTests: Total Missing objects: 0
  • DQMHistoSizes: Histogram memory added: 0.0 KiB( 6 files compared)
  • Checked 25 log files, 20 edm output root files, 7 DQM output files
  • TriggerResults: found differences in 3 / 6 workflows

NVIDIA_T4 Comparison Summary

Summary:

  • No significant changes to the logs found
  • Reco comparison results: 56 differences found in the comparisons
  • DQMHistoTests: Total files compared: 7
  • DQMHistoTests: Total histograms compared: 167007
  • DQMHistoTests: Total failures: 12868
  • DQMHistoTests: Total nulls: 0
  • DQMHistoTests: Total successes: 154139
  • DQMHistoTests: Total skipped: 0
  • DQMHistoTests: Total Missing objects: 0
  • DQMHistoSizes: Histogram memory added: 0.0 KiB( 6 files compared)
  • Checked 25 log files, 20 edm output root files, 7 DQM output files
  • TriggerResults: found differences in 2 / 6 workflows

@fwyzard

fwyzard commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

+heterogeneous

@fwyzard

fwyzard commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

The new package is added by cms-sw/cms-bot#2798 .

@fwyzard

fwyzard commented Jun 26, 2026

Copy link
Copy Markdown
Contributor

@smuzaffar can you merge cms-sw/cms-bot#2798 to make the new package known ?

@Electricks94

Copy link
Copy Markdown
Contributor Author

Friendly reminder: I think this PR got forgotten.

@cmsbuild

Copy link
Copy Markdown
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. @mandrenguyen, @sextonkennedy, @ftenchini (and backports should be raised in the release meeting by the corresponding L2)

@mandrenguyen

Copy link
Copy Markdown
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.

5 participants