Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
机器未来
Paddle
提交
b7661d7e
P
Paddle
项目概览
机器未来
/
Paddle
与 Fork 源项目一致
Fork自
PaddlePaddle / Paddle
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
Paddle
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
b7661d7e
编写于
3月 24, 2019
作者:
Q
Qiao Longfei
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add some log
上级
e8fe5186
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
13 addition
and
0 deletion
+13
-0
paddle/fluid/operators/distributed/async_sparse_param_update_recorder.h
...perators/distributed/async_sparse_param_update_recorder.h
+13
-0
未找到文件。
paddle/fluid/operators/distributed/async_sparse_param_update_recorder.h
浏览文件 @
b7661d7e
...
@@ -67,6 +67,14 @@ class AsyncSparseParamUpdateRecorder {
...
@@ -67,6 +67,14 @@ class AsyncSparseParamUpdateRecorder {
int
trainer_num
,
int
trainer_num
,
const
std
::
unordered_map
<
std
::
string
,
std
::
string
>&
grad_to_param
)
const
std
::
unordered_map
<
std
::
string
,
std
::
string
>&
grad_to_param
)
:
trainer_num_
(
trainer_num
),
grad_to_param_
(
grad_to_param
)
{
:
trainer_num_
(
trainer_num
),
grad_to_param_
(
grad_to_param
)
{
std
::
ostringstream
sstream
;
sstream
<<
"["
;
for
(
auto
&
item
:
grad_to_param
)
{
sstream
<<
item
.
first
<<
":"
<<
item
.
second
<<
", "
;
}
sstream
<<
"]"
;
VLOG
(
3
)
<<
"trainer_num: "
<<
trainer_num
<<
"grad_to_param_: "
<<
sstream
.
str
();
for
(
auto
&
iter
:
grad_to_param
)
{
for
(
auto
&
iter
:
grad_to_param
)
{
param_to_grad_
[
iter
.
second
]
=
iter
.
first
;
param_to_grad_
[
iter
.
second
]
=
iter
.
first
;
auto
&
param_name
=
iter
.
second
;
auto
&
param_name
=
iter
.
second
;
...
@@ -82,6 +90,8 @@ class AsyncSparseParamUpdateRecorder {
...
@@ -82,6 +90,8 @@ class AsyncSparseParamUpdateRecorder {
void
Update
(
const
std
::
string
&
grad_name
,
void
Update
(
const
std
::
string
&
grad_name
,
const
std
::
vector
<
int64_t
>&
update_rows
)
{
const
std
::
vector
<
int64_t
>&
update_rows
)
{
VLOG
(
3
)
<<
"update grad: "
<<
grad_name
<<
" row size: "
<<
update_rows
.
size
();
auto
&
param_name
=
grad_to_param_
.
at
(
grad_name
);
auto
&
param_name
=
grad_to_param_
.
at
(
grad_name
);
auto
&
trainer_to_rows
=
param_to_updated_rows_
.
at
(
param_name
);
auto
&
trainer_to_rows
=
param_to_updated_rows_
.
at
(
param_name
);
...
@@ -97,6 +107,9 @@ class AsyncSparseParamUpdateRecorder {
...
@@ -97,6 +107,9 @@ class AsyncSparseParamUpdateRecorder {
param_to_updated_rows_
.
at
(
param_name
)[
trainer_id
]
param_to_updated_rows_
.
at
(
param_name
)[
trainer_id
]
->
GetAndClear
(
result
)
->
GetAndClear
(
result
)
.
wait
();
.
wait
();
VLOG
(
3
)
<<
"GetAndClear param: "
<<
param_name
<<
" for trainer: "
<<
trainer_id
<<
" with size: "
<<
result
->
size
();
}
}
bool
HasParam
(
const
std
::
string
&
param_name
)
{
bool
HasParam
(
const
std
::
string
&
param_name
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录