From b434d8d791c8a13222dde0c14aae4326d3025cf1 Mon Sep 17 00:00:00 2001 From: Andreas Kloeckner <inform@tiker.net> Date: Sat, 29 Dec 2012 20:28:36 +0100 Subject: [PATCH] Allocate 1-byte buffers for size-0 arrays. --- pyopencl/array.py | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/pyopencl/array.py b/pyopencl/array.py index cc4deab1..33fa2fc0 100644 --- a/pyopencl/array.py +++ b/pyopencl/array.py @@ -312,22 +312,23 @@ class Array(object): self.strides = strides self.size = s - nbytes = self.nbytes = self.dtype.itemsize * self.size + alloc_nbytes = self.nbytes = self.dtype.itemsize * self.size self.allocator = allocator if data is None: - if self.size: - if allocator is None: - # FIXME remove me when queues become required - if queue is not None: - context = queue.context - - self.data = cl.Buffer(context, cl.mem_flags.READ_WRITE, nbytes) - else: - self.data = self.allocator(nbytes) + if not alloc_nbytes: + # Work around CL not allowing zero-sized buffers. + alloc_nbytes = 1 + + if allocator is None: + # FIXME remove me when queues become required + if queue is not None: + context = queue.context + + self.data = cl.Buffer(context, cl.mem_flags.READ_WRITE, alloc_nbytes) else: - self.data = None + self.data = self.allocator(alloc_nbytes) else: self.data = data -- GitLab