Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Crayon鑫
Paddle
提交
6004a2ed
P
Paddle
项目概览
Crayon鑫
/
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看板
提交
6004a2ed
编写于
1月 03, 2018
作者:
Y
Yang Yang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add copy skeleton
上级
cb0b81f9
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
19 addition
and
10 deletion
+19
-10
paddle/operators/parallel_do_op.cc
paddle/operators/parallel_do_op.cc
+19
-10
未找到文件。
paddle/operators/parallel_do_op.cc
浏览文件 @
6004a2ed
...
...
@@ -47,7 +47,7 @@ void SplitTensorAndMoveTensorToScopes(
LOG
(
INFO
)
<<
lod
.
dims
();
}
for
(
in
t
i
=
0
;
i
<
sub_scopes
.
size
();
++
i
)
{
for
(
size_
t
i
=
0
;
i
<
sub_scopes
.
size
();
++
i
)
{
*
sub_scopes
[
i
]
->
Var
(
argu
)
->
GetMutable
<
LoDTensor
>
()
=
lod_tensors
[
i
];
}
}
...
...
@@ -73,15 +73,14 @@ class ParallelDoOp : public framework::OperatorBase {
auto
&
sub_scopes
=
*
scope
.
FindVar
(
Output
(
kParallelScopes
))
->
GetMutable
<
std
::
vector
<
framework
::
Scope
*>>
();
// std::vector<framework::Scope *> sub_scopes;
for
(
int
place_idx
=
0
;
place_idx
<
places
.
size
();
++
place_idx
)
{
for
(
size_t
place_idx
=
0
;
place_idx
<
places
.
size
();
++
place_idx
)
{
sub_scopes
.
push_back
(
&
scope
.
NewScope
());
}
SplitTensorAndMoveTensorToScopes
(
scope
,
sub_scopes
,
places
,
Inputs
(
kInputs
));
for
(
in
t
place_idx
=
0
;
place_idx
<
places
.
size
();
++
place_idx
)
{
for
(
size_
t
place_idx
=
0
;
place_idx
<
places
.
size
();
++
place_idx
)
{
VLOG
(
3
)
<<
"Run "
<<
place_idx
;
auto
&
place
=
places
[
place_idx
];
...
...
@@ -163,17 +162,12 @@ class ParallelDoGradOp : public OperatorBase {
}
// exe run
for
(
in
t
place_idx
=
0
;
place_idx
<
places
.
size
();
++
place_idx
)
{
for
(
size_
t
place_idx
=
0
;
place_idx
<
places
.
size
();
++
place_idx
)
{
VLOG
(
3
)
<<
"Run "
<<
place_idx
;
auto
&
place
=
places
[
place_idx
];
auto
*
cur_scope
=
sub_scopes
[
place_idx
];
// copy parameter
if
(
dev_ctx
.
GetPlace
()
!=
place
)
{
PADDLE_THROW
(
"Not Implemented"
);
}
// execute
auto
executor
=
framework
::
Executor
(
place
);
executor
.
Run
(
*
program
,
cur_scope
,
block
->
ID
(),
...
...
@@ -181,6 +175,21 @@ class ParallelDoGradOp : public OperatorBase {
}
// merge grad
for
(
auto
&
s
:
Outputs
(
framework
::
GradVarName
(
kParameters
)))
{
LOG
(
INFO
)
<<
s
;
// std::string s_buf = s + "@BUF";
// auto *t_buf = sub_scopes[0]->Var(s_buf)->GetMutable<LoDTensor>();
for
(
size_t
place_idx
=
1
;
place_idx
<
places
.
size
();
++
place_idx
)
{
LOG
(
INFO
)
<<
place_idx
;
LOG
(
INFO
)
<<
sub_scopes
[
place_idx
]
->
FindVar
(
s
)
->
Get
<
LoDTensor
>
();
// Copy grad[i] to grad_buf[0]
// sum_op
}
// Copy grad[0] to grad
// auto *t = scope.FindVar(s)->GetMutable<LoDTensor>();
}
}
};
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录