| 167 | } |
| 168 | |
| 169 | DeviceTensorND OutputRecorderSumIntoDest::incr_sub_input_replacer( |
| 170 | const TensorShape& shape) { |
| 171 | ++m_dbg_nr_input_replacer_call; |
| 172 | auto&& dest = m_dest->dev_tensor(); |
| 173 | if (*m_dest_first_summed) { |
| 174 | *m_dest_first_summed = false; |
| 175 | mgb_assert( |
| 176 | dest.shape().eq_shape(shape), "output shape changed: %s vs %s", |
| 177 | dest.shape().to_string().c_str(), shape.to_string().c_str()); |
| 178 | fill_zero_dev_tensor(dest); |
| 179 | } |
| 180 | return dest; |
| 181 | } |
| 182 | |
| 183 | /* ==================== AssignorGradOpr ==================== */ |
| 184 | MGB_DYN_TYPE_OBJ_FINAL_IMPL(LoopGrad::AssignorGradOpr); |
nothing calls this directly
no test coverage detected