From 34a3275a940982c558fe8d83a358b70da8ce72b8 Mon Sep 17 00:00:00 2001 From: Giulio Eulisse <10544+ktf@users.noreply.github.com> Date: Tue, 16 Feb 2021 00:22:55 +0100 Subject: [PATCH 1/3] Use a job pool for analysis tutorial Defaults to 4 parallel jobs. Can be modified via: cmake -DANALYSIS_JOB_POOL= ... --- Analysis/Tutorials/CMakeLists.txt | 32 +++++++++++++++++++++++++++++++ CMakeLists.txt | 4 ++++ cmake/O2AddExecutable.cmake | 5 ++++- cmake/O2AddWorkflow.cmake | 5 ++++- 4 files changed, 44 insertions(+), 2 deletions(-) diff --git a/Analysis/Tutorials/CMakeLists.txt b/Analysis/Tutorials/CMakeLists.txt index c9333bf941327..67c8753593d7c 100644 --- a/Analysis/Tutorials/CMakeLists.txt +++ b/Analysis/Tutorials/CMakeLists.txt @@ -18,120 +18,145 @@ o2_add_dpl_workflow(histogram-track-selection SOURCES src/histogramTrackSelection.cxx PUBLIC_LINK_LIBRARIES O2::AnalysisDataModel O2::AnalysisCore + JOB_POOL analysis COMPONENT_NAME AnalysisTutorial) o2_add_dpl_workflow(track-collection-iteration SOURCES src/trackCollectionIteration.cxx + JOB_POOL analysis COMPONENT_NAME AnalysisTutorial) o2_add_dpl_workflow(track-iteration SOURCES src/trackIteration.cxx + JOB_POOL analysis COMPONENT_NAME AnalysisTutorial) o2_add_dpl_workflow(full-track-iteration SOURCES src/fullTrackIteration.cxx + JOB_POOL analysis COMPONENT_NAME AnalysisTutorial) o2_add_dpl_workflow(collision-tracks-iteration SOURCES src/collisionTracksIteration.cxx + JOB_POOL analysis PUBLIC_LINK_LIBRARIES O2::Framework COMPONENT_NAME AnalysisTutorial) o2_add_dpl_workflow(new-collections SOURCES src/newCollections.cxx + JOB_POOL analysis PUBLIC_LINK_LIBRARIES O2::Framework COMPONENT_NAME AnalysisTutorial) o2_add_dpl_workflow(associated-derived SOURCES src/associatedExample.cxx + JOB_POOL analysis PUBLIC_LINK_LIBRARIES O2::Framework COMPONENT_NAME AnalysisTutorial) o2_add_dpl_workflow(dynamic-columns SOURCES src/dynamicColumns.cxx + JOB_POOL analysis PUBLIC_LINK_LIBRARIES O2::Framework COMPONENT_NAME AnalysisTutorial) o2_add_dpl_workflow(histograms SOURCES src/histograms.cxx + JOB_POOL analysis PUBLIC_LINK_LIBRARIES O2::Framework COMPONENT_NAME AnalysisTutorial) o2_add_dpl_workflow(histograms-full-tracks SOURCES src/histogramsFullTracks.cxx + JOB_POOL analysis PUBLIC_LINK_LIBRARIES O2::Framework COMPONENT_NAME AnalysisTutorial) o2_add_dpl_workflow(filters SOURCES src/filters.cxx + JOB_POOL analysis PUBLIC_LINK_LIBRARIES O2::Framework COMPONENT_NAME AnalysisTutorial) o2_add_dpl_workflow(partitions SOURCES src/partitions.cxx + JOB_POOL analysis PUBLIC_LINK_LIBRARIES O2::Framework COMPONENT_NAME AnalysisTutorial) o2_add_dpl_workflow(aodwriter SOURCES src/aodwriter.cxx + JOB_POOL analysis PUBLIC_LINK_LIBRARIES O2::Framework COMPONENT_NAME AnalysisTutorial) o2_add_dpl_workflow(aodreader SOURCES src/aodreader.cxx + JOB_POOL analysis PUBLIC_LINK_LIBRARIES O2::Framework COMPONENT_NAME AnalysisTutorial) o2_add_dpl_workflow(outputs SOURCES src/outputs.cxx + JOB_POOL analysis PUBLIC_LINK_LIBRARIES O2::Framework COMPONENT_NAME AnalysisTutorial) o2_add_dpl_workflow(jet-analysis SOURCES src/jetAnalysis.cxx + JOB_POOL analysis PUBLIC_LINK_LIBRARIES O2::Framework O2::AnalysisDataModel COMPONENT_NAME AnalysisTutorial) o2_add_dpl_workflow(tracks-combinations SOURCES src/tracksCombinations.cxx + JOB_POOL analysis PUBLIC_LINK_LIBRARIES O2::Framework O2::AnalysisDataModel COMPONENT_NAME AnalysisTutorial) o2_add_dpl_workflow(event-mixing SOURCES src/eventMixing.cxx + JOB_POOL analysis PUBLIC_LINK_LIBRARIES O2::Framework O2::AnalysisDataModel COMPONENT_NAME AnalysisTutorial) o2_add_dpl_workflow(mc-histograms SOURCES src/mcHistograms.cxx + JOB_POOL analysis PUBLIC_LINK_LIBRARIES O2::Framework O2::AnalysisDataModel O2::AnalysisCore COMPONENT_NAME AnalysisTutorial) o2_add_dpl_workflow(ccdbaccess SOURCES src/ccdbaccess.cxx + JOB_POOL analysis PUBLIC_LINK_LIBRARIES O2::AnalysisCore O2::CCDB O2::Framework O2::AnalysisDataModel COMPONENT_NAME AnalysisTutorial) o2_add_dpl_workflow(weak-decay-iteration + JOB_POOL analysis SOURCES src/weakDecayIteration.cxx COMPONENT_NAME AnalysisTutorial) o2_add_dpl_workflow(extended-columns SOURCES src/extendedColumns.cxx + JOB_POOL analysis PUBLIC_LINK_LIBRARIES O2::Framework COMPONENT_NAME AnalysisTutorial) o2_add_dpl_workflow(zdc-vzero-iteration SOURCES src/ZDCVZeroIteration.cxx + JOB_POOL analysis COMPONENT_NAME AnalysisTutorial) o2_add_dpl_workflow(hist-helpers-test SOURCES src/histHelpersTest.cxx + JOB_POOL analysis PUBLIC_LINK_LIBRARIES O2::AnalysisDataModel O2::AnalysisCore COMPONENT_NAME AnalysisTutorial) o2_add_dpl_workflow(histogram-registry SOURCES src/histogramRegistry.cxx + JOB_POOL analysis PUBLIC_LINK_LIBRARIES O2::Framework O2::AnalysisCore O2::AnalysisDataModel COMPONENT_NAME AnalysisTutorial) @@ -145,35 +170,42 @@ o2_target_root_dictionary(ConfigurableCut o2_add_dpl_workflow(configurable-objects SOURCES src/configurableObjects.cxx + JOB_POOL analysis PUBLIC_LINK_LIBRARIES O2::Framework O2::ConfigurableCut COMPONENT_NAME AnalysisTutorial) o2_add_dpl_workflow(muon-iteration SOURCES src/muonIteration.cxx + JOB_POOL analysis PUBLIC_LINK_LIBRARIES O2::Framework O2::AnalysisCore O2::AnalysisDataModel COMPONENT_NAME AnalysisTutorial) o2_add_dpl_workflow(schema-evolution SOURCES src/schemaEvolution.cxx + JOB_POOL analysis PUBLIC_LINK_LIBRARIES O2::Framework O2::AnalysisCore O2::AnalysisDataModel COMPONENT_NAME AnalysisTutorial) o2_add_dpl_workflow(efficiency-per-run SOURCES src/efficiencyPerRun.cxx + JOB_POOL analysis PUBLIC_LINK_LIBRARIES O2::Framework O2::AnalysisCore O2::AnalysisDataModel COMPONENT_NAME AnalysisTutorial) o2_add_dpl_workflow(efficiency-global SOURCES src/efficiencyGlobal.cxx + JOB_POOL analysis PUBLIC_LINK_LIBRARIES O2::Framework O2::AnalysisCore O2::AnalysisDataModel COMPONENT_NAME AnalysisTutorial) o2_add_dpl_workflow(compatible-bcs SOURCES src/compatibleBCs.cxx + JOB_POOL analysis PUBLIC_LINK_LIBRARIES O2::Framework O2::AnalysisCore O2::AnalysisDataModel COMPONENT_NAME AnalysisTutorial) o2_add_dpl_workflow(multiplicity-event-track-selection SOURCES src/multiplicityEventTrackSelection.cxx + JOB_POOL analysis PUBLIC_LINK_LIBRARIES O2::Framework O2::AnalysisCore O2::AnalysisDataModel COMPONENT_NAME AnalysisTutorial) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5c134cb451e9b..d9ef1e8caa721 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -25,6 +25,10 @@ set(ALIGPU_BUILD_TYPE "O2") set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake) set_property(GLOBAL PROPERTY REPORT_UNDEFINED_PROPERTIES) + +set(ANALYSIS_COMPILE_POOL 4 CACHE STRING "How many parallel analysis compilation jobs") +set_property(GLOBAL PROPERTY JOB_POOLS analysis=${ANALYSIS_COMPILE_POOL}) + include(O2BuildSanityChecks) o2_build_sanity_checks() set(CMAKE_CXX_STANDARD 17) diff --git a/cmake/O2AddExecutable.cmake b/cmake/O2AddExecutable.cmake index 59b6ff3d184a7..36353b6647799 100644 --- a/cmake/O2AddExecutable.cmake +++ b/cmake/O2AddExecutable.cmake @@ -49,7 +49,7 @@ function(o2_add_executable baseTargetName) A "IS_TEST;NO_INSTALL;IS_BENCHMARK" "COMPONENT_NAME;TARGETVARNAME" - "SOURCES;PUBLIC_LINK_LIBRARIES") + "SOURCES;PUBLIC_LINK_LIBRARIES;JOB_POOL") if(A_UNPARSED_ARGUMENTS) message(FATAL_ERROR "Got trailing arguments ${A_UNPARSED_ARGUMENTS}") @@ -95,6 +95,9 @@ function(o2_add_executable baseTargetName) # set the executable output name set_property(TARGET ${target} PROPERTY OUTPUT_NAME ${exeName}) + if(A_JOB_POOL) + set_property(TARGET ${target} PROPERTY JOB_POOL_COMPILE ${A_JOB_POOL}) + endif() if(A_IS_TEST) # tests go in a separate directory diff --git a/cmake/O2AddWorkflow.cmake b/cmake/O2AddWorkflow.cmake index 93e3e056f9b73..7b58dc13397e1 100644 --- a/cmake/O2AddWorkflow.cmake +++ b/cmake/O2AddWorkflow.cmake @@ -28,7 +28,7 @@ include_guard() function(o2_add_dpl_workflow baseTargetName) cmake_parse_arguments(PARSE_ARGV 1 A "" "COMPONENT_NAME;TARGETVARNAME" - "SOURCES;PUBLIC_LINK_LIBRARIES") + "SOURCES;PUBLIC_LINK_LIBRARIES;JOB_POOL") if(A_UNPARSED_ARGUMENTS) message(FATAL_ERROR "Got trailing arguments ${A_UNPARSED_ARGUMENTS}") @@ -44,6 +44,9 @@ function(o2_add_dpl_workflow baseTargetName) ${targetExeName} PARENT_SCOPE) endif() + if(A_JOB_POOL) + set_property(TARGET ${targetExeName} PROPERTY JOB_POOL_COMPILE ${A_JOB_POOL}) + endif() set(jsonFile $.json) From a9e0404db31d38bc9821d49b0d10818664392ff9 Mon Sep 17 00:00:00 2001 From: Giulio Eulisse <10544+ktf@users.noreply.github.com> Date: Wed, 17 Feb 2021 13:57:18 +0100 Subject: [PATCH 2/3] Update CMakeLists.txt --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d9ef1e8caa721..64182338f23e6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -26,7 +26,7 @@ set(ALIGPU_BUILD_TYPE "O2") set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake) set_property(GLOBAL PROPERTY REPORT_UNDEFINED_PROPERTIES) -set(ANALYSIS_COMPILE_POOL 4 CACHE STRING "How many parallel analysis compilation jobs") +set(ANALYSIS_COMPILE_POOL 3 CACHE STRING "How many parallel analysis compilation jobs") set_property(GLOBAL PROPERTY JOB_POOLS analysis=${ANALYSIS_COMPILE_POOL}) include(O2BuildSanityChecks) From d72bde1044d8da07d96b30d414e2bd53ba112a83 Mon Sep 17 00:00:00 2001 From: Giulio Eulisse <10544+ktf@users.noreply.github.com> Date: Wed, 17 Feb 2021 16:00:59 +0100 Subject: [PATCH 3/3] Just trying... --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 64182338f23e6..9ec0931680f07 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -26,7 +26,7 @@ set(ALIGPU_BUILD_TYPE "O2") set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake) set_property(GLOBAL PROPERTY REPORT_UNDEFINED_PROPERTIES) -set(ANALYSIS_COMPILE_POOL 3 CACHE STRING "How many parallel analysis compilation jobs") +set(ANALYSIS_COMPILE_POOL 1 CACHE STRING "How many parallel analysis compilation jobs") set_property(GLOBAL PROPERTY JOB_POOLS analysis=${ANALYSIS_COMPILE_POOL}) include(O2BuildSanityChecks)