Commit 186b1fc6 authored by Alexey Spizhevoy's avatar Alexey Spizhevoy

refactored gpu module

parent 90ae1e3a
...@@ -57,6 +57,9 @@ CV_EXPORTS int cv::gpu::getNumberOfSMs(int /*device*/) { throw_nogpu(); return 0 ...@@ -57,6 +57,9 @@ CV_EXPORTS int cv::gpu::getNumberOfSMs(int /*device*/) { throw_nogpu(); return 0
CV_EXPORTS void cv::gpu::getGpuMemInfo(size_t& /*free*/, size_t& /*total*/) { throw_nogpu(); } CV_EXPORTS void cv::gpu::getGpuMemInfo(size_t& /*free*/, size_t& /*total*/) { throw_nogpu(); }
CV_EXPORTS bool cv::gpu::hasNativeDoubleSupport(int /*device*/) { throw_nogpu(); return false; } CV_EXPORTS bool cv::gpu::hasNativeDoubleSupport(int /*device*/) { throw_nogpu(); return false; }
CV_EXPORTS bool cv::gpu::hasAtomicsSupport(int /*device*/) { throw_nogpu(); return false; } CV_EXPORTS bool cv::gpu::hasAtomicsSupport(int /*device*/) { throw_nogpu(); return false; }
CV_EXPORTS bool cv::gpu::ptxVersionIs(int major, int minor) { throw_nogpu(); return false; }
CV_EXPORTS bool cv::gpu::ptxVersionIsLessOrEqual(int major, int minor) { throw_nogpu(); return false; }
CV_EXPORTS bool cv::gpu::ptxVersionIsGreaterOrEqual(int major, int minor) { throw_nogpu(); return false; }
#else /* !defined (HAVE_CUDA) */ #else /* !defined (HAVE_CUDA) */
...@@ -133,33 +136,6 @@ CV_EXPORTS bool cv::gpu::hasAtomicsSupport(int device) ...@@ -133,33 +136,6 @@ CV_EXPORTS bool cv::gpu::hasAtomicsSupport(int device)
namespace namespace
{ {
struct ComparerEqual
{
bool operator()(int lhs1, int lhs2, int rhs1, int rhs2) const
{
return lhs1 == rhs1 && lhs2 == rhs2;
}
};
struct ComparerLessOrEqual
{
bool operator()(int lhs1, int lhs2, int rhs1, int rhs2) const
{
return lhs1 < rhs1 || (lhs1 == rhs1 && lhs2 <= rhs2);
}
};
struct ComparerGreaterOrEqual
{
bool operator()(int lhs1, int lhs2, int rhs1, int rhs2) const
{
return lhs1 > rhs1 || (lhs1 == rhs1 && lhs2 >= rhs2);
}
};
template <typename Comparer> template <typename Comparer>
bool checkPtxVersion(int major, int minor, Comparer cmp) bool checkPtxVersion(int major, int minor, Comparer cmp)
{ {
...@@ -194,18 +170,39 @@ namespace ...@@ -194,18 +170,39 @@ namespace
CV_EXPORTS bool cv::gpu::ptxVersionIs(int major, int minor) CV_EXPORTS bool cv::gpu::ptxVersionIs(int major, int minor)
{ {
struct ComparerEqual
{
bool operator()(int lhs1, int lhs2, int rhs1, int rhs2) const
{
return lhs1 == rhs1 && lhs2 == rhs2;
}
};
return checkPtxVersion(major, minor, ComparerEqual()); return checkPtxVersion(major, minor, ComparerEqual());
} }
CV_EXPORTS bool cv::gpu::ptxVersionIsLessOrEqual(int major, int minor) CV_EXPORTS bool cv::gpu::ptxVersionIsLessOrEqual(int major, int minor)
{ {
struct ComparerLessOrEqual
{
bool operator()(int lhs1, int lhs2, int rhs1, int rhs2) const
{
return lhs1 < rhs1 || (lhs1 == rhs1 && lhs2 <= rhs2);
}
};
return checkPtxVersion(major, minor, ComparerLessOrEqual()); return checkPtxVersion(major, minor, ComparerLessOrEqual());
} }
CV_EXPORTS bool cv::gpu::ptxVersionIsGreaterOrEqual(int major, int minor) CV_EXPORTS bool cv::gpu::ptxVersionIsGreaterOrEqual(int major, int minor)
{ {
struct ComparerGreaterOrEqual
{
bool operator()(int lhs1, int lhs2, int rhs1, int rhs2) const
{
return lhs1 > rhs1 || (lhs1 == rhs1 && lhs2 >= rhs2);
}
};
return checkPtxVersion(major, minor, ComparerGreaterOrEqual()); return checkPtxVersion(major, minor, ComparerGreaterOrEqual());
} }
......
...@@ -234,21 +234,21 @@ struct CV_GpuMatchTemplateFindPatternInBlackTest: CvTest ...@@ -234,21 +234,21 @@ struct CV_GpuMatchTemplateFindPatternInBlackTest: CvTest
{ {
try try
{ {
Mat image = imread(std::string(ts->get_data_path()) + "matchtemplate/black.jpg"); Mat image = imread(std::string(ts->get_data_path()) + "matchtemplate/black.png");
if (image.empty()) if (image.empty())
{ {
ts->printf(CvTS::CONSOLE, "can't open file '%s'", (std::string(ts->get_data_path()) ts->printf(CvTS::CONSOLE, "can't open file '%s'", (std::string(ts->get_data_path())
+ "matchtemplate/black.jpg").c_str()); + "matchtemplate/black.png").c_str());
ts->set_failed_test_info(CvTS::FAIL_INVALID_TEST_DATA); ts->set_failed_test_info(CvTS::FAIL_MISSING_TEST_DATA);
return; return;
} }
Mat pattern = imread(std::string(ts->get_data_path()) + "matchtemplate/cat.jpg"); Mat pattern = imread(std::string(ts->get_data_path()) + "matchtemplate/cat.png");
if (pattern.empty()) if (pattern.empty())
{ {
ts->printf(CvTS::CONSOLE, "can't open file '%s'", (std::string(ts->get_data_path()) ts->printf(CvTS::CONSOLE, "can't open file '%s'", (std::string(ts->get_data_path())
+ "matchtemplate/cat.jpg").c_str()); + "matchtemplate/cat.png").c_str());
ts->set_failed_test_info(CvTS::FAIL_INVALID_TEST_DATA); ts->set_failed_test_info(CvTS::FAIL_MISSING_TEST_DATA);
return; return;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment