From 6baa1d486bfd58da94dbd8630679bd1ed519970f Mon Sep 17 00:00:00 2001 From: Laurent Mazare Date: Sat, 22 Jun 2024 23:21:20 +0200 Subject: [PATCH] Fix a bug in the metal implemtation of col2im1d. (#2284) --- candle-core/src/metal_backend/mod.rs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/candle-core/src/metal_backend/mod.rs b/candle-core/src/metal_backend/mod.rs index 06f6cd371..fa83692df 100644 --- a/candle-core/src/metal_backend/mod.rs +++ b/candle-core/src/metal_backend/mod.rs @@ -848,7 +848,6 @@ impl BackendStorage for MetalStorage { .device .new_buffer(dst_el, self.dtype, "conv_transpose1d")?; - let command_buffer = self.device.command_buffer()?; let name = match self.dtype { DType::F32 => "col2im1d_f32", DType::U32 => "col2im1d_u32", @@ -869,6 +868,12 @@ impl BackendStorage for MetalStorage { &kernel_l_mm, )? }; + // It is important for the command buffer to be obtained *after* the matmul + // kernel has run, otherwise we might use a command-buffer that has been commited + // already resulting in the following error. + // _status < MTLCommandBufferStatusCommitted > + // -[IOGPUMetalCommandBuffer setCurrentCommandEncoder:] + let command_buffer = self.device.command_buffer()?; candle_metal_kernels::call_col2im1d( &self.device.device, &command_buffer,