Merge pull request #11897 from Jakub-Golinowski:hpx_backend

* Add HPX backend for OpenCV implementation
Adds hpx backend for cv::parallel_for_() calls respecting the nstripes chunking parameter. C++ code for the backend is added to modules/core/parallel.cpp. Also, the necessary changes to cmake files are introduced.
Backend can operate in 2 versions (selectable by cmake build option WITH_HPX_STARTSTOP): hpx (runtime always on) and hpx_startstop (start and stop the backend for each cv::parallel_for_() call)

* WIP: Conditionally include hpx_main.hpp to tests in core module
Header hpx_main.hpp is included to both core/perf/perf_main.cpp and core/test/test_main.cpp.
The changes to cmake files for linking hpx library to above mentioned test executalbles are proposed but have issues.

* Add coditional iclusion of hpx_main.hpp to cpp cpu modules

* Remove start/stop version of hpx backend
pull/12372/head
Jakub Golinowski 6 years ago committed by Alexander Alekhin
parent 90f47eb952
commit 9f1218b00b
  1. 2
      CMakeLists.txt
  2. 7
      cmake/OpenCVFindLibsPerf.cmake
  3. 10
      cmake/OpenCVModule.cmake
  4. 3
      cmake/templates/cvconfig.h.in
  5. 4
      modules/calib3d/perf/perf_main.cpp
  6. 4
      modules/calib3d/test/test_main.cpp
  7. 4
      modules/core/CMakeLists.txt
  8. 4
      modules/core/perf/perf_main.cpp
  9. 46
      modules/core/src/parallel.cpp
  10. 4
      modules/core/test/test_main.cpp
  11. 4
      modules/dnn/perf/perf_main.cpp
  12. 4
      modules/dnn/test/test_main.cpp
  13. 4
      modules/features2d/perf/perf_main.cpp
  14. 4
      modules/features2d/test/test_main.cpp
  15. 4
      modules/flann/test/test_main.cpp
  16. 4
      modules/highgui/test/test_main.cpp
  17. 4
      modules/imgcodecs/perf/perf_main.cpp
  18. 4
      modules/imgcodecs/test/test_main.cpp
  19. 4
      modules/imgproc/perf/perf_main.cpp
  20. 4
      modules/imgproc/test/test_main.cpp
  21. 4
      modules/ml/test/test_main.cpp
  22. 4
      modules/objdetect/perf/perf_main.cpp
  23. 4
      modules/objdetect/test/test_main.cpp
  24. 4
      modules/photo/perf/perf_main.cpp
  25. 4
      modules/photo/test/test_main.cpp
  26. 4
      modules/shape/test/test_main.cpp
  27. 4
      modules/stitching/perf/perf_main.cpp
  28. 4
      modules/stitching/test/test_main.cpp
  29. 4
      modules/superres/perf/perf_main.cpp
  30. 4
      modules/superres/test/test_main.cpp
  31. 4
      modules/video/perf/perf_main.cpp
  32. 4
      modules/video/test/test_main.cpp
  33. 4
      modules/videoio/perf/perf_main.cpp
  34. 4
      modules/videoio/test/test_main.cpp
  35. 4
      modules/videostab/test/test_main.cpp

