Hi Ben, Rowland Ben <rowland....@claudiusregaud.fr> writes: > Just started working with PyCUDA, and already very taken with it, it makes a > whole load of things very simple. Already after a couple of days I have a > working program with OpenGL interop using PySide to provide the GUI and CUDA > doing 3D texture lookups. One thing I haven’t been able to figure out yet > though is how to pass vector arguments to CUDA kernels. I have a function > definition like this: > __global__ void extract_slice(uchar4 *destPbo, > unsigned int width, > unsigned int height, > float3 center, > float3 xDelta, > float3 yDelta) > but I can’t make this work with pycuda passing in float3 variables like this: > self.kernel.prepared_call(grid_dimensions, (16, 16, 1), > > target_mapping.device_ptr(), > self.width(), > self.height(), > > pycuda.gpuarray.vec.make_float3(0.0, 0.0, 0.0), > > pycuda.gpuarray.vec.make_float3(1.0, 0.0, 0.0), > > pycuda.gpuarray.vec.make_float3(0.0, 1.0, 0.0) > ) > so instead I have had to resort to just passing in 9 floats instead of > 3 float3 variables, these are then reconstructed into float3s in the > kernel and everything works correctly. While this is a solution for > the moment I would really like to figure out how to pass vector types > like this, and if anyone can point me in the right direction it would > be much appreciated.
Does passing the vector types to prepare() not work? If so, submit a snippet that reproduces the issue, and we'll get it fixed. Andreas
pgpYwZyvkNsrT.pgp
Description: PGP signature
_______________________________________________ PyCUDA mailing list PyCUDA@tiker.net http://lists.tiker.net/listinfo/pycuda