{"record":{"id":"361cc3f76c672189","repo":"tracel-ai/burn","slug":"not-implemented","errorCode":null,"errorMessage":"not implemented","messagePattern":"not implemented","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/burn-dispatch/src/ops/distributed.rs","lineNumber":209,"sourceCode":"        })\n    }\n\n    fn register_sync_parameters(\n        device: &DispatchDevice,\n        sharded_param_ids: Vec<DistributedParams>,\n    ) {\n        dispatch_device!(@distributed device, |device| B::register_sync_parameters(\n            device,\n            sharded_param_ids,\n        ))\n    }\n\n    fn submit_sync_collective(device: &DispatchDevice) {\n        dispatch_device!(@distributed device, |device| B::submit_sync_collective(device))\n    }\n\n    fn submit_gradient_sync(_tensor: TensorRef<Self>, _distributed_params: DistributedParams) {\n        unimplemented!()\n    }\n\n    fn all_reduce(\n        tensor: FloatTensor<Self>,\n        op: ReduceOperation,\n        device_ids: Vec<DeviceId>,\n    ) -> CollectiveTensor<Self> {\n        // Safety: we call `assume_resolved` only to wrap it in a new `CollectiveTensor`.\n        // Explicit type: the distributed dispatch only emits arms for collective-capable\n        // backends (Cuda, Remote), so a build with none of them leaves only the diverging\n        // fallback and the match would otherwise infer `!`.\n        let tensor: FloatTensor<Self> = dispatch_distributed_float!(tensor, |tensor| {\n            let collective_tensor = B::all_reduce(tensor, op, device_ids);\n            unsafe { collective_tensor.assume_resolved() }\n        });\n        CollectiveTensor::new(tensor)\n    }\n","sourceCodeStart":191,"sourceCodeEnd":227,"githubUrl":"https://github.com/tracel-ai/burn/blob/d16f7ba2ed0d41408189384044cc886fb4c8f957/crates/burn-dispatch/src/ops/distributed.rs#L191-L227","documentation":"burn-dispatch's distributed backend implements `submit_gradient_sync` as `unimplemented!()`. Unlike the other DistributedOps methods, it does not forward to the inner backend `B`, so any call always panics with 'not implemented'. The library authors have not wired gradient synchronization through the dispatch layer yet.","triggerScenarios":"Calling `submit_gradient_sync(tensor, distributed_params)` on the Dispatch backend, e.g. through a distributed training loop that relies on the DistributedOps trait to sync gradients across devices.","commonSituations":"Running multi-device/multi-node distributed training while routing tensors through burn-dispatch instead of a concrete distributed backend; copying code that works against a real backend (e.g. NCCL-based) to the dispatch layer.","solutions":["Use a concrete distributed backend for gradient sync instead of the Dispatch backend","Check the burn repo for an updated release where Dispatch forwards this op to the inner backend","Contribute/implement the op by forwarding like the sibling `submit_sync_collective`: `dispatch_device!(@distributed device, |device| B::submit_gradient_sync(...))`","Work around by performing gradient sync manually outside the dispatch layer"],"exampleFix":"// before\nfn submit_gradient_sync(_tensor: TensorRef<Self>, _distributed_params: DistributedParams) {\n    unimplemented!()\n}\n// after\nfn submit_gradient_sync(tensor: TensorRef<Self>, distributed_params: DistributedParams) {\n    dispatch_device!(@distributed ..., |device| B::submit_gradient_sync(tensor, distributed_params))\n}","handlingStrategy":"validation","validationCode":"if backend_is_dispatch() && needs_gradient_sync() {\n    panic/branch to a real distributed backend before calling submit_gradient_sync\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Route distributed gradient sync through a concrete distributed backend, not Dispatch","Check DistributedOps impl completeness for your backend before adopting it","Wrap dispatch-layer distributed calls behind an abstraction that can fail over","Track burn releases/changelogs for when these ops get implemented"],"tags":["rust","distributed","unimplemented"],"backgroundTag":"unimplemented-distributed-op","analyzedSha":"d16f7ba2ed0d41408189384044cc886fb4c8f957","analyzedAt":"2026-09-05T13:19:14.260Z","contentChangedAt":"2026-09-05T13:19:14.260Z","schemaVersion":2},"datasetVersion":"2026-09-12T17:17:11.597Z"}