in crates/ratchet-core/src/tensor.rs [874:892]
fn to_gpu(&self, dst_device: &Device) -> Result<Tensor, TensorError> {
if self.device().is_gpu() || !self.resolved() {
return Ok(self.clone());
}
let storage_guard = self.storage();
let cpu_buf = storage_guard
.as_ref()
.ok_or(TensorError::TransferError)?
.try_cpu()?;
let gpu_buf = cpu_buf.to_device(dst_device)?;
let wgpu_device = dst_device.try_gpu()?;
Ok(Tensor::new(
LazyOp::Const,
self.view.clone(),
Some(Storage::GPU(gpu_buf)),
Device::GPU(wgpu_device.clone()),
))
}