On Wed, 29 Jun 2011 12:56:09 -0400, Thomas Wiecki <[email protected]> 
wrote:
> This is with the version from the trunk
> (7804dc6d1b40b506b02a5f7a0b7bde8771f1446c).
> 
> import pycuda.driver as cuda
> import pycuda.compiler
> import pycuda.autoinit
> import pycuda.gpuarray as gpuarray
> from pycuda.elementwise import ElementwiseKernel
> 
> zero_kernel = ElementwiseKernel(
>     "float *out",
>     "out[i] = pdf()",
>     "test",
>     preamble=
>     """
>     __device__ float pdf()
>     {
>         return 0;
>     }
>     """)
> 
> size = 100
> out_gpu = gpuarray.empty(size, float)
> zero_kernel(out_gpu)
> 
> print all(out_gpu.get() == 0)
> print all(out_gpu.get()[:size/2] == 0)
> 
> Produces output (for varying size):
> False
> True
> 
> The second half is the same as before the elementwise kernel call.

What's slightly treacherous here (but this is numpy's fault) is that
"float" in the gpuarray.empty arg refers to Python's "float" type, which
numpy will read as "float64", i.e. double precision. In the interest of
speed, ElementwiseKernel does not do argument type checking. Maybe it
should.

HTH,
Andreas

Attachment: pgpxZ2r9DBmaZ.pgp
Description: PGP signature

_______________________________________________
PyCUDA mailing list
[email protected]
http://lists.tiker.net/listinfo/pycuda

Reply via email to