cartan-gpu 0.5.1

Portable GPU compute primitives for the cartan ecosystem: wgpu device/buffer/kernel abstractions plus VkFFT-backed FFT.
use cartan_gpu::{Device, GpuBuffer};

#[test]
fn buffer_upload_download_bit_identity() {
    let dev = match Device::new() {
        Ok(d) => d,
        Err(cartan_gpu::GpuError::NoAdapter) => return,
        Err(e) => panic!("{e}"),
    };

    let host: Vec<f32> = (0..1024).map(|i| i as f32 * 0.5).collect();
    let buf = GpuBuffer::<f32>::from_slice(
        &dev,
        &host,
        wgpu::BufferUsages::STORAGE | wgpu::BufferUsages::COPY_SRC | wgpu::BufferUsages::COPY_DST,
    )
    .unwrap();

    let back: Vec<f32> = buf.to_vec(&dev).unwrap();
    assert_eq!(back, host);
}