From e3a98af4ffbd93cf9edfd84c0bb862918aece1c2 Mon Sep 17 00:00:00 2001 From: Chris Jones Date: Tue, 19 May 2015 10:11:03 -0500 Subject: [PATCH] Make 10MB the default stack size for additional threads Many of our ROOT files require very deep stacks in order to be able to read back certain branches. When read on a non-main thread the default stack size used by TBB is often too small. 10MB appears to be sufficiently large. --- FWCore/Framework/bin/cmsRun.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/FWCore/Framework/bin/cmsRun.cpp b/FWCore/Framework/bin/cmsRun.cpp index 90537eba2b8a5..dc7c1da942fa5 100644 --- a/FWCore/Framework/bin/cmsRun.cpp +++ b/FWCore/Framework/bin/cmsRun.cpp @@ -54,6 +54,7 @@ static char const* const kHelpOpt = "help"; static char const* const kHelpCommandOpt = "help,h"; static char const* const kStrictOpt = "strict"; +constexpr unsigned int kDefaultSizeOfStackForThreadsInKB = 10*1024; //10MB // ----------------------------------------------- namespace { class EventProcessorWithSentry { @@ -235,7 +236,7 @@ int main(int argc, char* argv[]) { if(vm.count(kNumberOfThreadsOpt)) { setNThreadsOnCommandLine=true; unsigned int nThreads = vm[kNumberOfThreadsOpt].as(); - unsigned int stackSize=0; + unsigned int stackSize=kDefaultSizeOfStackForThreadsInKB; if(vm.count(kSizeOfStackForThreadOpt)) { stackSize=vm[kSizeOfStackForThreadOpt].as(); } @@ -295,8 +296,8 @@ int main(int argc, char* argv[]) { auto const& ops = pset->getUntrackedParameterSet("options"); if(ops.existsAs("numberOfThreads",false)) { unsigned int nThreads = ops.getUntrackedParameter("numberOfThreads"); - unsigned int stackSize=0; - if(ops.existsAs("sizeOfStackForThreadsInKB",0)) { + unsigned int stackSize=kDefaultSizeOfStackForThreadsInKB; + if(ops.existsAs("sizeOfStackForThreadsInKB",false)) { stackSize = ops.getUntrackedParameter("sizeOfStackForThreadsInKB"); } const auto nThreadsUsed = setNThreads(nThreads,stackSize,tsiPtr);