diff --git a/python/paddle/fluid/backward.py b/python/paddle/fluid/backward.py index 58fa7f1bebc082df11e07f5f97927b417af3e4e8..e02245d05dd9fd5d82a26dcbc00a8b832f93842e 100644 --- a/python/paddle/fluid/backward.py +++ b/python/paddle/fluid/backward.py @@ -220,7 +220,10 @@ def _callback_lookup_(op): :return: callback function """ if op.type == 'parallel_do' and op.attr('use_nccl'): + all_vars = op.block.vars param_names = set(op.input('parameters')) + param_names = filter(lambda name: all_vars[name].stop_gradient is False, + param_names) param_grad_names = [n + "@GRAD" for n in param_names] class ParallelDoCallBack(object): diff --git a/python/paddle/fluid/layers/control_flow.py b/python/paddle/fluid/layers/control_flow.py index ff8861856372882f4da9c3c775b3856b21d062db..1bb1aa30ee1019c6f80eb64b6dc20459e7a3073b 100644 --- a/python/paddle/fluid/layers/control_flow.py +++ b/python/paddle/fluid/layers/control_flow.py @@ -294,8 +294,7 @@ class ParallelDo(object): params = list(set(params)) - param_list = [parent_block.var(name) for name in params] - return filter(lambda param: param.stop_gradient is False, param_list) + return [parent_block.var(name) for name in params] def complete_op(self): main_program = self.helper.main_program