Skip to content
Snippets Groups Projects
demo_elementwise.py 819 B
Newer Older
  • Learn to ignore specific revisions
  • #!/usr/bin/env python
    
    import numpy as np
    
    import pyopencl as cl
    
    import pyopencl.array
    from pyopencl.elementwise import ElementwiseKernel
    
    n = 10
    a_np = np.random.randn(n).astype(np.float32)
    b_np = np.random.randn(n).astype(np.float32)
    
    
    ctx = cl.create_some_context()
    queue = cl.CommandQueue(ctx)
    
    
    a_g = cl.array.to_device(queue, a_np)
    b_g = cl.array.to_device(queue, b_np)
    
    
    lin_comb = ElementwiseKernel(ctx,
    
        "float k1, float *a_g, float k2, float *b_g, float *res_g",
        "res_g[i] = k1 * a_g[i] + k2 * b_g[i]",
    
        "lin_comb")
    
    
    res_g = cl.array.empty_like(a_g)
    lin_comb(2, a_g, 3, b_g, res_g)
    
    # Check on GPU with PyOpenCL Array:
    print((res_g - (2 * a_g + 3 * b_g)).get())
    
    # Check on CPU with Numpy:
    res_np = res_g.get()
    print(res_np - (2 * a_np + 3 * b_np))
    print(np.linalg.norm(res_np - (2 * a_np + 3 * b_np)))