Clone a variable into current block. Args: var: the variable to be cloned. force_persistable(bool): True means setting the result variable to being persistable. False means setting the persistable the same with that of in
(self, var, force_persistable=True)
| 5069 | self.vars[new_p.name] = new_p |
| 5070 | |
| 5071 | def _clone_variable(self, var, force_persistable=True): |
| 5072 | """ |
| 5073 | Clone a variable into current block. |
| 5074 | |
| 5075 | Args: |
| 5076 | var: the variable to be cloned. |
| 5077 | force_persistable(bool): True means setting the result variable to being persistable. |
| 5078 | False means setting the persistable the same with that of input var. |
| 5079 | default: True. |
| 5080 | |
| 5081 | Returns: |
| 5082 | Variable: the new variable cloned from 'var' in current block. |
| 5083 | """ |
| 5084 | assert isinstance(var, Variable) |
| 5085 | ret_var = None |
| 5086 | # make STEP_SCOPES var can be safely cloned. |
| 5087 | if var.type == core.VarDesc.VarType.STEP_SCOPES: |
| 5088 | ret_var = self.create_var( |
| 5089 | name=var.name, persistable=var.persistable, type=var.type |
| 5090 | ) |
| 5091 | elif var.type == core.VarDesc.VarType.RAW: |
| 5092 | ret_var = self.create_var( |
| 5093 | name=var.name, persistable=var.persistable, type=var.type |
| 5094 | ) |
| 5095 | elif var.type == core.VarDesc.VarType.SELECTED_ROWS: |
| 5096 | ret_var = self.create_var( |
| 5097 | name=var.name, |
| 5098 | shape=var.shape, |
| 5099 | dtype=var.dtype, |
| 5100 | type=var.type, |
| 5101 | persistable=True if force_persistable else var.persistable, |
| 5102 | is_data=var.is_data, |
| 5103 | need_check_feed=var.desc.need_check_feed(), |
| 5104 | ) |
| 5105 | else: |
| 5106 | ret_var = self.create_var( |
| 5107 | name=var.name, |
| 5108 | shape=var.shape, |
| 5109 | dtype=var.dtype, |
| 5110 | type=var.type, |
| 5111 | lod_level=var.lod_level, |
| 5112 | persistable=True if force_persistable else var.persistable, |
| 5113 | is_data=var.is_data, |
| 5114 | need_check_feed=var.desc.need_check_feed(), |
| 5115 | ) |
| 5116 | return ret_var |
| 5117 | |
| 5118 | |
| 5119 | # NOTE(zjl): you should be careful that after you call this method, |
no test coverage detected