From 40d2240a97bde83da6286c298df4d7aea8df01ac Mon Sep 17 00:00:00 2001
From: Jordi Inglada <jordi.inglada@cesbio.cnes.fr>
Date: Fri, 2 Mar 2018 11:14:03 +0100
Subject: [PATCH] ENH: parallel loops when possible

---
 Modules/Learning/Sampling/include/otbSampleAugmentation.h | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/Modules/Learning/Sampling/include/otbSampleAugmentation.h b/Modules/Learning/Sampling/include/otbSampleAugmentation.h
index cbfd1d3882..40f62d0cb8 100644
--- a/Modules/Learning/Sampling/include/otbSampleAugmentation.h
+++ b/Modules/Learning/Sampling/include/otbSampleAugmentation.h
@@ -46,6 +46,7 @@ SampleType estimateStds(SampleVectorType samples)
   const auto nbComponents = samples[0].size();
   SampleType stds(nbComponents, 0.0);
   SampleType means(nbComponents, 0.0);
+#pragma omp parallel for
   for(size_t i=0; i<nbSamples; ++i)
     {
     for(size_t j=0; j<nbComponents; ++j)
@@ -57,9 +58,10 @@ SampleType estimateStds(SampleVectorType samples)
       means[j] = muNew;
       }
     }
-  for(auto std : stds)
+#pragma omp parallel for
+  for(size_t j=0; j<nbComponents; ++j)
     {
-    std = std::sqrt(std/nbSamples);
+    stds[j] = std::sqrt(stds[j]/nbSamples);
     }
   return stds;
 }
@@ -73,6 +75,7 @@ void replicateSamples(const SampleVectorType& inSamples,
                     SampleVectorType& newSamples)
 {
   newSamples.resize(nbSamples);
+#pragma omp parallel for
   for(size_t i=0; i<nbSamples; ++i)
     {
     newSamples[i] = inSamples[i%inSamples.size()];
-- 
GitLab