Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
自由之枫~
opencv
提交
327b98eb
O
opencv
项目概览
自由之枫~
/
opencv
与 Fork 源项目一致
Fork自
OpenCV / opencv
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
O
opencv
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
327b98eb
编写于
10月 01, 2021
作者:
A
Alexander Alekhin
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #20794 from alalek:dnn_ocl_fix_conv_dwconv_workgroup
上级
a0cf8c32
f977d10a
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
16 addition
and
10 deletion
+16
-10
modules/dnn/src/ocl4dnn/src/ocl4dnn_conv_spatial.cpp
modules/dnn/src/ocl4dnn/src/ocl4dnn_conv_spatial.cpp
+9
-6
modules/dnn/src/opencl/conv_layer_spatial.cl
modules/dnn/src/opencl/conv_layer_spatial.cl
+7
-4
未找到文件。
modules/dnn/src/ocl4dnn/src/ocl4dnn_conv_spatial.cpp
浏览文件 @
327b98eb
...
...
@@ -1034,12 +1034,15 @@ bool OCL4DNNConvSpatial<float>::convolve(const UMat &bottom, UMat &top,
kernel
.
set
(
argIdx
++
,
(
uint16_t
)
output_w_
);
kernel
.
set
(
argIdx
++
,
(
uint16_t
)
output_h_
);
size_t
global_size
[
3
];
global_size
[
0
]
=
output_w_
;
global_size
[
1
]
=
output_h_
;
global_size
[
2
]
=
num_output_
*
num_
;
if
(
!
kernel
.
run_
(
3
,
global_size
,
NULL
,
false
))
size_t
wgs
=
kernel
.
workGroupSize
();
if
(
!
wgs
)
{
CV_LOG_ERROR
(
NULL
,
"DNN/OpenCL: Can't query workGroupSize of DWCONV kernel"
);
return
false
;
}
size_t
lws
[
1
]
=
{
wgs
};
size_t
gws
[
1
]
=
{
roundUp
((
size_t
)
output_w_
*
output_h_
*
num_output_
*
num_
,
(
unsigned
)
lws
[
0
])
};
if
(
!
kernel
.
run_
(
1
,
gws
,
lws
,
false
))
{
CV_LOG_ERROR
(
NULL
,
"DNN/OpenCL: DWCONV kernel run failed"
);
return
false
;
...
...
modules/dnn/src/opencl/conv_layer_spatial.cl
浏览文件 @
327b98eb
...
...
@@ -1850,10 +1850,13 @@ __kernel void DWCONV(
const
ushort
output_width,
const
ushort
output_height
)
{
__global
Dtype*
convolved_image
=
convolved_image_base
+
convolved_image_offset
;
const
int
outputX
=
get_global_id
(
0
)
;
const
int
outputY
=
get_global_id
(
1
)
;
const
int
outputZ
=
get_global_id
(
2
)
;
if
(
outputX
<
output_width
&&
outputY
<
output_height
)
const
int
out_idx
=
get_global_id
(
0
)
; // 1D task layout: [output_width * output_height * OUTPUT_Z]
const
int
plane_size
=
output_width
*
output_height
;
const
int
out_plane_idx
=
out_idx
%
plane_size
;
const
int
outputZ
=
out_idx
/
plane_size
;
const
int
outputY
=
out_plane_idx
/
output_width
;
const
int
outputX
=
out_plane_idx
%
output_width
;
if
(
outputZ
<
OUTPUT_Z
)
{
Dtype
sum
=
0.
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录