Commit Graph

49 Commits

Author SHA1 Message Date
Alexander Alekhin
f57630d92b Merge pull request #10691 from alalek:parallel_for_2018 2018-01-30 14:13:29 +00:00
Woody Chow
f1c52e426b Merge pull request #10697 from woodychow:tbb_task_arena
* Use Intel TBB's task arena if possible
2018-01-27 08:46:54 +03:00
Alexander Alekhin
c49d5d5252 core: fix pthreads performance
OpenCV pthreads-based implementation changes:
- rework worker threads pool, allow to execute job by the main thread too
- rework synchronization scheme (wait for job completion, threads 'pong' answer is not required)
- allow "active wait" (spin) by worker threads and by the main thread
- use _mm_pause() during active wait (support for Hyper-Threading technology)
- use sched_yield() to avoid preemption of still working other workers
- don't use getTickCount()
- optional builtin thread pool profiler (disabled by compilation flag)
2018-01-26 04:09:11 +00:00
Mattia Rizzolo
d026d7dcfb
Fix build for non-linux architectures but still glibc-based
Exampls of these are gnu/kfreebsd and gnu/hurd, both available as
unofficial Debian ports.

They don't define __linux__ (as they are non-linux…) but still define
__GLIBC__, so check on that.

Signed-off-by: Mattia Rizzolo <mattia@mapreri.org>
2017-10-17 00:45:27 +02:00
Alexander Alekhin
ca9a88785e core(build): fix compilation of parallel.cpp (OpenMP configuration) 2017-08-14 11:42:49 +03:00
Alexander Alekhin
0ebabe17df core: fix flag processing for nested regions in cv::parallel_for_() 2017-08-10 08:37:47 +00:00
Alexander Alekhin
602f047fe8 build: replace WIN32 => _WIN32 2017-07-25 13:30:48 +03:00
Alexander Alekhin
a4a47b538c build: detect Android via '__ANDROID__' macro
https://sourceforge.net/p/predef/wiki/OperatingSystems
2017-07-10 12:43:59 +03:00
Alexander Alekhin
006966e629 trace: initial support for code trace 2017-06-26 17:07:13 +03:00
Vadim Pisarevsky
fbafc700ea added v_reduce_sum4() universal intrinsic; corrected number of threads in cv::getNumThreads() in the case of GCD 2017-06-13 18:04:00 +03:00
Woody Chow
6e00c7651b Use num_threads clause of #pragma omp parallel instead to avoid calling omp_set_num_threads for the entire application 2017-05-29 14:16:10 +09:00
Alexander Alekhin
649bb7ac04 core: parallel_for_(): update RNG state of the main thread 2017-02-28 18:28:15 +03:00
Alexander Alekhin
b28fd79fdc core: parallel_for_(): propagate RNG state from the main thread 2017-02-28 18:22:46 +03:00
mshabunin
695c518384 Updated TBB search script and code checks 2016-12-01 16:58:38 +03:00
Pavel Vlasov
349d5ba012 --perf_instrument parameter now has int type and 0, 1, 2 modes (1 - simple trees, 2 - expanded trees for functions with same name but different calling address);
Maximum depth limit var was added to the instrumentation structure;

Trace names output console output fix: improper tree formatting could happen;
Output in case of error was added;

Custom regions improvements;

Improved timing and weight calculation for parallel regions; New TC (threads counter) value to indicate how many different threads accessed particular node;

parallel_for, warnings fixes and ReturnAddress code from Alexander Alekhin;
2016-11-08 10:18:05 +03:00
Alexander Alekhin
5383a625a7 fix Win build, change default WINNT macro to WinXP
Returning to Win2k value is possible via this CMake option:

    cmake -DOPENCV_EXTRA_FLAGS="/D_WIN32_WINNT=0x0500" ...
2016-08-25 16:21:52 +03:00
Pavel Vlasov
a462d76a95 Implementations instrumentation framework for OpenCV performance system; 2016-08-17 16:26:03 +03:00
Gregory Morse
af5bec70cd merge Win10/VS2015 changes 2015-12-17 21:15:59 +01:00
Maksim Shabunin
5618f4a0ac Fixed: Concurrency static scheduler release failed 2015-09-07 18:59:07 +03:00
Alexander Alekhin
a482dcce46 fix support for pthreads parallel_for 2015-06-11 16:53:07 +03:00
Maksim Shabunin
1f983ec39c Fixed compilation of pthread-based parallel_for with gcc 4.4.3 2015-06-09 13:59:48 +03:00
kalistratovag
bf5393ae58 parallel for on pthreads initial commit
removing trailing whitespaces

Compilation error on Mac fix & warning on android

Warnings fixed on iOs
2015-06-01 17:48:21 +03:00
Maxim Kostin
d1a8171011 Added WinRT concurrency support. 2015-03-18 15:13:08 +03:00
Maxim Kostin
cdd23440c9 Adding support for WinRT(WinPhone 8/8.1 and Win Store) via CMake 3.1
- Substituted HAVE_WINRT with WINRT
- Fixed compilation issues in ocl.cpp and parallel.cpp
- Fixed compiler issue for WP8: "C2678: binary '+' : no operator found which takes a left-hand - Fixed gitignore
- Added #ifdef HAVE_OPENCL to remove compiler warnings in ocl.cpp
- Used NO_GETENV similar to '3rdparty\libjpeg\jmemmgr.c;
- Added ole32.lib for core module (for WindowsStore 8.0 builds)
- Made OpenCV_ARCH aware of ARM

