diff --git a/src/cpu_backend.rs b/src/cpu_backend.rs index 292cd66a..40dd292e 100644 --- a/src/cpu_backend.rs +++ b/src/cpu_backend.rs @@ -182,6 +182,9 @@ impl CpuStorage { src_stride: &[usize], dst_offset: usize, ) -> Result<()> { + if src_shape.rank() != src_stride.len() { + panic!("incoherent shape and strides {src_shape:?} {src_stride:?}") + } match (self, dst) { (Self::F32(src), Self::F32(dst)) => { if src_shape.is_contiguous(src_stride) { diff --git a/src/cuda_backend.rs b/src/cuda_backend.rs index c3afbe44..426d4387 100644 --- a/src/cuda_backend.rs +++ b/src/cuda_backend.rs @@ -446,6 +446,9 @@ impl CudaStorage { src_stride: &[usize], dst_offset: usize, ) -> Result<()> { + if src_shape.rank() != src_stride.len() { + panic!("incoherent shape and strides {src_shape:?} {src_stride:?}") + } let dims = src_shape.dims(); let el_count = src_shape.elem_count(); let cfg = LaunchConfig::for_num_elems(el_count as u32); diff --git a/src/tensor.rs b/src/tensor.rs index 1a5cf7f4..2dbff9be 100644 --- a/src/tensor.rs +++ b/src/tensor.rs @@ -668,7 +668,7 @@ impl Tensor { let shape = self.shape(); let mut storage = self.device().zeros(shape, self.dtype())?; self.storage - .copy_strided_src(&mut storage, shape, &self.stride, 0)?; + .copy_strided_src(&mut storage, &self.shape, &self.stride, 0)?; let tensor_ = Tensor_ { id: TensorId::new(), storage,