in crates/ratchet-core/src/tensor.rs [957:975]
fn to_cpu(&self) -> Result<Tensor, TensorError> {
if self.device().is_cpu() || !self.resolved() {
log::error!("Tensor may not have been resolved, try calling `resolve()` first.");
return Ok(self.clone());
}
let storage_guard = self.storage();
let gpu_buf = storage_guard
.as_ref()
.ok_or(TensorError::TransferError)?
.try_gpu()?;
let cpu_buf = gpu_buf.to_cpu(&self.device)?;
Ok(Tensor::new(
LazyOp::Const,
self.view.clone(),
Some(Storage::CPU(cpu_buf)),
Device::CPU,
))
}