Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Opencv
提交
d9daa0cb
O
Opencv
项目概览
Greenplum
/
Opencv
11 个月 前同步成功
通知
7
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
O
Opencv
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
d9daa0cb
编写于
6月 19, 2014
作者:
A
Alexander Alekhin
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
ocl: added runtime flags for debugging
上级
acebfcd2
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
59 addition
and
10 deletion
+59
-10
modules/core/include/opencv2/core/ocl.hpp
modules/core/include/opencv2/core/ocl.hpp
+3
-0
modules/core/src/arithm.cpp
modules/core/src/arithm.cpp
+3
-3
modules/core/src/ocl.cpp
modules/core/src/ocl.cpp
+47
-1
modules/core/src/stat.cpp
modules/core/src/stat.cpp
+6
-6
未找到文件。
modules/core/include/opencv2/core/ocl.hpp
浏览文件 @
d9daa0cb
...
...
@@ -636,6 +636,9 @@ protected:
CV_EXPORTS
MatAllocator
*
getOpenCLAllocator
();
CV_EXPORTS_W
bool
isPerformanceCheckBypassed
();
#define OCL_PERFORMANCE_CHECK(condition) (cv::ocl::isPerformanceCheckBypassed() || (condition))
}}
#endif
modules/core/src/arithm.cpp
浏览文件 @
d9daa0cb
...
...
@@ -1501,7 +1501,7 @@ static void arithm_op(InputArray _src1, InputArray _src2, OutputArray _dst,
Size
sz1
=
dims1
<=
2
?
psrc1
->
size
()
:
Size
();
Size
sz2
=
dims2
<=
2
?
psrc2
->
size
()
:
Size
();
#ifdef HAVE_OPENCL
bool
use_opencl
=
_dst
.
isUMat
(
)
&&
dims1
<=
2
&&
dims2
<=
2
;
bool
use_opencl
=
OCL_PERFORMANCE_CHECK
(
_dst
.
isUMat
()
)
&&
dims1
<=
2
&&
dims2
<=
2
;
#endif
bool
src1Scalar
=
checkScalar
(
*
psrc1
,
type2
,
kind1
,
kind2
);
bool
src2Scalar
=
checkScalar
(
*
psrc2
,
type1
,
kind2
,
kind1
);
...
...
@@ -2876,7 +2876,7 @@ void cv::compare(InputArray _src1, InputArray _src2, OutputArray _dst, int op)
haveScalar
=
true
;
}
CV_OCL_RUN
(
_src1
.
dims
()
<=
2
&&
_src2
.
dims
()
<=
2
&&
_dst
.
isUMat
(
),
CV_OCL_RUN
(
_src1
.
dims
()
<=
2
&&
_src2
.
dims
()
<=
2
&&
OCL_PERFORMANCE_CHECK
(
_dst
.
isUMat
()
),
ocl_compare
(
_src1
,
_src2
,
_dst
,
op
,
haveScalar
))
int
kind1
=
_src1
.
kind
(),
kind2
=
_src2
.
kind
();
...
...
@@ -3206,7 +3206,7 @@ void cv::inRange(InputArray _src, InputArray _lowerb,
InputArray
_upperb
,
OutputArray
_dst
)
{
CV_OCL_RUN
(
_src
.
dims
()
<=
2
&&
_lowerb
.
dims
()
<=
2
&&
_upperb
.
dims
()
<=
2
&&
_dst
.
isUMat
(
),
_upperb
.
dims
()
<=
2
&&
OCL_PERFORMANCE_CHECK
(
_dst
.
isUMat
()
),
ocl_inRange
(
_src
,
_lowerb
,
_upperb
,
_dst
))
int
skind
=
_src
.
kind
(),
lkind
=
_lowerb
.
kind
(),
ukind
=
_upperb
.
kind
();
...
...
modules/core/src/ocl.cpp
浏览文件 @
d9daa0cb
...
...
@@ -57,6 +57,28 @@
# endif
#endif
// TODO Move to some common place
static
bool
getBoolParameter
(
const
char
*
name
,
bool
defaultValue
)
{
const
char
*
envValue
=
getenv
(
name
);
if
(
envValue
==
NULL
)
{
return
defaultValue
;
}
cv
::
String
value
=
envValue
;
if
(
value
==
"1"
||
value
==
"True"
||
value
==
"true"
||
value
==
"TRUE"
)
{
return
true
;
}
if
(
value
==
"0"
||
value
==
"False"
||
value
==
"false"
||
value
==
"FALSE"
)
{
return
false
;
}
CV_ErrorNoReturn
(
cv
::
Error
::
StsBadArg
,
cv
::
format
(
"Invalid value for %s parameter: %s"
,
name
,
value
.
c_str
()));
}
// TODO Move to some common place
static
size_t
getConfigurationParameterForSize
(
const
char
*
name
,
size_t
defaultValue
)
{
...
...
@@ -1302,10 +1324,22 @@ OCL_FUNC(cl_int, clReleaseEvent, (cl_event event), (event))
#endif
static
bool
isRaiseError
()
{
static
bool
initialized
=
false
;
static
bool
value
=
false
;
if
(
!
initialized
)
{
value
=
getBoolParameter
(
"OPENCV_OPENCL_RAISE_ERROR"
,
false
);
initialized
=
true
;
}
return
value
;
}
#ifdef _DEBUG
#define CV_OclDbgAssert CV_DbgAssert
#else
#define CV_OclDbgAssert(expr)
(void)(expr
)
#define CV_OclDbgAssert(expr)
do { if (isRaiseError()) { CV_Assert(expr); } else { (void)(expr); } } while ((void)0, 0
)
#endif
namespace
cv
{
namespace
ocl
{
...
...
@@ -4695,4 +4729,16 @@ void* Image2D::ptr() const
return
p
?
p
->
handle
:
0
;
}
bool
isPerformanceCheckBypassed
()
{
static
bool
initialized
=
false
;
static
bool
value
=
false
;
if
(
!
initialized
)
{
value
=
getBoolParameter
(
"OPENCV_OPENCL_PERF_CHECK_BYPASS"
,
false
);
initialized
=
true
;
}
return
value
;
}
}}
modules/core/src/stat.cpp
浏览文件 @
d9daa0cb
...
...
@@ -566,7 +566,7 @@ cv::Scalar cv::sum( InputArray _src )
{
#ifdef HAVE_OPENCL
Scalar
_res
;
CV_OCL_RUN_
(
_src
.
isUMat
(
)
&&
_src
.
dims
()
<=
2
,
CV_OCL_RUN_
(
OCL_PERFORMANCE_CHECK
(
_src
.
isUMat
()
)
&&
_src
.
dims
()
<=
2
,
ocl_sum
(
_src
,
_res
,
OCL_OP_SUM
),
_res
)
#endif
...
...
@@ -717,7 +717,7 @@ int cv::countNonZero( InputArray _src )
#ifdef HAVE_OPENCL
int
res
=
-
1
;
CV_OCL_RUN_
(
_src
.
isUMat
(
)
&&
_src
.
dims
()
<=
2
,
CV_OCL_RUN_
(
OCL_PERFORMANCE_CHECK
(
_src
.
isUMat
()
)
&&
_src
.
dims
()
<=
2
,
ocl_countNonZero
(
_src
,
res
),
res
)
#endif
...
...
@@ -1017,7 +1017,7 @@ static bool ocl_meanStdDev( InputArray _src, OutputArray _mean, OutputArray _sdv
void
cv
::
meanStdDev
(
InputArray
_src
,
OutputArray
_mean
,
OutputArray
_sdv
,
InputArray
_mask
)
{
CV_OCL_RUN
(
_src
.
isUMat
(
)
&&
_src
.
dims
()
<=
2
,
CV_OCL_RUN
(
OCL_PERFORMANCE_CHECK
(
_src
.
isUMat
()
)
&&
_src
.
dims
()
<=
2
,
ocl_meanStdDev
(
_src
,
_mean
,
_sdv
,
_mask
))
Mat
src
=
_src
.
getMat
(),
mask
=
_mask
.
getMat
();
...
...
@@ -1558,7 +1558,7 @@ void cv::minMaxIdx(InputArray _src, double* minVal,
CV_Assert
(
(
cn
==
1
&&
(
_mask
.
empty
()
||
_mask
.
type
()
==
CV_8U
))
||
(
cn
>
1
&&
_mask
.
empty
()
&&
!
minIdx
&&
!
maxIdx
)
);
CV_OCL_RUN
(
_src
.
isUMat
(
)
&&
_src
.
dims
()
<=
2
&&
(
_mask
.
empty
()
||
_src
.
size
()
==
_mask
.
size
()),
CV_OCL_RUN
(
OCL_PERFORMANCE_CHECK
(
_src
.
isUMat
()
)
&&
_src
.
dims
()
<=
2
&&
(
_mask
.
empty
()
||
_src
.
size
()
==
_mask
.
size
()),
ocl_minMaxIdx
(
_src
,
minVal
,
maxVal
,
minIdx
,
maxIdx
,
_mask
))
Mat
src
=
_src
.
getMat
(),
mask
=
_mask
.
getMat
();
...
...
@@ -2218,7 +2218,7 @@ double cv::norm( InputArray _src, int normType, InputArray _mask )
#ifdef HAVE_OPENCL
double
_result
=
0
;
CV_OCL_RUN_
(
_src
.
isUMat
(
)
&&
_src
.
dims
()
<=
2
,
CV_OCL_RUN_
(
OCL_PERFORMANCE_CHECK
(
_src
.
isUMat
()
)
&&
_src
.
dims
()
<=
2
,
ocl_norm
(
_src
,
normType
,
_mask
,
_result
),
_result
)
#endif
...
...
@@ -2578,7 +2578,7 @@ double cv::norm( InputArray _src1, InputArray _src2, int normType, InputArray _m
#ifdef HAVE_OPENCL
double
_result
=
0
;
CV_OCL_RUN_
(
_src1
.
isUMat
(
),
CV_OCL_RUN_
(
OCL_PERFORMANCE_CHECK
(
_src1
.
isUMat
()
),
ocl_norm
(
_src1
,
_src2
,
normType
,
_mask
,
_result
),
_result
)
#endif
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录