Skip to content

Commit

Permalink
add profile record (infer_shape, compute) for dygraph (PaddlePaddle#3…
Browse files Browse the repository at this point in the history
…9023)

* add profile record for dygraph

* add op type in record

* fix little bug

* solve conflict
  • Loading branch information
pangyoki authored Jan 26, 2022
1 parent eb45bb4 commit d9acc87
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 16 deletions.
47 changes: 33 additions & 14 deletions paddle/fluid/imperative/prepared_operator.cc
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
#include "paddle/fluid/platform/device/xpu/xpu_op_list.h"
#endif
#include "paddle/fluid/platform/device/gpu/gpu_info.h"
#include "paddle/fluid/platform/profiler.h"

DECLARE_bool(check_nan_inf);
DECLARE_bool(run_pten_kernel);
Expand Down Expand Up @@ -505,12 +506,21 @@ static void PreparedOpRunImpl(
// TODO(zjl): remove scope in dygraph
framework::Scope scope;

DygraphInferShapeContext<VarType> infer_shape_ctx(
&ins, &outs, &attrs, &default_attrs, op.Type(), &kernel_type);
op.Info().infer_shape_(&infer_shape_ctx);
{
platform::RecordEvent record_event(op.Type() + " infer_shape",
platform::EventRole::kInnerOp);
DygraphInferShapeContext<VarType> infer_shape_ctx(
&ins, &outs, &attrs, &default_attrs, op.Type(), &kernel_type);
op.Info().infer_shape_(&infer_shape_ctx);
}

{
platform::RecordEvent record_event(op.Type() + " compute",
platform::EventRole::kInnerOp);

func(DygraphExecutionContext<VarType>(op, scope, *dev_ctx, ctx, ins, outs,
attrs, default_attrs));
func(DygraphExecutionContext<VarType>(op, scope, *dev_ctx, ctx, ins, outs,
attrs, default_attrs));
}

if (FLAGS_check_nan_inf) {
framework::details::CheckOpHasNanOrInfInDygraph<VarType>(
Expand Down Expand Up @@ -551,18 +561,27 @@ static void PreparedOpRunPtImpl(
const NameVarMap<VarType>& ins, const NameVarMap<VarType>& outs,
const framework::AttributeMap& attrs,
const framework::AttributeMap& default_attrs) {
DygraphInferShapeContext<VarType> infer_shape_ctx(
&ins, &outs, &attrs, &default_attrs, op.Type(), &kernel_type);
op.Info().infer_shape_(&infer_shape_ctx);
{
platform::RecordEvent record_event(op.Type() + " infer_shape",
platform::EventRole::kInnerOp);
DygraphInferShapeContext<VarType> infer_shape_ctx(
&ins, &outs, &attrs, &default_attrs, op.Type(), &kernel_type);
op.Info().infer_shape_(&infer_shape_ctx);
}

{
platform::RecordEvent record_event(op.Type() + " compute",
platform::EventRole::kInnerOp);

PreparePtenData<VarType>(pt_kernel, pt_kernel_signature, ins);
PreparePtenData<VarType>(pt_kernel, pt_kernel_signature, ins);

pten::KernelContext pt_kernel_context;
BuildDygraphPtenKernelContext<VarType>(pt_kernel_signature, pt_kernel, ins,
outs, attrs, default_attrs, dev_ctx,
&pt_kernel_context);
pten::KernelContext pt_kernel_context;
BuildDygraphPtenKernelContext<VarType>(pt_kernel_signature, pt_kernel, ins,
outs, attrs, default_attrs, dev_ctx,
&pt_kernel_context);

pt_kernel(&pt_kernel_context);
pt_kernel(&pt_kernel_context);
}

if (FLAGS_benchmark) {
dev_ctx->Wait();
Expand Down
6 changes: 4 additions & 2 deletions paddle/fluid/pybind/op_function_generator.cc
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,7 @@ static PyObject * %s(PyObject *self, PyObject *args, PyObject *kwargs)
PyThreadState *tstate = nullptr;
try
{
platform::RecordEvent op_type_record_event("%s pybind_imperative_func");
%s
framework::AttributeMap attrs;
ConstructAttrMapFromPyArgs("%s", args, %d, PyTuple_GET_SIZE(args) , attrs);
Expand Down Expand Up @@ -371,8 +372,8 @@ std::string GenerateOpFunctionsBody(

// generate op funtcion body
auto op_function_str = paddle::string::Sprintf(
OP_FUNCTION_TEMPLATE, func_name, ins_cast_str, op_type, input_args_num,
inplace_strategy_str, outs_initializer, ins_initializer,
OP_FUNCTION_TEMPLATE, func_name, op_type, ins_cast_str, op_type,
input_args_num, inplace_strategy_str, outs_initializer, ins_initializer,
ins_initializer_with_null + outs_initializer_with_null +
view_strategy_str,
op_type, inplace_mapping_str, return_str);
Expand Down Expand Up @@ -461,6 +462,7 @@ int main(int argc, char* argv[]) {
#endif

std::vector<std::string> headers{"\"paddle/fluid/imperative/tracer.h\"",
"\"paddle/fluid/platform/profiler.h\"",
"\"pybind11/detail/common.h\"",
"<Python.h>"};

Expand Down

0 comments on commit d9acc87

Please sign in to comment.