| 282 | } |
| 283 | |
| 284 | void GradKey::freeze() { |
| 285 | mgb_assert(m_frozen_tape.empty() && !m_frozen); |
| 286 | for (auto&& [grad_fn, op] : m_tape) { |
| 287 | if (auto valid_grad_fn = grad_fn.lock()) { |
| 288 | m_frozen_tape.push_back({valid_grad_fn, op}); |
| 289 | } |
| 290 | } |
| 291 | m_tape.clear(); |
| 292 | m_frozen = true; |
| 293 | } |
| 294 | |
| 295 | ValueRefList GradTransformation::apply_transformation( |
| 296 | const Operator& op, Span<ValueRef> inputs) { |
no test coverage detected