diff --git a/hercules_rt/src/lib.rs b/hercules_rt/src/lib.rs
index d19a0a5a16e4438e8746ca312428759ea28ed556..df53a0e9cb442a635e0d959e1cc5094e749a821f 100644
--- a/hercules_rt/src/lib.rs
+++ b/hercules_rt/src/lib.rs
@@ -150,7 +150,7 @@ extern "C" {
     fn ___cublas_sgemm(i: u64, j: u64, k: u64, c: *mut u8, a: *const u8, b: *const u8);
 }
 
-#[derive(Clone, Debug)]
+#[derive(Clone, Debug, Copy)]
 pub struct HerculesCPURef<'a> {
     ptr: NonNull<u8>,
     size: usize,
@@ -165,7 +165,7 @@ pub struct HerculesCPURefMut<'a> {
 }
 
 #[cfg(feature = "cuda")]
-#[derive(Clone, Debug)]
+#[derive(Clone, Debug, Copy)]
 pub struct HerculesCUDARef<'a> {
     ptr: NonNull<u8>,
     size: usize,
diff --git a/juno_samples/cava/benches/cava_bench.rs b/juno_samples/cava/benches/cava_bench.rs
index b8dd3ce26901e94872a5d1b28f1494c5bdfb8a77..41b34230f30af5739f0487eb3d38c9d51f384458 100644
--- a/juno_samples/cava/benches/cava_bench.rs
+++ b/juno_samples/cava/benches/cava_bench.rs
@@ -25,6 +25,12 @@ fn cava_bench(c: &mut Criterion) {
     let (rows, cols, num_ctrl_pts, image, tstw, ctrl_pts, weights, coefs, tonemap) =
         prepare_hercules_inputs(&raw_image, &cam_model);
     let mut r = runner!(cava);
+    let image = image.to();
+    let tstw = tstw.to();
+    let ctrl_pts = ctrl_pts.to();
+    let weights = weights.to();
+    let coefs = coefs.to();
+    let tonemap = tonemap.to();
 
     group.bench_function("cava bench small", |b| {
         b.iter(|| {
@@ -32,12 +38,12 @@ fn cava_bench(c: &mut Criterion) {
                 rows as u64,
                 cols as u64,
                 num_ctrl_pts as u64,
-                image.to(),
-                tstw.to(),
-                ctrl_pts.to(),
-                weights.to(),
-                coefs.to(),
-                tonemap.to(),
+                image,
+                tstw,
+                ctrl_pts,
+                weights,
+                coefs,
+                tonemap,
             ));
         })
     });
@@ -55,6 +61,12 @@ fn cava_bench(c: &mut Criterion) {
     let (rows, cols, num_ctrl_pts, image, tstw, ctrl_pts, weights, coefs, tonemap) =
         prepare_hercules_inputs(&raw_image, &cam_model);
     let mut r = runner!(cava);
+    let image = image.to();
+    let tstw = tstw.to();
+    let ctrl_pts = ctrl_pts.to();
+    let weights = weights.to();
+    let coefs = coefs.to();
+    let tonemap = tonemap.to();
 
     group.bench_function("cava bench full", |b| {
         b.iter(|| {
@@ -62,12 +74,12 @@ fn cava_bench(c: &mut Criterion) {
                 rows as u64,
                 cols as u64,
                 num_ctrl_pts as u64,
-                image.to(),
-                tstw.to(),
-                ctrl_pts.to(),
-                weights.to(),
-                coefs.to(),
-                tonemap.to(),
+                image,
+                tstw,
+                ctrl_pts,
+                weights,
+                coefs,
+                tonemap,
             ));
         })
     });