From 68a8cc4942e735ff221ad80b3afbd4176af017a1 Mon Sep 17 00:00:00 2001 From: Jonas Rembser Date: Fri, 17 Jul 2026 17:28:05 +0200 Subject: [PATCH] [io] Deprecate TMPIFile and the `mpi` build option TMPIFile and its `mpi` build option are deprecated and scheduled for removal in the next release cycle. TMPIFile originated in the US DOE HEP-CCE program as a demonstrator for in-flight merging of ROOT output from MPI ranks in ATLAS event processing on DOE supercomputers (Theta at ALCF, Cori at NERSC): worker ranks send TMemFile buffers over MPI to collector ranks that merge them into a single output file (taken from this repo [1]). It was developed at ANL/LBNL from 2018 on, upstreamed in PR #4375 (December 2019), and presented at CHEP 2019 [2]. Development stopped weeks after the merge: the last functional commit to `io/mpi` dates from January 2020, the original hep-cce/TMPIFile repository is frozen, the workflow was never adopted in production, and the HPC systems the demonstrator targeted have since been decommissioned. Every io/mpi commit since 2020 has been a mechanical tree-wide cleanup. The package is disabled by default and has no owner in the ROOT team. Deprecating the package also frees up the too-generically named `mpi` CMake option, which gates only TMPIFile, its tutorial, and its roottest test. MPI support in Minuit2 is unaffected: it is controlled by the independent `minuit2_mpi` option, which finds MPI on its own. [1] https://github.com/hep-cce/TMPIFile [2] https://indico.cern.ch/event/773049/contributions/3473315/, proceedings: https://zenodo.org/records/3599673 --- README/ReleaseNotes/v642/index.md | 1 + cmake/modules/RootBuildOptions.cmake | 2 +- io/mpi/inc/TMPIFile.h | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/README/ReleaseNotes/v642/index.md b/README/ReleaseNotes/v642/index.md index 512aba2f3c274..501f47148853f 100644 --- a/README/ReleaseNotes/v642/index.md +++ b/README/ReleaseNotes/v642/index.md @@ -49,6 +49,7 @@ The following people have contributed to this new version: * Several enums that are redundant with `ROOT::ESTLType` are deprecated and will be removed in ROOT 6.44: `TClassEdit::ESTLType`, `TDictionary::ESTLType`, `TStreamerElement::ESTLType`. Please use `ROOT::ESTLType` instead. * The inclusion by external projects of Makefile templates contained within ROOT is deprecated in 6.42, a warning will be raised if you use them. These files will be removed in ROOT 7. * The conversion from Python set to **RooArgSet** is deprecated and won't work anymore in ROOT 6.44. The problem is that Python sets are unordered while RooArgSets are ordered, and this mismatch can lead to subtle problems later on. Prefer conversion from Python lists or tuples, which are ordered too. +* The **TMPIFile** class and the `mpi` build option (not to be confused with `minuit2_mpi`, which is unaffected) are deprecated and will be removed in ROOT 6.44. * The ROOT IO capability for the `TMVA::Experimental::SOFIE::RModel` has been removed. Users should not be encouraged to serialize models in experimental classes. For the serialization of ONNX models one can already use ONNX directly, and even serialize the ONNX bytes to a ROOT file if required. * The **JsMVA** feature for interactive TMVA training in Jupyter notebooks is now removed. It was not functional for years and was therefore already excluded from ROOT 6.38. This also removes the `TMVA::IPythonInteractive` class and the related interactive-training interfaces from the TMVA method and fitter classes, such as `MethodBase::ExitFromTraining()` or `FitterBase::SetIPythonInteractive()`. diff --git a/cmake/modules/RootBuildOptions.cmake b/cmake/modules/RootBuildOptions.cmake index 0ca0070f40da7..a2623222b3985 100644 --- a/cmake/modules/RootBuildOptions.cmake +++ b/cmake/modules/RootBuildOptions.cmake @@ -381,7 +381,7 @@ foreach(opt afdsmgrd afs alien bonjour builtin_afterimage builtin_davix castor c endforeach() #---Deprecated options------------------------------------------------------------------------ -foreach(opt r) +foreach(opt mpi r) if(${opt}) message(DEPRECATION ">>> Option '${opt}' is deprecated and will be removed in the next release of ROOT. Please contact root-dev@cern.ch should you still need it.") endif() diff --git a/io/mpi/inc/TMPIFile.h b/io/mpi/inc/TMPIFile.h index fcf68ff81006c..26e158e5ff937 100644 --- a/io/mpi/inc/TMPIFile.h +++ b/io/mpi/inc/TMPIFile.h @@ -123,5 +123,5 @@ class TMPIFile : public TMemFile { void Close(Option_t *option = "") final; ClassDefOverride(TMPIFile, 0) -}; +} R__DEPRECATED(6, 44, "TMPIFile is unmaintained. Write one file per process and merge with hadd/TFileMerger, or use ROOT::TBufferMerger instead."); #endif