From 310b1ad7b9aabdd8443cd53f5bd321a22c9d5902 Mon Sep 17 00:00:00 2001 From: Vadim Pisarevsky Date: Fri, 3 Aug 2012 16:41:00 +0400 Subject: [PATCH] moved parallel_for_ and ParallelLoopBody to core.hpp --- modules/core/include/opencv2/core/core.hpp | 12 ++ .../include/opencv2/core/parallel_tool.hpp | 108 ------------------ .../src/{parallel_tool.cpp => parallel.cpp} | 17 +++ modules/core/src/precomp.hpp | 1 - modules/imgproc/src/precomp.hpp | 1 - 5 files changed, 29 insertions(+), 110 deletions(-) delete mode 100644 modules/core/include/opencv2/core/parallel_tool.hpp rename modules/core/src/{parallel_tool.cpp => parallel.cpp} (90%) diff --git a/modules/core/include/opencv2/core/core.hpp b/modules/core/include/opencv2/core/core.hpp index 42ab6a17d5..1e8210e9b1 100644 --- a/modules/core/include/opencv2/core/core.hpp +++ b/modules/core/include/opencv2/core/core.hpp @@ -4608,6 +4608,18 @@ float CommandLineParser::analyzeValue(const std::string& str, bool space_ template<> CV_EXPORTS double CommandLineParser::analyzeValue(const std::string& str, bool space_delete); +/////////////////////////////// Parallel Primitives ////////////////////////////////// + +// a base body class +class CV_EXPORTS ParallelLoopBody +{ +public: + virtual void operator() (const Range& range) const = 0; + virtual ~ParallelLoopBody(); +}; + +CV_EXPORTS void parallel_for_(const Range& range, const ParallelLoopBody& body); + } #endif // __cplusplus diff --git a/modules/core/include/opencv2/core/parallel_tool.hpp b/modules/core/include/opencv2/core/parallel_tool.hpp deleted file mode 100644 index 08258d5c2b..0000000000 --- a/modules/core/include/opencv2/core/parallel_tool.hpp +++ /dev/null @@ -1,108 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. -// Copyright (C) 2009-2011, Willow Garage Inc., all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of the copyright holders may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// This software is provided by the copyright holders and contributors "as is" and -// any express or implied warranties, including, but not limited to, the implied -// warranties of merchantability and fitness for a particular purpose are disclaimed. -// In no event shall the Intel Corporation or contributors be liable for any direct, -// indirect, incidental, special, exemplary, or consequential damages -// (including, but not limited to, procurement of substitute goods or services; -// loss of use, data, or profits; or business interruption) however caused -// and on any theory of liability, whether in contract, strict liability, -// or tort (including negligence or otherwise) arising in any way out of -// the use of this software, even if advised of the possibility of such damage. -// -//M*/ - -#ifndef __OPENCV_PARALLEL_TOOL_HPP__ -#define __OPENCV_PARALLEL_TOOL_HPP__ - -#ifdef HAVE_CVCONFIG_H -# include -#endif // HAVE_CVCONFIG_H - -/* - HAVE_TBB - using TBB - HAVE_GCD - using GCD - HAVE_OPENMP - using OpenMP - HAVE_CONCURRENCY - using visual studio 2010 concurrency -*/ - -#ifdef HAVE_TBB -# include "tbb/tbb_stddef.h" -# if TBB_VERSION_MAJOR*100 + TBB_VERSION_MINOR >= 202 -# include "tbb/tbb.h" -# include "tbb/task.h" -# undef min -# undef max -# else -# undef HAVE_TBB -# endif // end TBB version -#endif // HAVE_TBB - -#ifdef __cplusplus - -namespace cv -{ - // a base body class - class CV_EXPORTS ParallelLoopBody - { - public: - virtual void operator() (const Range& range) const = 0; - virtual ~ParallelLoopBody(); - }; - - CV_EXPORTS void parallel_for_(const Range& range, const ParallelLoopBody& body); - - template inline - CV_EXPORTS void parallel_do_(Iterator first, Iterator last, const Body& body) - { -#ifdef HAVE_TBB - tbb::parallel_do(first, last, body); -#else - for ( ; first != last; ++first) - body(*first); -#endif // HAVE_TBB - } - - template inline - CV_EXPORTS void parallel_reduce_(const Range& range, Body& body) - { -#ifdef HAVE_TBB - tbb::parallel_reduce(tbb::blocked_range(range.start, range.end), body); -#else - body(range); -#endif // end HAVE_TBB - } - -} // namespace cv - -#endif // __cplusplus - -#endif // __OPENCV_PARALLEL_TOOL_HPP__ diff --git a/modules/core/src/parallel_tool.cpp b/modules/core/src/parallel.cpp similarity index 90% rename from modules/core/src/parallel_tool.cpp rename to modules/core/src/parallel.cpp index 423d4787d1..4274caf340 100644 --- a/modules/core/src/parallel_tool.cpp +++ b/modules/core/src/parallel.cpp @@ -48,8 +48,25 @@ # include #elif defined HAVE_GCD # include +#elif defined HAVE_TBB +# include "tbb/tbb_stddef.h" +# if TBB_VERSION_MAJOR*100 + TBB_VERSION_MINOR >= 202 +# include "tbb/tbb.h" +# include "tbb/task.h" +# undef min +# undef max +# else +# undef HAVE_TBB +# endif // end TBB version #endif // HAVE_CONCURRENCY +/* + HAVE_TBB - using TBB + HAVE_GCD - using GCD + HAVE_OPENMP - using OpenMP + HAVE_CONCURRENCY - using visual studio 2010 concurrency +*/ + namespace cv { ParallelLoopBody::~ParallelLoopBody() { } diff --git a/modules/core/src/precomp.hpp b/modules/core/src/precomp.hpp index 60429075aa..81b9d6e80b 100644 --- a/modules/core/src/precomp.hpp +++ b/modules/core/src/precomp.hpp @@ -50,7 +50,6 @@ #include "opencv2/core/core.hpp" #include "opencv2/core/core_c.h" #include "opencv2/core/internal.hpp" -#include "opencv2/core/parallel_tool.hpp" #include #include diff --git a/modules/imgproc/src/precomp.hpp b/modules/imgproc/src/precomp.hpp index 998008ae27..fef5f755bd 100644 --- a/modules/imgproc/src/precomp.hpp +++ b/modules/imgproc/src/precomp.hpp @@ -50,7 +50,6 @@ #include "opencv2/imgproc/imgproc.hpp" #include "opencv2/imgproc/imgproc_c.h" #include "opencv2/core/internal.hpp" -#include "opencv2/core/parallel_tool.hpp" #include #include #include