diff --git a/python/paddle/fluid/distribute_transpiler.py b/python/paddle/fluid/distribute_transpiler.py index 8da9ca290b22ae69b1fd195d8614c31dc4e13e00..497bcf93a379e7eb0ce8a94d5702349b0547d14f 100644 --- a/python/paddle/fluid/distribute_transpiler.py +++ b/python/paddle/fluid/distribute_transpiler.py @@ -276,6 +276,7 @@ class DistributeTranspiler: pserver_program.global_block().create_var( name=orig_var_name, persistable=True, + type=v.type, dtype=v.dtype, shape=v.shape) print("create origin var: ", orig_var_name) @@ -283,6 +284,7 @@ class DistributeTranspiler: var = pserver_program.global_block().create_var( name="%s.trainer_%d" % (orig_var_name, trainer_id), persistable=False, + type=v.type, dtype=v.dtype, shape=v.shape) recv_inputs.append(var) @@ -551,11 +553,12 @@ class DistributeTranspiler: type="sum", inputs={"X": vars2merge}, outputs={"Out": merged_var}) - optimize_block.append_op( - type="scale", - inputs={"X": merged_var}, - outputs={"Out": merged_var}, - attrs={"scale": 1.0 / float(self.trainers)}) + if not merged_var.type == core.VarDesc.VarType.SELECTED_ROWS: + optimize_block.append_op( + type="scale", + inputs={"X": merged_var}, + outputs={"Out": merged_var}, + attrs={"scale": 1.0 / float(self.trainers)}) new_inputs[key] = merged_var elif key == "Param": # param is already created on global program