Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
MegEngine 天元
MegEngine
提交
147dbf8a
MegEngine
项目概览
MegEngine 天元
/
MegEngine
1 年多 前同步成功
通知
403
Star
4705
Fork
582
代码
文件
提交
分支
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看板
提交
147dbf8a
编写于
12月 02, 2020
作者:
M
Megvii Engine Team
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix(test): fix a race condition in TestCudaMemAlloc
GitOrigin-RevId: 99468a7ae33fe6a1445d361f9e9d9688cd6e63cb
上级
7066ad5b
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
6 addition
and
4 deletion
+6
-4
src/core/test/mem_alloc.cpp
src/core/test/mem_alloc.cpp
+6
-4
未找到文件。
src/core/test/mem_alloc.cpp
浏览文件 @
147dbf8a
...
...
@@ -570,19 +570,20 @@ public:
#endif
using
Callback
=
std
::
function
<
void
()
>
;
void
test_free_mem
(
CompNode
cn0
,
CompNode
cn
1
,
DevicePolicy
*
policy
,
void
test_free_mem
(
CompNode
::
Locator
loc0
,
CompNode
::
Locator
loc
1
,
DevicePolicy
*
policy
,
const
Callback
&
before_run
,
const
Callback
&
after_run
)
{
size_t
tot
,
free
;
policy
->
set_device
(
0
);
policy
->
get_mem_info
(
free
,
tot
);
// exception
auto
do_run
=
[
cn0
,
cn
1
,
policy
,
free
]()
{
auto
do_run
=
[
loc0
,
loc
1
,
policy
,
free
]()
{
void
*
tmp
;
policy
->
raw_dev_malloc
(
&
tmp
,
free
/
3
);
auto
dev_free
=
[
&
](
void
*
ptr
)
{
policy
->
raw_dev_free
(
ptr
);
};
auto
cn0
=
CompNode
::
load
(
loc0
),
cn1
=
CompNode
::
load
(
loc1
);
std
::
unique_ptr
<
void
,
decltype
(
dev_free
)
>
tmp_owner
{
tmp
,
dev_free
};
auto
check_free
=
[
&
](
const
char
*
msg
,
size_t
expect
)
{
auto
get
=
cn0
.
get_mem_status_bytes
().
second
;
...
...
@@ -648,7 +649,8 @@ TEST(TestCudaMemAlloc, FreeMem) {
REQUIRE_GPU
(
1
);
CompNode
::
finalize
();
// same device but different stream
auto
cn0
=
CompNode
::
load
(
"gpu0"
),
cn1
=
CompNode
::
load
(
"gpu0:1"
);
using
Locator
=
CompNode
::
Locator
;
auto
loc0
=
Locator
::
parse
(
"gpu0"
),
loc1
=
Locator
::
parse
(
"gpu0:1"
);
auto
policy
=
std
::
make_unique
<
CudaDevicePolicy
>
();
constexpr
const
char
*
KEY
=
"MGB_CUDA_RESERVE_MEMORY"
;
...
...
@@ -662,7 +664,7 @@ TEST(TestCudaMemAlloc, FreeMem) {
}
CompNode
::
finalize
();
};
test_free_mem
(
cn0
,
cn
1
,
policy
.
get
(),
reserve
,
restore
);
test_free_mem
(
loc0
,
loc
1
,
policy
.
get
(),
reserve
,
restore
);
}
#endif // MGB_CUDA
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录