Signed-off-by: Maxim Kostin <v-maxkos@microsoft.com>
2015-03-02 22:26:43 +03:00
Adam Borowski
7b0d1c932e Get rid of sysctl includes on Linux.
The 'sysctl' syscall has been strongly deprecated on Linux for ages.
Currently, on old architectures it will spam syslog whenever used, and on
newer ones it's missing from the headers altogether.  Opencv has migrated
away on Linux already, but #includes were left lingering.  This commit
removes them on non-__APPLE__, unbreaking x32 (and probably others).
2015-01-13 01:52:56 +01:00
Maksim Shabunin
ef3d02214b Fixing iOS clang warnings, part 2 2014-10-17 18:14:54 +04:00
Vadim Pisarevsky
e9729a9601 multiple yet minor fixes to make most of the tests pass on Mac with Iris graphics 2014-08-16 00:29:10 +04:00
peng xiao
2519a21935 Fix a potential bug of ParallelLoopBodyWrapper::operator(Range)
On a 32-bit compiler the calculation may result in data (size_t) overflow when running some paralleled algorithms (which can safely run on a 64-bit compiler).
This bug is found when running OpenCV's Retina tutorial on 32bit VS2010.
2013-08-23 15:35:55 +08:00
Alexander Smorkalov
6257df1c4b API restricted on WinRT partially removed from core.
Additional CMAKE flag WITH_WINRT added.
2013-07-31 05:43:51 -07:00
Roman Donchenko
c16316c4b4 Replaced the semi-public CV_PARALLEL_FRAMEWORK macro with a function.
That way, core/internal.hpp doesn't have to depend on cvconfig.h, which we
don't ship.
2013-06-24 12:57:14 +04:00
Roman Donchenko
24d84a45b1 Made tests record in the XML output which parallel framework was used. 2013-06-18 18:26:53 +04:00
Daniil Osokin
6deda2531c Fixed getNumThreads() for C= 2013-02-14 17:07:36 +04:00
Andrey Kamaev
fd4909360f Remove windows.h include from opencv2/core/internal.hpp to avoid conflicts with TBB library. 2012-11-01 12:44:10 +04:00
Andrey Kamaev
40030d2ca0 Fix windows build warnings 2012-10-22 19:13:18 +04:00
Andrey Kamaev
7173c82382 Include unistd.h to parallel.cpp on UNIX-like systems
This fixes build without TBB and CUDA. Issue #2445
2012-10-19 14:38:30 +04:00
Andrey Kamaev
ebac3a02aa Fix backward compatibility of opencv_core 2012-10-16 15:13:00 +04:00
Vadim Pisarevsky
78a0b9787c fixed build errors on Mac; moved test for #2332 from imgproc to highgui 2012-10-15 13:55:32 +04:00
Andrey Kamaev
460644b8a4 Reimplement thread management functions:
* Refactor auto-detection of parallel frameworks
* Implement cv:getNumThreads, cv::setNumThreads and cv::getThreadNum for all supported frameworks
* From now cv::setNumThreads(0) can be used to turn off parallelisation
2012-10-15 12:44:16 +04:00
Andrey Kamaev
b54f59de90 Move thread-related functions implementation to parallel.cpp 2012-10-15 12:44:16 +04:00
Vadim Pisarevsky
bddd06e6c4 another fix for the updated parallel_for_ implementation 2012-10-11 23:22:32 +04:00
Vadim Pisarevsky
d64438dcfd fixed build errors in the case of TBB and Concurrency 2012-10-11 23:04:45 +04:00
Vadim Pisarevsky
354a5f2686 added recommended number of stripes to parallel_for_, modified some of the functions to use larger stripes (for better performance) 2012-10-11 22:37:14 +04:00
Vadim Pisarevsky
e625d86485 added C= support; modified threading logic in threshold 2012-10-10 15:36:32 +04:00
Ilya Lavrenov
0e07b0d73a uncommented auto enabling GCD on Mac 2012-09-24 14:18:15 +04:00
Ilya Lavrenov
077115bd4a debug 2012-09-24 12:40:20 +04:00
Andrey Kamaev
8e2258c494 Fix Windows build after commit:41b6d25 2012-08-19 00:20:08 +04:00
Vadim Pisarevsky
ec8f926686 small correction for the previous patch in parallel.cpp 2012-08-17 17:34:51 +04:00
Vadim Pisarevsky
41b6d25bdd added cross-platform Mutex implementation; enable platform-native (GDC/Concurrency) parallel_for_ implementation when TBB is not installed. 2012-08-17 17:32:06 +04:00
Vadim Pisarevsky
310b1ad7b9 moved parallel_for_ and ParallelLoopBody to core.hpp 2012-08-03 16:41:00 +04:00