diff --git a/PWGDQ/Core/CMakeLists.txt b/PWGDQ/Core/CMakeLists.txt index b8b50c71f30..265d1c76be2 100644 --- a/PWGDQ/Core/CMakeLists.txt +++ b/PWGDQ/Core/CMakeLists.txt @@ -33,9 +33,29 @@ o2physics_add_library(PWGDQCore # # Skipped under recc, which caches compilations remotely instead. add_library(DQAnalysisPCH OBJECT dqAnalysisPCH.cxx) +# The PCH compile is one of the heaviest translation units in the tree -- it +# instantiates the whole data model up front -- but add_library() does not put +# it in the 'analysis' job pool that o2physics_add_dpl_workflow() uses for the +# workflows. Left out, it runs unthrottled alongside the pooled compilations +# and defeats the per-job memory budget the pool exists to enforce. +set_property(TARGET DQAnalysisPCH PROPERTY JOB_POOL_COMPILE analysis) target_link_libraries(DQAnalysisPCH PUBLIC O2::Framework O2Physics::AnalysisCore O2Physics::PWGDQCore) if(NOT DEFINED ENV{USE_RECC}) target_precompile_headers(DQAnalysisPCH PRIVATE + # Framework baseline -- same set AnalysisPCH precompiles. A target with + # REUSE_FROM uses ONLY this PCH, so anything left out here is parsed from + # scratch by every consumer: without this block these workflows precompile + # LESS than the default carrier they opted out of. + + + + + + + + + + [["PWGDQ/DataModel/ReducedInfoTables.h"]] # 65% [["PWGDQ/Core/VarManager.h"]] # 65%, ~8000 lines ) diff --git a/PWGDQ/Tasks/CMakeLists.txt b/PWGDQ/Tasks/CMakeLists.txt index b8a0bfa35bd..6305b7c0f9a 100644 --- a/PWGDQ/Tasks/CMakeLists.txt +++ b/PWGDQ/Tasks/CMakeLists.txt @@ -18,6 +18,12 @@ # # Skipped under recc, which caches compilations remotely instead. add_library(TableReaderWithAssocPCH OBJECT tableReaderWithAssocPCH.cxx) +# The PCH compile is one of the heaviest translation units in the tree -- it +# instantiates the whole data model up front -- but add_library() does not put +# it in the 'analysis' job pool that o2physics_add_dpl_workflow() uses for the +# workflows. Left out, it runs unthrottled alongside the pooled compilations +# and defeats the per-job memory budget the pool exists to enforce. +set_property(TARGET TableReaderWithAssocPCH PROPERTY JOB_POOL_COMPILE analysis) target_link_libraries(TableReaderWithAssocPCH PUBLIC O2::Framework O2::DetectorsBase O2Physics::AnalysisCore O2Physics::AnalysisCCDB O2Physics::PWGDQCore O2Physics::MLCore) if(NOT DEFINED ENV{USE_RECC}) target_precompile_headers(TableReaderWithAssocPCH PRIVATE diff --git a/PWGHF/Core/CMakeLists.txt b/PWGHF/Core/CMakeLists.txt index 61beb363212..bd5c35a3f9b 100644 --- a/PWGHF/Core/CMakeLists.txt +++ b/PWGHF/Core/CMakeLists.txt @@ -15,7 +15,7 @@ o2physics_add_library(HfMlCore # Precompiled header shared across PWGHF. Percentages are the share of the # group's workflow translation units that include the header, measured over the tree. -# D2H already has its own carrier (D2HReducedPCH); those targets keep it. +# The D2H reduced-data-model workflows share this carrier too. # # runDataProcessing.h is deliberately NOT precompiled: it requires each workflow's # customize() to be declared before it is included, so precompiling it silently @@ -23,9 +23,29 @@ o2physics_add_library(HfMlCore # # Skipped under recc, which caches compilations remotely instead. add_library(HfCandidatesPCH OBJECT hfCandidatesPCH.cxx) +# The PCH compile is one of the heaviest translation units in the tree -- it +# instantiates the whole data model up front -- but add_library() does not put +# it in the 'analysis' job pool that o2physics_add_dpl_workflow() uses for the +# workflows. Left out, it runs unthrottled alongside the pooled compilations +# and defeats the per-job memory budget the pool exists to enforce. +set_property(TARGET HfCandidatesPCH PROPERTY JOB_POOL_COMPILE analysis) target_link_libraries(HfCandidatesPCH PUBLIC O2::Framework O2Physics::AnalysisCore) if(NOT DEFINED ENV{USE_RECC}) target_precompile_headers(HfCandidatesPCH PRIVATE + # Framework baseline -- same set AnalysisPCH precompiles. A target with + # REUSE_FROM uses ONLY this PCH, so anything left out here is parsed from + # scratch by every consumer: without this block these workflows precompile + # LESS than the default carrier they opted out of. + + + + + + + + + + [["PWGHF/DataModel/CandidateReconstructionTables.h"]] # 78%, 2479 lines [["PWGHF/DataModel/CandidateSelectionTables.h"]] # 72% [["Common/Core/RecoDecay.h"]] # 65%, 1523 lines diff --git a/PWGHF/D2H/Core/d2hReducedPCH.cxx b/PWGHF/D2H/Core/d2hReducedPCH.cxx deleted file mode 100644 index 9ee76e63009..00000000000 --- a/PWGHF/D2H/Core/d2hReducedPCH.cxx +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2019-2026 CERN and copyright holders of ALICE O2. -// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders. -// All rights not expressly granted are reserved. -// -// This software is distributed under the terms of the GNU General Public -// License v3 (GPL Version 3), copied verbatim in the file "COPYING". -// -// In applying this license CERN does not waive the privileges and immunities -// granted to it by virtue of its status as an Intergovernmental Organization -// or submit itself to any jurisdiction. - -// Carrier for the precompiled header shared by the D2H reduced-data-model -// workflows; see D2HReducedPCH in this directory's CMakeLists.txt. It exists -// only to own the PCH, so it has no code of its own. diff --git a/PWGJE/Core/CMakeLists.txt b/PWGJE/Core/CMakeLists.txt index a05330e18f6..f1adfc59b7a 100644 --- a/PWGJE/Core/CMakeLists.txt +++ b/PWGJE/Core/CMakeLists.txt @@ -39,9 +39,29 @@ endif() # # Skipped under recc, which caches compilations remotely instead. add_library(JetDataModelPCH OBJECT jetDataModelPCH.cxx) +# The PCH compile is one of the heaviest translation units in the tree -- it +# instantiates the whole data model up front -- but add_library() does not put +# it in the 'analysis' job pool that o2physics_add_dpl_workflow() uses for the +# workflows. Left out, it runs unthrottled alongside the pooled compilations +# and defeats the per-job memory budget the pool exists to enforce. +set_property(TARGET JetDataModelPCH PROPERTY JOB_POOL_COMPILE analysis) target_link_libraries(JetDataModelPCH PUBLIC O2::Framework O2Physics::AnalysisCore O2Physics::PWGJECore) if(NOT DEFINED ENV{USE_RECC}) target_precompile_headers(JetDataModelPCH PRIVATE + # Framework baseline -- same set AnalysisPCH precompiles. A target with + # REUSE_FROM uses ONLY this PCH, so anything left out here is parsed from + # scratch by every consumer: without this block these workflows precompile + # LESS than the default carrier they opted out of. + + + + + + + + + + [["PWGJE/DataModel/Jet.h"]] # 90% ) endif() diff --git a/PWGJE/Tasks/CMakeLists.txt b/PWGJE/Tasks/CMakeLists.txt index 1cab772205b..ea882ad0e41 100644 --- a/PWGJE/Tasks/CMakeLists.txt +++ b/PWGJE/Tasks/CMakeLists.txt @@ -9,6 +9,12 @@ # granted to it by virtue of its status as an Intergovernmental Organization # or submit itself to any jurisdiction. add_library(JetSubstructureHFPCH OBJECT jetSubstructureHFPCH.cxx) +# The PCH compile is one of the heaviest translation units in the tree -- it +# instantiates the whole data model up front -- but add_library() does not put +# it in the 'analysis' job pool that o2physics_add_dpl_workflow() uses for the +# workflows. Left out, it runs unthrottled alongside the pooled compilations +# and defeats the per-job memory budget the pool exists to enforce. +set_property(TARGET JetSubstructureHFPCH PROPERTY JOB_POOL_COMPILE analysis) target_link_libraries(JetSubstructureHFPCH PUBLIC O2::Framework O2Physics::PWGJECore O2Physics::AnalysisCore) if(NOT DEFINED ENV{USE_RECC}) @@ -29,6 +35,12 @@ target_precompile_headers(JetSubstructureHFPCH PRIVATE endif() add_library(JetSubstructureHFOutputPCH OBJECT jetSubstructureHFOutputPCH.cxx) +# The PCH compile is one of the heaviest translation units in the tree -- it +# instantiates the whole data model up front -- but add_library() does not put +# it in the 'analysis' job pool that o2physics_add_dpl_workflow() uses for the +# workflows. Left out, it runs unthrottled alongside the pooled compilations +# and defeats the per-job memory budget the pool exists to enforce. +set_property(TARGET JetSubstructureHFOutputPCH PROPERTY JOB_POOL_COMPILE analysis) target_link_libraries(JetSubstructureHFOutputPCH PUBLIC O2::Framework O2Physics::PWGJECore O2Physics::AnalysisCore) if(NOT DEFINED ENV{USE_RECC})