From 5be3b48f4975176e260b0ccd0effa83c46be1698 Mon Sep 17 00:00:00 2001
From: carlocamilloni <carlo.camilloni@gmail.com>
Date: Wed, 5 Dec 2018 23:59:51 +0100
Subject: [PATCH] Fix an OpenMP performace regression for Coordination and all
 multicolvar

---
 src/colvar/CoordinationBase.cpp     | 5 +----
 src/vesselbase/ActionWithVessel.cpp | 8 +-------
 2 files changed, 2 insertions(+), 11 deletions(-)

diff --git a/src/colvar/CoordinationBase.cpp b/src/colvar/CoordinationBase.cpp
index 22cfc6701..75040505a 100644
--- a/src/colvar/CoordinationBase.cpp
+++ b/src/colvar/CoordinationBase.cpp
@@ -151,11 +151,8 @@ void CoordinationBase::calculate()
   }
 
   unsigned nt=OpenMP::getNumThreads();
-
   const unsigned nn=nl->size();
-
-  if(nt*stride*10>nn) nt=nn/stride/10;
-  if(nt==0)nt=1;
+  if(nt*stride*10>nn) nt=1;
 
   #pragma omp parallel num_threads(nt)
   {
diff --git a/src/vesselbase/ActionWithVessel.cpp b/src/vesselbase/ActionWithVessel.cpp
index dc56121e6..ea5063467 100644
--- a/src/vesselbase/ActionWithVessel.cpp
+++ b/src/vesselbase/ActionWithVessel.cpp
@@ -265,8 +265,7 @@ void ActionWithVessel::runAllTasks() {
 
   // Get number of threads for OpenMP
   unsigned nt=OpenMP::getNumThreads();
-  if( nt*stride*10>nactive_tasks ) nt=nactive_tasks/stride/10;
-  if( nt==0 || !threadSafe() ) nt=1;
+  if( nt*stride*10>nactive_tasks || !threadSafe()) nt=1;
 
   // Get size for buffer
   unsigned bsize=0, bufsize=getSizeOfBuffer( bsize );
@@ -274,11 +273,6 @@ void ActionWithVessel::runAllTasks() {
   buffer.assign( buffer.size(), 0.0 );
   // Switch off calculation of derivatives in main loop
   if( dertime_can_be_off ) dertime=false;
-  // std::vector<unsigned> der_list;
-  // if( mydata ) der_list.resize( mydata->getSizeOfDerivativeList(), 0 );
-
-  // Build storage stuff for loop
-  // std::vector<double> buffer( bufsize, 0.0 );
 
   if(timers) stopwatch.start("2 Loop over tasks");
   #pragma omp parallel num_threads(nt)
-- 
GitLab