From 25520569c824973d5fa7af4e65184fc6bb3174b6 Mon Sep 17 00:00:00 2001
From: Andreas Kloeckner <inform@tiker.net>
Date: Mon, 3 Jun 2013 15:08:38 -0400
Subject: [PATCH] Fix array.multi_put for offsets.

---
 pyopencl/array.py | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/pyopencl/array.py b/pyopencl/array.py
index 22f49cf0..05af9f4e 100644
--- a/pyopencl/array.py
+++ b/pyopencl/array.py
@@ -1540,10 +1540,16 @@ def multi_put(arrays, dest_indices, dest_shape=None, out=None, queue=None):
                     cl.kernel_work_group_info.WORK_GROUP_SIZE,
                     queue.device))
 
+        from pytools import flatten
         knl(queue, gs, ls,
-                *([o.data for o in out[chunk_slice]]
-                    + [dest_indices.data]
-                    + [i.data for i in arrays[chunk_slice]]
+                *(
+                    list(flatten(
+                        (o.base_data, o.offset)
+                        for o in out[chunk_slice]))
+                    + [dest_indices.base_data, dest_indices.offset]
+                    + list(flatten(
+                        (i.base_data, i.offset)
+                        for i in arrays[chunk_slice]))
                     + [dest_indices.size]))
 
     return out
-- 
GitLab