@ -252,6 +252,7 @@ OCV_OPTION(WITH_WIN32UI "Build with Win32 UI Backend support" ON
OCV_OPTION(WITH_QUICKTIME "Use QuickTime for Video I/O" OFF IF APPLE ) OCV_OPTION(WITH_QUICKTIME "Use QuickTime for Video I/O" OFF IF APPLE )
OCV_OPTION(WITH_QTKIT "Use QTKit Video I/O backend" OFF IF APPLE ) OCV_OPTION(WITH_QTKIT "Use QTKit Video I/O backend" OFF IF APPLE )
OCV_OPTION(WITH_TBB "Include Intel TBB support" OFF IF (NOT IOS AND NOT WINRT) ) OCV_OPTION(WITH_TBB "Include Intel TBB support" OFF IF (NOT IOS AND NOT WINRT) )
OCV_OPTION(WITH_HPX "Include Ste||ar Group HPX support" OFF)
OCV_OPTION(WITH_OPENMP "Include OpenMP support" OFF) OCV_OPTION(WITH_OPENMP "Include OpenMP support" OFF)
OCV_OPTION(WITH_PTHREADS_PF "Use pthreads-based parallel_for" ON IF (NOT WIN32 OR MINGW) ) OCV_OPTION(WITH_PTHREADS_PF "Use pthreads-based parallel_for" ON IF (NOT WIN32 OR MINGW) )
OCV_OPTION(WITH_TIFF "Include TIFF support" ON IF (NOT IOS) ) OCV_OPTION(WITH_TIFF "Include TIFF support" ON IF (NOT IOS) )
@ -1353,6 +1354,7 @@ endif()
# Order is similar to CV_PARALLEL_FRAMEWORK in core/src/parallel.cpp # Order is similar to CV_PARALLEL_FRAMEWORK in core/src/parallel.cpp
ocv_build_features_string(parallel_status EXCLUSIVE ocv_build_features_string(parallel_status EXCLUSIVE
IF HAVE_TBB THEN "TBB (ver ${TBB_VERSION_MAJOR}.${TBB_VERSION_MINOR} interface ${TBB_INTERFACE_VERSION})" IF HAVE_TBB THEN "TBB (ver ${TBB_VERSION_MAJOR}.${TBB_VERSION_MINOR} interface ${TBB_INTERFACE_VERSION})"
IF HAVE_HPX THEN "HPX"
IF HAVE_OPENMP THEN "OpenMP" IF HAVE_OPENMP THEN "OpenMP"
IF HAVE_GCD THEN "GCD" IF HAVE_GCD THEN "GCD"
IF WINRT OR HAVE_CONCURRENCY THEN "Concurrency" IF WINRT OR HAVE_CONCURRENCY THEN "Concurrency"

@ -7,6 +7,13 @@ if(WITH_TBB)
include("${OpenCV_SOURCE_DIR}/cmake/OpenCVDetectTBB.cmake") include("${OpenCV_SOURCE_DIR}/cmake/OpenCVDetectTBB.cmake")
endif(WITH_TBB) endif(WITH_TBB)
# --- HPX ---
if(WITH_HPX)
find_package(HPX REQUIRED)
ocv_include_directories(${HPX_INCLUDE_DIRS})
set(HAVE_HPX TRUE)
endif(WITH_HPX)
# --- IPP --- # --- IPP ---
if(WITH_IPP) if(WITH_IPP)
include("${OpenCV_SOURCE_DIR}/cmake/OpenCVFindIPP.cmake") include("${OpenCV_SOURCE_DIR}/cmake/OpenCVFindIPP.cmake")

@ -1135,6 +1135,11 @@ function(ocv_add_perf_tests)
ocv_target_link_libraries(${the_target} LINK_PRIVATE ${perf_deps} ${OPENCV_MODULE_${the_module}_DEPS} ${OPENCV_LINKER_LIBS} ${OPENCV_PERF_${the_module}_DEPS}) ocv_target_link_libraries(${the_target} LINK_PRIVATE ${perf_deps} ${OPENCV_MODULE_${the_module}_DEPS} ${OPENCV_LINKER_LIBS} ${OPENCV_PERF_${the_module}_DEPS})
add_dependencies(opencv_perf_tests ${the_target}) add_dependencies(opencv_perf_tests ${the_target})
if(HAVE_HPX)
message("Linking HPX to Perf test of module ${name}")
ocv_target_link_libraries(${the_target} LINK_PRIVATE "${HPX_LIBRARIES}")
endif()
set_target_properties(${the_target} PROPERTIES LABELS "${OPENCV_MODULE_${the_module}_LABEL};PerfTest") set_target_properties(${the_target} PROPERTIES LABELS "${OPENCV_MODULE_${the_module}_LABEL};PerfTest")
set_source_files_properties(${OPENCV_PERF_${the_module}_SOURCES} ${${the_target}_pch} set_source_files_properties(${OPENCV_PERF_${the_module}_SOURCES} ${${the_target}_pch}
PROPERTIES LABELS "${OPENCV_MODULE_${the_module}_LABEL};PerfTest") PROPERTIES LABELS "${OPENCV_MODULE_${the_module}_LABEL};PerfTest")
@ -1220,6 +1225,11 @@ function(ocv_add_accuracy_tests)
ocv_target_link_libraries(${the_target} LINK_PRIVATE ${test_deps} ${OPENCV_MODULE_${the_module}_DEPS} ${OPENCV_LINKER_LIBS} ${OPENCV_TEST_${the_module}_DEPS}) ocv_target_link_libraries(${the_target} LINK_PRIVATE ${test_deps} ${OPENCV_MODULE_${the_module}_DEPS} ${OPENCV_LINKER_LIBS} ${OPENCV_TEST_${the_module}_DEPS})
add_dependencies(opencv_tests ${the_target}) add_dependencies(opencv_tests ${the_target})
if(HAVE_HPX)
message("Linking HPX to Perf test of module ${name}")
ocv_target_link_libraries(${the_target} LINK_PRIVATE "${HPX_LIBRARIES}")
endif()
set_target_properties(${the_target} PROPERTIES LABELS "${OPENCV_MODULE_${the_module}_LABEL};AccuracyTest") set_target_properties(${the_target} PROPERTIES LABELS "${OPENCV_MODULE_${the_module}_LABEL};AccuracyTest")
set_source_files_properties(${OPENCV_TEST_${the_module}_SOURCES} ${${the_target}_pch} set_source_files_properties(${OPENCV_TEST_${the_module}_SOURCES} ${${the_target}_pch}
PROPERTIES LABELS "${OPENCV_MODULE_${the_module}_LABEL};AccuracyTest") PROPERTIES LABELS "${OPENCV_MODULE_${the_module}_LABEL};AccuracyTest")

@ -174,6 +174,9 @@
/* Intel Threading Building Blocks */ /* Intel Threading Building Blocks */
#cmakedefine HAVE_TBB #cmakedefine HAVE_TBB
/* Ste||ar Group High Performance ParallelX */
#cmakedefine HAVE_HPX
/* TIFF codec */ /* TIFF codec */
#cmakedefine HAVE_TIFF #cmakedefine HAVE_TIFF

@ -1,3 +1,7 @@
#include "perf_precomp.hpp" #include "perf_precomp.hpp"
#if defined(HAVE_HPX)
#include <hpx/hpx_main.hpp>
#endif
CV_PERF_TEST_MAIN(calib3d) CV_PERF_TEST_MAIN(calib3d)

@ -3,4 +3,8 @@
// of this distribution and at http://opencv.org/license.html. // of this distribution and at http://opencv.org/license.html.
#include "test_precomp.hpp" #include "test_precomp.hpp"
#if defined(HAVE_HPX)
#include <hpx/hpx_main.hpp>
#endif
CV_TEST_MAIN("") CV_TEST_MAIN("")

@ -77,6 +77,10 @@ ocv_target_link_libraries(${the_module} LINK_PRIVATE
"${OPENCV_HAL_LINKER_LIBS}" "${OPENCV_HAL_LINKER_LIBS}"
) )
if(HAVE_HPX)
ocv_target_link_libraries(${the_module} LINK_PRIVATE "${HPX_LIBRARIES}")
endif()
if(HAVE_CUDA) if(HAVE_CUDA)
ocv_target_compile_definitions(${the_module} PUBLIC OPENCV_TRAITS_ENABLE_DEPRECATED) ocv_target_compile_definitions(${the_module} PUBLIC OPENCV_TRAITS_ENABLE_DEPRECATED)
endif() endif()

@ -5,4 +5,8 @@
# endif # endif
#endif #endif
#if defined(HAVE_HPX)
#include <hpx/hpx_main.hpp>
#endif
CV_PERF_TEST_MAIN(core) CV_PERF_TEST_MAIN(core)

@ -79,6 +79,7 @@
/* IMPORTANT: always use the same order of defines /* IMPORTANT: always use the same order of defines
- HAVE_TBB - 3rdparty library, should be explicitly enabled - HAVE_TBB - 3rdparty library, should be explicitly enabled
- HAVE_HPX - 3rdparty library, should be explicitly enabled
- HAVE_OPENMP - integrated to compiler, should be explicitly enabled - HAVE_OPENMP - integrated to compiler, should be explicitly enabled
- HAVE_GCD - system wide, used automatically (APPLE only) - HAVE_GCD - system wide, used automatically (APPLE only)
- WINRT - system wide, used automatically (Windows RT only) - WINRT - system wide, used automatically (Windows RT only)
@ -95,6 +96,16 @@
#endif #endif
#undef min #undef min
#undef max #undef max
#elif defined HAVE_HPX
#include <hpx/parallel/algorithms/for_loop.hpp>
#include <hpx/parallel/execution.hpp>
//
#include <hpx/hpx_start.hpp>
#include <hpx/hpx_suspend.hpp>
#include <hpx/include/apply.hpp>
#include <hpx/util/yield_while.hpp>
#include <hpx/include/threadmanager.hpp>
#elif defined HAVE_OPENMP #elif defined HAVE_OPENMP
#include <omp.h> #include <omp.h>
#elif defined HAVE_GCD #elif defined HAVE_GCD
@ -109,6 +120,8 @@
#if defined HAVE_TBB #if defined HAVE_TBB
# define CV_PARALLEL_FRAMEWORK "tbb" # define CV_PARALLEL_FRAMEWORK "tbb"
#elif defined HAVE_HPX
# define CV_PARALLEL_FRAMEWORK "hpx"
#elif defined HAVE_OPENMP #elif defined HAVE_OPENMP
# define CV_PARALLEL_FRAMEWORK "openmp" # define CV_PARALLEL_FRAMEWORK "openmp"
#elif defined HAVE_GCD #elif defined HAVE_GCD
@ -377,6 +390,26 @@ namespace
tbb::parallel_for(tbb::blocked_range<int>(range.start, range.end), *this); tbb::parallel_for(tbb::blocked_range<int>(range.start, range.end), *this);
} }
}; };
#elif defined HAVE_HPX
class ProxyLoopBody : public ParallelLoopBodyWrapper
{
public:
ProxyLoopBody(ParallelLoopBodyWrapperContext& ctx_)
: ParallelLoopBodyWrapper(ctx_)
{}
void operator ()() const // run parallel job
{
cv::Range stripeRange = this->stripeRange();
hpx::parallel::for_loop(
hpx::parallel::execution::par,
stripeRange.start, stripeRange.end,
[&](const int &i) { ;
this->ParallelLoopBodyWrapper::operator()(
cv::Range(i, i + 1));
});
}
};
#elif defined HAVE_GCD #elif defined HAVE_GCD
typedef ParallelLoopBodyWrapper ProxyLoopBody; typedef ParallelLoopBodyWrapper ProxyLoopBody;
static void block_function(void* context, size_t index) static void block_function(void* context, size_t index)
@ -409,6 +442,8 @@ static int numThreads = -1;
#else #else
static tbb::task_scheduler_init tbbScheduler(tbb::task_scheduler_init::deferred); static tbb::task_scheduler_init tbbScheduler(tbb::task_scheduler_init::deferred);
#endif #endif
#elif defined HAVE_HPX
// nothing for HPX
#elif defined HAVE_OPENMP #elif defined HAVE_OPENMP
static int numThreadsMax = omp_get_max_threads(); static int numThreadsMax = omp_get_max_threads();
#elif defined HAVE_GCD #elif defined HAVE_GCD
@ -508,6 +543,9 @@ static void parallel_for_impl(const cv::Range& range, const cv::ParallelLoopBody
pbody(); pbody();
#endif #endif
#elif defined HAVE_HPX
pbody();
#elif defined HAVE_OPENMP #elif defined HAVE_OPENMP
#pragma omp parallel for schedule(dynamic) num_threads(numThreads > 0 ? numThreads : numThreadsMax) #pragma omp parallel for schedule(dynamic) num_threads(numThreads > 0 ? numThreads : numThreadsMax)
@ -579,6 +617,9 @@ int cv::getNumThreads(void)
: tbb::task_scheduler_init::default_num_threads(); : tbb::task_scheduler_init::default_num_threads();
#endif #endif
#elif defined HAVE_HPX
return numThreads;
#elif defined HAVE_OPENMP #elif defined HAVE_OPENMP
return numThreads > 0 return numThreads > 0
@ -653,6 +694,9 @@ void cv::setNumThreads( int threads_ )
if(threads > 0) tbbScheduler.initialize(threads); if(threads > 0) tbbScheduler.initialize(threads);
#endif #endif
#elif defined HAVE_HPX
return; // nothing needed as numThreads is used
#elif defined HAVE_OPENMP #elif defined HAVE_OPENMP
return; // nothing needed as num_threads clause is used in #pragma omp parallel for return; // nothing needed as num_threads clause is used in #pragma omp parallel for
@ -702,6 +746,8 @@ int cv::getThreadNum(void)
#else #else
return 0; return 0;
#endif #endif
#elif defined HAVE_HPX
return (int)(hpx::get_num_worker_threads());
#elif defined HAVE_OPENMP #elif defined HAVE_OPENMP
return omp_get_thread_num(); return omp_get_thread_num();
#elif defined HAVE_GCD #elif defined HAVE_GCD

@ -3,4 +3,8 @@
// of this distribution and at http://opencv.org/license.html. // of this distribution and at http://opencv.org/license.html.
#include "test_precomp.hpp" #include "test_precomp.hpp"
#if defined(HAVE_HPX)
#include <hpx/hpx_main.hpp>
#endif
CV_TEST_MAIN("cv") CV_TEST_MAIN("cv")

@ -7,6 +7,10 @@ static const char* extraTestDataPath =
getenv("OPENCV_DNN_TEST_DATA_PATH"); getenv("OPENCV_DNN_TEST_DATA_PATH");
#endif #endif
#if defined(HAVE_HPX)
#include <hpx/hpx_main.hpp>
#endif
CV_PERF_TEST_MAIN(dnn, CV_PERF_TEST_MAIN(dnn,
extraTestDataPath ? (void)cvtest::addDataSearchPath(extraTestDataPath) : (void)0 extraTestDataPath ? (void)cvtest::addDataSearchPath(extraTestDataPath) : (void)0
) )

@ -7,6 +7,10 @@ static const char* extraTestDataPath =
getenv("OPENCV_DNN_TEST_DATA_PATH"); getenv("OPENCV_DNN_TEST_DATA_PATH");
#endif #endif
#if defined(HAVE_HPX)
#include <hpx/hpx_main.hpp>
#endif
CV_TEST_MAIN("", CV_TEST_MAIN("",
extraTestDataPath ? (void)cvtest::addDataSearchPath(extraTestDataPath) : (void)0 extraTestDataPath ? (void)cvtest::addDataSearchPath(extraTestDataPath) : (void)0
) )

@ -1,3 +1,7 @@
#include "perf_precomp.hpp" #include "perf_precomp.hpp"
#if defined(HAVE_HPX)
#include <hpx/hpx_main.hpp>
#endif
CV_PERF_TEST_MAIN(features2d) CV_PERF_TEST_MAIN(features2d)

@ -3,4 +3,8 @@
// of this distribution and at http://opencv.org/license.html. // of this distribution and at http://opencv.org/license.html.
#include "test_precomp.hpp" #include "test_precomp.hpp"
#if defined(HAVE_HPX)
#include <hpx/hpx_main.hpp>
#endif
CV_TEST_MAIN("cv") CV_TEST_MAIN("cv")

@ -1,3 +1,7 @@
#include "test_precomp.hpp" #include "test_precomp.hpp"
#if defined(HAVE_HPX)
#include <hpx/hpx_main.hpp>
#endif
CV_TEST_MAIN("cv") CV_TEST_MAIN("cv")

@ -3,4 +3,8 @@
// of this distribution and at http://opencv.org/license.html. // of this distribution and at http://opencv.org/license.html.
#include "test_precomp.hpp" #include "test_precomp.hpp"
#if defined(HAVE_HPX)
#include <hpx/hpx_main.hpp>
#endif
CV_TEST_MAIN("highgui") CV_TEST_MAIN("highgui")

@ -3,4 +3,8 @@
// of this distribution and at http://opencv.org/license.html // of this distribution and at http://opencv.org/license.html
#include "perf_precomp.hpp" #include "perf_precomp.hpp"
#if defined(HAVE_HPX)
#include <hpx/hpx_main.hpp>
#endif
CV_PERF_TEST_MAIN(imgcodecs) CV_PERF_TEST_MAIN(imgcodecs)

@ -3,4 +3,8 @@
// of this distribution and at http://opencv.org/license.html // of this distribution and at http://opencv.org/license.html
#include "test_precomp.hpp" #include "test_precomp.hpp"
#if defined(HAVE_HPX)
#include <hpx/hpx_main.hpp>
#endif
CV_TEST_MAIN("highgui") CV_TEST_MAIN("highgui")

@ -3,4 +3,8 @@
// of this distribution and at http://opencv.org/license.html. // of this distribution and at http://opencv.org/license.html.
#include "perf_precomp.hpp" #include "perf_precomp.hpp"
#if defined(HAVE_HPX)
#include <hpx/hpx_main.hpp>
#endif
CV_PERF_TEST_MAIN(imgproc) CV_PERF_TEST_MAIN(imgproc)

@ -3,4 +3,8 @@
// of this distribution and at http://opencv.org/license.html. // of this distribution and at http://opencv.org/license.html.
#include "test_precomp.hpp" #include "test_precomp.hpp"
#if defined(HAVE_HPX)
#include <hpx/hpx_main.hpp>
#endif
CV_TEST_MAIN("cv") CV_TEST_MAIN("cv")

@ -3,4 +3,8 @@
// of this distribution and at http://opencv.org/license.html. // of this distribution and at http://opencv.org/license.html.
#include "test_precomp.hpp" #include "test_precomp.hpp"
#if defined(HAVE_HPX)
#include <hpx/hpx_main.hpp>
#endif
CV_TEST_MAIN("ml") CV_TEST_MAIN("ml")

@ -1,3 +1,7 @@
#include "perf_precomp.hpp" #include "perf_precomp.hpp"
#if defined(HAVE_HPX)
#include <hpx/hpx_main.hpp>
#endif
CV_PERF_TEST_MAIN(objdetect) CV_PERF_TEST_MAIN(objdetect)

@ -3,4 +3,8 @@
// of this distribution and at http://opencv.org/license.html. // of this distribution and at http://opencv.org/license.html.
#include "test_precomp.hpp" #include "test_precomp.hpp"
#if defined(HAVE_HPX)
#include <hpx/hpx_main.hpp>
#endif
CV_TEST_MAIN("cv") CV_TEST_MAIN("cv")

@ -8,4 +8,8 @@ static const char * impls[] = {
"plain" "plain"
}; };
#if defined(HAVE_HPX)
#include <hpx/hpx_main.hpp>
#endif
CV_PERF_TEST_MAIN_WITH_IMPLS(photo, impls, perf::printCudaInfo()) CV_PERF_TEST_MAIN_WITH_IMPLS(photo, impls, perf::printCudaInfo())

@ -3,4 +3,8 @@
// of this distribution and at http://opencv.org/license.html. // of this distribution and at http://opencv.org/license.html.
#include "test_precomp.hpp" #include "test_precomp.hpp"
#if defined(HAVE_HPX)
#include <hpx/hpx_main.hpp>
#endif
CV_TEST_MAIN("cv") CV_TEST_MAIN("cv")

@ -3,4 +3,8 @@
// of this distribution and at http://opencv.org/license.html. // of this distribution and at http://opencv.org/license.html.
#include "test_precomp.hpp" #include "test_precomp.hpp"
#if defined(HAVE_HPX)
#include <hpx/hpx_main.hpp>
#endif
CV_TEST_MAIN("cv") CV_TEST_MAIN("cv")

@ -1,3 +1,7 @@
#include "perf_precomp.hpp" #include "perf_precomp.hpp"
#if defined(HAVE_HPX)
#include <hpx/hpx_main.hpp>
#endif
CV_PERF_TEST_MAIN(stitching) CV_PERF_TEST_MAIN(stitching)

@ -3,4 +3,8 @@
// of this distribution and at http://opencv.org/license.html. // of this distribution and at http://opencv.org/license.html.
#include "test_precomp.hpp" #include "test_precomp.hpp"
#if defined(HAVE_HPX)
#include <hpx/hpx_main.hpp>
#endif
CV_TEST_MAIN(".") CV_TEST_MAIN(".")

@ -51,4 +51,8 @@ static const char * impls[] = {
"plain" "plain"
}; };
#if defined(HAVE_HPX)
#include <hpx/hpx_main.hpp>
#endif
CV_PERF_TEST_MAIN_WITH_IMPLS(superres, impls, printCudaInfo()) CV_PERF_TEST_MAIN_WITH_IMPLS(superres, impls, printCudaInfo())

@ -42,4 +42,8 @@
#include "test_precomp.hpp" #include "test_precomp.hpp"
#if defined(HAVE_HPX)
#include <hpx/hpx_main.hpp>
#endif
CV_TEST_MAIN("superres") CV_TEST_MAIN("superres")

@ -1,3 +1,7 @@
#include "perf_precomp.hpp" #include "perf_precomp.hpp"
#if defined(HAVE_HPX)
#include <hpx/hpx_main.hpp>
#endif
CV_PERF_TEST_MAIN(video) CV_PERF_TEST_MAIN(video)

@ -3,4 +3,8 @@
// of this distribution and at http://opencv.org/license.html. // of this distribution and at http://opencv.org/license.html.
#include "test_precomp.hpp" #include "test_precomp.hpp"
#if defined(HAVE_HPX)
#include <hpx/hpx_main.hpp>
#endif
CV_TEST_MAIN("cv") CV_TEST_MAIN("cv")

@ -3,4 +3,8 @@
// of this distribution and at http://opencv.org/license.html // of this distribution and at http://opencv.org/license.html
#include "perf_precomp.hpp" #include "perf_precomp.hpp"
#if defined(HAVE_HPX)
#include <hpx/hpx_main.hpp>
#endif
CV_PERF_TEST_MAIN(videoio) CV_PERF_TEST_MAIN(videoio)

@ -3,4 +3,8 @@
// of this distribution and at http://opencv.org/license.html. // of this distribution and at http://opencv.org/license.html.
#include "test_precomp.hpp" #include "test_precomp.hpp"
#if defined(HAVE_HPX)
#include <hpx/hpx_main.hpp>
#endif
CV_TEST_MAIN("highgui") CV_TEST_MAIN("highgui")

@ -4,4 +4,8 @@
#include "test_precomp.hpp" #include "test_precomp.hpp"
#if defined(HAVE_HPX)
#include <hpx/hpx_main.hpp>
#endif
CV_TEST_MAIN("cv") CV_TEST_MAIN("cv")

Loading…
Cancel
Save