@ -309,8 +309,7 @@ static void CreateGradVarInBlock(
}
std : : vector < std : : unique_ptr < OpDescBind > > MakeOpGrad (
const std : : unique_ptr < OpDescBind > & op_desc ,
std : : unordered_set < std : : string > * no_grad_vars ,
const OpDescBind * op_desc , std : : unordered_set < std : : string > * no_grad_vars ,
std : : unordered_map < std : : string , std : : string > * grad_to_var ) {
std : : vector < std : : unique_ptr < OpDescBind > > grad_op_descs ;
// All input gradients of forwarding operator do not need to calculate.
@ -357,7 +356,7 @@ std::vector<std::unique_ptr<OpDescBind>> MakeBlockBackward(
std : : unordered_set < std : : string > * no_grad_vars ,
std : : unordered_map < std : : string , std : : string > * grad_to_var ) {
BlockDescBind * cur_block = program_desc . Block ( block_idx ) ;
std : : deque< std : : unique_ptr < OpDescBind > > & op_descs = cur_block - > ops_ ;
std : : vector< OpDescBind * > op_descs = cur_block - > AllOps ( ) ;
std : : unordered_map < std : : string , std : : vector < size_t > > dup_out_ops ;
size_t grad_desc_idx = 0 ;
std : : vector < std : : unique_ptr < OpDescBind > > backward_descs ;
@ -375,7 +374,7 @@ std::vector<std::unique_ptr<OpDescBind>> MakeBlockBackward(
program_desc , step_block_idx , no_grad_vars , grad_to_var ) ;
BlockDescBind * backward_block = program_desc . AppendBlock ( * cur_block ) ;
for ( auto & ptr : backward_block_op_descs ) {
backward_block - > ops_. push_back ( std : : move ( ptr ) ) ;
backward_block - > AppendAllocatedOp ( std : : move ( ptr ) ) ;
}
op_grads [ 0 ] - > SetBlockAttr ( " step_block " , * backward_block ) ;
}
@ -432,7 +431,6 @@ ParamGradInfoMap AppendBackward(
const int root_block_idx = 0 ;
auto root_block = program_desc . Block ( root_block_idx ) ;
auto & all_ops = root_block - > ops_ ;
// insert fill one op for target
// TODO(qiao) add some check to the target.
@ -447,8 +445,8 @@ ParamGradInfoMap AppendBackward(
{ { " shape " , target_shape } ,
{ " value " , static_cast < float > ( 1.0 ) } ,
{ " data_type " , framework : : DataType : : FP32 } } ) ) ;
all_ops. push_back ( std : : move ( fill_one_op ) ) ;
size_t forward_op_num = all_ops. s ize( ) ;
root_block- > AppendAllocatedOp ( std : : move ( fill_one_op ) ) ;
size_t forward_op_num = root_block- > OpS ize( ) ;
size_t forward_block_num = program_desc . Size ( ) ;
// Insert backward operators
@ -457,7 +455,7 @@ ParamGradInfoMap AppendBackward(
& no_grad_var_names , & grad_to_var ) ;
for ( auto & ptr : backward_op_descs ) {
all_ops. push_back ( std : : move ( ptr ) ) ;
root_block- > AppendAllocatedOp ( std : : move ( ptr ) ) ;
}
// Create Variable