Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
BaiXuePrincess
Paddle
提交
239a8386
P
Paddle
项目概览
BaiXuePrincess
/
Paddle
与 Fork 源项目一致
Fork自
PaddlePaddle / Paddle
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
Paddle
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
239a8386
编写于
9月 17, 2018
作者:
G
gongweibao
提交者:
GitHub
9月 17, 2018
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix VarHandle return bug. (#13354)
上级
7c873082
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
15 addition
and
9 deletion
+15
-9
paddle/fluid/operators/distributed/request_handler.h
paddle/fluid/operators/distributed/request_handler.h
+15
-9
未找到文件。
paddle/fluid/operators/distributed/request_handler.h
浏览文件 @
239a8386
...
@@ -56,7 +56,7 @@ class VarHandle {
...
@@ -56,7 +56,7 @@ class VarHandle {
const
std
::
string
&
name
,
const
std
::
string
&
name
,
const
platform
::
DeviceContext
*
p_ctx
=
nullptr
,
const
platform
::
DeviceContext
*
p_ctx
=
nullptr
,
const
framework
::
Scope
*
p_scope
=
nullptr
)
const
framework
::
Scope
*
p_scope
=
nullptr
)
:
ok_
(
kVarHandle
DefaultState
)
{
:
status_
(
k
DefaultState
)
{
ep_
=
ep
;
ep_
=
ep
;
ctx_
=
p_ctx
;
ctx_
=
p_ctx
;
scope_
=
p_scope
;
scope_
=
p_scope
;
...
@@ -68,18 +68,20 @@ class VarHandle {
...
@@ -68,18 +68,20 @@ class VarHandle {
public:
public:
bool
Wait
()
{
bool
Wait
()
{
int
ret
=
kDefaultState
;
{
{
std
::
unique_lock
<
std
::
mutex
>
lk
(
sync_mutex_
);
std
::
unique_lock
<
std
::
mutex
>
lk
(
sync_mutex_
);
wait_cond_
.
wait
(
lk
,
[
this
]
{
return
ok_
!=
kVarHandleDefaultState
;
});
wait_cond_
.
wait
(
lk
,
[
this
]
{
return
status_
!=
kDefaultState
;
});
ret
=
status_
;
}
}
VLOG
(
7
)
<<
"VarHandle wait:"
<<
ok_
;
VLOG
(
7
)
<<
"VarHandle wait:"
<<
ret
;
return
ok_
!=
0
;
return
ret
!=
kErrorState
;
}
}
void
Finish
(
bool
ok
)
{
void
Finish
(
bool
ok
)
{
{
{
std
::
unique_lock
<
std
::
mutex
>
lk
(
sync_mutex_
);
std
::
unique_lock
<
std
::
mutex
>
lk
(
sync_mutex_
);
ok_
=
ok
;
status_
=
ok
?
kFinishState
:
kErrorState
;
}
}
VLOG
(
7
)
<<
"VarHandle finish:"
<<
ok
;
VLOG
(
7
)
<<
"VarHandle finish:"
<<
ok
;
wait_cond_
.
notify_all
();
wait_cond_
.
notify_all
();
...
@@ -87,8 +89,8 @@ class VarHandle {
...
@@ -87,8 +89,8 @@ class VarHandle {
std
::
string
String
()
const
{
std
::
string
String
()
const
{
std
::
ostringstream
s
;
std
::
ostringstream
s
;
s
<<
method_
<<
" name:["
<<
name_
<<
"], ep:["
<<
ep_
<<
"],
ok:["
<<
ok_
s
<<
method_
<<
" name:["
<<
name_
<<
"], ep:["
<<
ep_
<<
"],
status:["
<<
"]"
;
<<
status_
<<
"]"
;
return
s
.
str
();
return
s
.
str
();
}
}
...
@@ -111,9 +113,13 @@ class VarHandle {
...
@@ -111,9 +113,13 @@ class VarHandle {
protected:
protected:
std
::
mutex
sync_mutex_
;
std
::
mutex
sync_mutex_
;
std
::
condition_variable
wait_cond_
;
std
::
condition_variable
wait_cond_
;
int
ok_
;
static
const
int
kVarHandleDefaultState
=
-
1
;
enum
VarHandleStatus
{
kDefaultState
=
-
1
,
kErrorState
=
0
,
kFinishState
=
1
,
};
VarHandleStatus
status_
;
private:
private:
DISABLE_COPY_AND_ASSIGN
(
VarHandle
);
DISABLE_COPY_AND_ASSIGN
(
VarHandle
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录