Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
MegEngine 天元
MegEngine
提交
f582c192
MegEngine
项目概览
MegEngine 天元
/
MegEngine
接近 2 年 前同步成功
通知
414
Star
4708
Fork
583
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
MegEngine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
f582c192
编写于
4月 23, 2020
作者:
M
Megvii Engine Team
提交者:
Xinran Xu
5月 06, 2020
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix(dnn/test): fix dnn assert and format code
GitOrigin-RevId: c684210c4281f661ba423200556887a27b53e4a8
上级
9cc7b32e
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
22 addition
and
22 deletion
+22
-22
dnn/test/cuda/param_pack.cpp
dnn/test/cuda/param_pack.cpp
+22
-22
未找到文件。
dnn/test/cuda/param_pack.cpp
浏览文件 @
f582c192
...
...
@@ -17,9 +17,9 @@ using namespace test;
namespace
{
template
<
class
T
>
template
<
class
T
>
std
::
vector
<
int32_t
>
create_offsets
(
const
TensorShapeArray
&
shapes
,
size_t
alignment
)
{
size_t
alignment
)
{
size_t
dtype_size
=
sizeof
(
T
);
if
(
alignment
<
dtype_size
)
alignment
=
dtype_size
;
...
...
@@ -41,14 +41,15 @@ std::vector<int32_t> create_offsets(const TensorShapeArray& shapes,
return
offsets
;
}
template
<
class
T
>
std
::
vector
<
T
>
create_pack
(
size_t
pack_size
,
const
std
::
vector
<
int32_t
>&
offsets
,
const
std
::
vector
<
std
::
vector
<
T
>>&
ptr
)
{
assert
(
pack_size
==
offsets
.
back
());
template
<
class
T
>
std
::
vector
<
T
>
create_pack
(
size_t
pack_size
,
const
std
::
vector
<
int32_t
>&
offsets
,
const
std
::
vector
<
std
::
vector
<
T
>>&
ptr
)
{
megdnn_assert
(
pack_size
==
static_cast
<
size_t
>
(
offsets
.
back
()));
std
::
vector
<
T
>
data
(
pack_size
,
0
);
for
(
size_t
i
=
0
;
i
*
2
<
offsets
.
size
();
++
i
)
{
size_t
begin
=
offsets
[
i
*
2
],
end
=
offsets
[
i
*
2
+
1
];
for
(
size_t
j
=
0
;
j
<
end
-
begin
;
j
++
)
size_t
begin
=
offsets
[
i
*
2
],
end
=
offsets
[
i
*
2
+
1
];
for
(
size_t
j
=
0
;
j
<
end
-
begin
;
j
++
)
data
[
begin
+
j
]
=
ptr
[
i
][
j
];
}
return
data
;
...
...
@@ -79,25 +80,23 @@ T* create_device_data(Handle* handle, const T* data, size_t size) {
template
<
class
T
>
void
test_param_pack_concat
(
Handle
*
handle
,
const
TensorShapeArray
&
shapes
,
DType
type
)
{
DType
type
)
{
auto
concat
=
handle
->
create_operator
<
ParamPackConcat
>
();
size_t
nr_params
=
shapes
.
size
();
std
::
vector
<
T
*>
param_ptrs
;
std
::
vector
<
std
::
vector
<
T
>>
params
=
create_params
<
T
>
(
nr_params
,
shapes
);
std
::
vector
<
std
::
vector
<
T
>>
params
=
create_params
<
T
>
(
nr_params
,
shapes
);
for
(
size_t
i
=
0
;
i
<
nr_params
;
++
i
)
{
param_ptrs
.
push_back
(
create_device_data
<
T
>
(
handle
,
params
[
i
].
data
(),
shapes
[
i
].
total_nr_elems
()));
param_ptrs
.
push_back
(
create_device_data
<
T
>
(
handle
,
params
[
i
].
data
(),
shapes
[
i
].
total_nr_elems
()));
}
std
::
vector
<
int32_t
>
offsets
=
create_offsets
<
T
>
(
shapes
,
handle
->
alignment_requirement
());
size_t
pack_size
=
offsets
.
back
();
int32_t
*
offsets_gpu
=
create_device_data
<
int32_t
>
(
handle
,
offsets
.
data
(),
offsets
.
size
());
int32_t
*
offsets_gpu
=
create_device_data
<
int32_t
>
(
handle
,
offsets
.
data
(),
offsets
.
size
());
std
::
vector
<
T
>
expected_pack
=
create_pack
<
T
>
(
pack_size
,
offsets
,
params
);
std
::
vector
<
T
>
expected_pack
=
create_pack
<
T
>
(
pack_size
,
offsets
,
params
);
T
*
pack_gpu
=
create_device_data
<
T
>
(
handle
,
nullptr
,
expected_pack
.
size
());
TensorLayout
dst_layout
({
pack_size
},
type
);
...
...
@@ -106,17 +105,18 @@ void test_param_pack_concat(Handle* handle, const TensorShapeArray& shapes,
TensorLayout
offsets_layout
({
offsets
.
size
()},
dtype
::
Int32
());
TensorND
offsets_tensor
(
offsets_gpu
,
offsets_layout
);
test
::
WorkspaceWrapper
workspace
(
handle
,
concat
->
get_workspace_in_bytes
(
shapes
,
offsets_layout
,
{
pack_size
}));
test
::
WorkspaceWrapper
workspace
(
handle
,
concat
->
get_workspace_in_bytes
(
shapes
,
offsets_layout
,
{
pack_size
}));
TensorND
src_tensor
(
param_ptrs
.
data
(),
TensorLayout
({
nr_params
},
dtype
::
Int32
()));
TensorLayout
({
nr_params
},
dtype
::
Int32
()));
concat
->
exec
(
src_tensor
,
offsets_tensor
,
dst_tensor
,
workspace
.
workspace
());
// check
T
*
actual_pack
=
static_cast
<
T
*>
(
malloc
(
pack_size
*
sizeof
(
T
)));
test
::
megdnn_memcpy_D2H
(
handle
,
actual_pack
,
pack_gpu
,
sizeof
(
T
)
*
pack_size
);
test
::
megdnn_memcpy_D2H
(
handle
,
actual_pack
,
pack_gpu
,
sizeof
(
T
)
*
pack_size
);
for
(
size_t
i
=
0
;
i
<
pack_size
;
++
i
)
{
ASSERT_EQ
(
actual_pack
[
i
],
expected_pack
[
i
]);
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录