Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
机器未来
Paddle
提交
cb198fa7
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看板
提交
cb198fa7
编写于
10月 03, 2017
作者:
Q
qijun
浏览文件
操作
浏览文件
下载
差异文件
merge baidu/develop
上级
39505151
0009a30f
变更
3
显示空白变更内容
内联
并排
Showing
3 changed file
with
64 addition
and
30 deletion
+64
-30
paddle/framework/executor.cc
paddle/framework/executor.cc
+20
-9
paddle/framework/executor_test.cc
paddle/framework/executor_test.cc
+43
-21
paddle/platform/gpu_info.cc
paddle/platform/gpu_info.cc
+1
-0
未找到文件。
paddle/framework/executor.cc
浏览文件 @
cb198fa7
...
...
@@ -13,8 +13,10 @@ See the License for the specific language governing permissions and
limitations under the License. */
#include "paddle/framework/executor.h"
#include <iostream>
#include <memory>
#include <vector>
#include "paddle/framework/lod_tensor.h"
#include "paddle/framework/op_registry.h"
#include "paddle/framework/scope.h"
...
...
@@ -40,30 +42,39 @@ Executor::Executor(const std::vector<platform::Place>& places) {
void
Executor
::
Run
(
const
ProgramDesc
&
pdesc
,
Scope
*
scope
,
std
::
vector
<
Tensor
>*
outputs
)
{
// operators running
// TODO(tonyyang-svail):
// - only runs the first block
// - only runs on the first device
Scope
&
local_scope
=
scope
->
NewScope
();
// - test on gpu
auto
&
block
=
pdesc
.
blocks
(
0
);
auto
&
device_context
=
device_contexts_
[
0
];
auto
&
device
=
device_contexts_
[
0
];
// TODO(tonyyang-svail):
// - runs on a new local scope
// Scope& local_scope = scope->NewScope();
for
(
auto
&
var
:
block
.
vars
())
{
local_scope
.
NewVar
(
var
.
name
());
scope
->
NewVar
(
var
.
name
());
}
// std::vector<op_ptr> ops;
for
(
auto
&
op_desc
:
block
.
ops
())
{
auto
op
=
framework
::
OpRegistry
::
CreateOp
(
op_desc
);
// InferShape is now doing inside Run method.
op
->
Run
(
local_scope
,
*
device_context
);
auto
op
=
paddle
::
framework
::
OpRegistry
::
CreateOp
(
op_desc
);
op
->
Run
(
*
scope
,
*
device
);
}
// TODO(tonyyang-svail): need to test gpu device
for
(
auto
&
device_context
:
device_contexts_
)
{
device_context
->
Wait
();
}
// // print tensor value
// for (auto& var : block.vars()) {
// std::cout << var.name() << std::endl;
// auto v = scope->FindVar(var.name());
// const LoDTensor& t = v->Get<LoDTensor>();
// for (int i = 0; i < t.numel(); ++i)
// std::cout << t.data<float>()[i] << " ";
// std::cout << std::endl;
// }
}
}
// namespace framework
...
...
paddle/framework/executor_test.cc
浏览文件 @
cb198fa7
...
...
@@ -15,15 +15,49 @@ limitations under the License. */
#include "paddle/framework/executor.h"
#include "gtest/gtest.h"
#include "paddle/framework/attribute.h"
#include "paddle/framework/grad_op_builder.h"
#include "paddle/framework/op_registry.h"
#include "paddle/framework/operator.h"
#include <vector>
USE_OP
(
elementwise_add
);
USE_OP
(
gaussian_random
);
using
std
::
string
;
using
namespace
paddle
::
platform
;
using
namespace
paddle
::
framework
;
typedef
paddle
::
framework
::
BlockDesc
proto_block
;
typedef
paddle
::
framework
::
OpDesc
proto_op
;
void
add_gaussian_random_op
(
string
var_name
,
proto_block
*
block
)
{
std
::
vector
<
int
>
dim
{
2
,
3
};
// insert variable
auto
a
=
block
->
add_vars
();
a
->
set_name
(
var_name
);
auto
a_lt
=
a
->
mutable_lod_tensor
();
a_lt
->
set_data_type
(
paddle
::
framework
::
DataType
::
FP32
);
for
(
int
i
:
dim
)
{
a_lt
->
add_dims
(
i
);
}
// insert operation
auto
op
=
block
->
add_ops
();
op
->
set_type
(
"gaussian_random"
);
auto
dims
=
op
->
add_attrs
();
dims
->
set_name
(
"dims"
);
dims
->
set_type
(
paddle
::
framework
::
AttrType
::
INTS
);
for
(
int
i
:
dim
)
{
dims
->
add_ints
(
i
);
}
auto
Out
=
op
->
add_outputs
();
Out
->
set_parameter
(
"Out"
);
Out
->
add_arguments
(
var_name
);
}
class
ExecutorTester
:
public
::
testing
::
Test
{
public:
virtual
void
SetUp
()
override
{
...
...
@@ -31,35 +65,25 @@ class ExecutorTester : public ::testing::Test {
root_block
->
set_idx
(
0
);
root_block
->
set_parent_idx
(
-
1
);
auto
a
=
root_block
->
add_vars
();
a
->
set_name
(
"a"
);
auto
a_lt
=
a
->
mutable_lod_tensor
();
a_lt
->
set_data_type
(
paddle
::
framework
::
DataType
::
FP32
);
a_lt
->
add_dims
(
640
);
a_lt
->
add_dims
(
640
);
auto
b
=
root_block
->
add_vars
();
b
->
set_name
(
"b"
);
auto
b_lt
=
b
->
mutable_lod_tensor
();
b_lt
->
set_data_type
(
paddle
::
framework
::
DataType
::
FP32
);
b_lt
->
add_dims
(
640
);
b_lt
->
add_dims
(
640
);
add_gaussian_random_op
(
"a"
,
root_block
);
add_gaussian_random_op
(
"b"
,
root_block
);
auto
c
=
root_block
->
add_vars
();
c
->
set_name
(
"c"
);
auto
c_lt
=
c
->
mutable_lod_tensor
();
c_lt
->
set_data_type
(
paddle
::
framework
::
DataType
::
FP32
);
c_lt
->
add_dims
(
640
);
c_lt
->
add_dims
(
640
);
auto
op
1
=
root_block
->
add_ops
();
op
1
->
set_type
(
"elementwise_add"
);
auto
X
=
op
1
->
add_inputs
();
auto
op
=
root_block
->
add_ops
();
op
->
set_type
(
"elementwise_add"
);
auto
X
=
op
->
add_inputs
();
X
->
set_parameter
(
"X"
);
X
->
add_arguments
(
"a"
);
auto
Y
=
op
1
->
add_inputs
();
auto
Y
=
op
->
add_inputs
();
Y
->
set_parameter
(
"Y"
);
Y
->
add_arguments
(
"b"
);
auto
Out
=
op
->
add_outputs
();
Out
->
set_parameter
(
"Out"
);
Out
->
add_arguments
(
"c"
);
}
protected:
...
...
@@ -83,9 +107,7 @@ TEST_F(ExecutorTester, InitCPU) {
TEST_F
(
ExecutorTester
,
InitGPU
)
{
std
::
vector
<
Place
>
places
;
GPUPlace
gpu_place0
(
0
);
GPUPlace
gpu_place1
(
1
);
places
.
push_back
(
gpu_place0
);
places
.
push_back
(
gpu_place1
);
Executor
*
executor
=
new
Executor
(
places
);
executor
->
Run
(
pdesc_
,
&
scope_
,
outputs_
);
...
...
paddle/platform/gpu_info.cc
浏览文件 @
cb198fa7
...
...
@@ -43,6 +43,7 @@ int GetCurrentDeviceId() {
}
void
SetDeviceId
(
int
id
)
{
PADDLE_ENFORCE
(
id
<
GetDeviceCount
(),
"id must less than GPU count"
)
PADDLE_ENFORCE
(
cudaSetDevice
(
id
),
"cudaSetDevice failed in paddle::platform::SetDeviceId"
);
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录