{"record":{"id":"f5c1128e86396492","repo":"tracel-ai/burn","slug":"unsupported-grid-sample-interpolation-mode","errorCode":null,"errorMessage":"Unsupported grid_sample interpolation mode: {:?}","messagePattern":"Unsupported grid_sample interpolation mode: (.+?)","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/burn-cubecl/src/kernel/grid_sample/base.rs","lineNumber":12,"sourceCode":"use cubecl::prelude::*;\n\nuse crate::tensor::CubeTensor;\nuse burn_backend::ops::{GridSampleOptions, GridSamplePaddingMode, InterpolateMode};\n\nuse super::bilinear::grid_sample_bilinear_launch;\n\n/// Grid sample operation supporting bilinear interpolation\npub fn grid_sample(input: CubeTensor, grid: CubeTensor, options: GridSampleOptions) -> CubeTensor {\n    match options.mode {\n        InterpolateMode::Bilinear => grid_sample_bilinear_launch(input, grid, options),\n        _ => panic!(\n            \"Unsupported grid_sample interpolation mode: {:?}\",\n            options.mode\n        ),\n    }\n}\n\n/// Compile-time padding mode for kernel specialization\n#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]\npub enum PaddingMode {\n    /// Fill with zeros for out-of-bounds coordinates.\n    Zeros,\n    /// Clamp coordinates to the border (use nearest edge value).\n    Border,\n    /// Reflect coordinates at the boundary.\n    Reflection,\n}\n\nimpl From<GridSamplePaddingMode> for PaddingMode {","sourceCodeStart":1,"sourceCodeEnd":30,"githubUrl":"https://github.com/tracel-ai/burn/blob/d16f7ba2ed0d41408189384044cc886fb4c8f957/crates/burn-cubecl/src/kernel/grid_sample/base.rs#L1-L30","documentation":"grid_sample on the CubeCL backend currently only implements bilinear interpolation. Any other InterpolateMode (nearest, bicubic, etc.) hits the catch-all match arm and panics at dispatch time. The message echoes the unsupported mode so you can see what was requested.","triggerScenarios":"Calling grid_sample with GridSampleOptions whose mode is anything other than InterpolateMode::Bilinear, e.g. Nearest or Bicubic.","commonSituations":"Porting models that use nearest-neighbor grid sampling (common in optical-flow / STN architectures) from PyTorch to Burn, or reusing option structs configured for interpolate() with grid_sample.","solutions":["Set options.mode to InterpolateMode::Bilinear","Implement or request a nearest/bicubic grid_sample kernel, or fall back to a different backend that supports it","Wrap the mode in config validation before building GridSampleOptions"],"exampleFix":"// before\nlet opts = GridSampleOptions { mode: InterpolateMode::Nearest, .. };\ngrid_sample(input, grid, opts);\n// after\nlet opts = GridSampleOptions { mode: InterpolateMode::Bilinear, .. };\ngrid_sample(input, grid, opts);","handlingStrategy":"validation","validationCode":"assert!(matches!(options.mode, InterpolateMode::Bilinear), \"grid_sample supports only bilinear\");","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Default GridSampleOptions to InterpolateMode::Bilinear","Centralize grid-sample option construction in one validated helper","Track backend feature support when porting PyTorch grid_sample usage"],"tags":["gpu","grid-sample","unsupported-mode","burn"],"backgroundTag":"unsupported-operation-mode","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"}