Hey,
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.
Thanks,
Ben
_______________________________________________
PyCUDA mailing list
[email protected]
http://lists.tiker.net/listinfo/pycuda