Hi Andreas,

On 11/22/2010 04:22 PM, Andreas Kloeckner wrote:
> Can you post sample code to reproduce?
>

Here it is:

# -*- coding: utf-8 -*-
import pyopencl as cl
import numpy as np

kernel = """/// Simple copy kernel
    __kernel void copy(__global float* a, __global float* b){
        int i = get_global_id(0);
        b[i] = a[i];
    }
"""

def testCopy():
    ctx = cl.create_some_context()
    queue = cl.CommandQueue(ctx, properties =
        cl.command_queue_properties.PROFILING_ENABLE)
    prg = cl.Program(ctx, kernel).build(options="-g")
    mf = cl.mem_flags
    orig = np.random.random(1024)
    a = orig.astype(np.float32)
    b = np.zeros_like(a)
    b2 = np.zeros_like(a)
    a_dev = cl.Buffer(ctx, mf.READ_ONLY, a.nbytes)
    a2_dev = cl.Buffer(ctx, mf.READ_ONLY | mf.COPY_HOST_PTR,
        hostbuf = orig.astype(np.float32)) # This works
    b_dev = cl.Buffer(ctx, mf.WRITE_ONLY, a.nbytes)
    b2_dev = cl.Buffer(ctx, mf.WRITE_ONLY, a.nbytes)
    cl.enqueue_write_buffer(queue, a_dev, orig.astype(np.float32))
#    cl.enqueue_write_buffer(queue, a_dev, a) # This works, too
    prg.copy(queue, a.shape, None, a_dev, b_dev)
    prg.copy(queue, a.shape, None, a2_dev, b2_dev)
    cl.enqueue_read_buffer(queue, b_dev, b).wait()
    cl.enqueue_read_buffer(queue, b2_dev, b2).wait()
    print np.sum(a), np.sum(b), np.sum(b2) # Results differ

if __name__ == "__main__":
    testCopy()


Jan

------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------
Forschungszentrum Juelich GmbH
52425 Juelich
Sitz der Gesellschaft: Juelich
Eingetragen im Handelsregister des Amtsgerichts Dueren Nr. HR B 3498
Vorsitzender des Aufsichtsrats: MinDirig Dr. Karl Eugen Huthmacher
Geschaeftsfuehrung: Prof. Dr. Achim Bachem (Vorsitzender),
Dr. Ulrich Krafft (stellv. Vorsitzender), Prof. Dr.-Ing. Harald Bolt,
Prof. Dr. Sebastian M. Schmidt
------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------

_______________________________________________
PyOpenCL mailing list
[email protected]
http://lists.tiker.net/listinfo/pyopencl

Reply via email to