Hi Nathan and Andreas: I threw together a class called GPUStruct for doing this that worked well for me with older version of CUDA and PyCUDA. It really helped with organizing my code. You can find it here:
https://github.com/compmem/cutools/blob/master/gpustruct.py It may need some updating for the latest versions of everything, but I thought I'd share. Best, Per On Mon, Jul 11, 2011 at 12:41 AM, Andreas Kloeckner <[email protected]> wrote: > Hi Nathan, > > On Sat, 2 Jul 2011 12:48:08 -0700, Nathan Hillier wrote: >> >> I am currently working my way through the_ CUDA By Example _book, >> porting to PyCuda as I go. I've reached the first example that makes >> use of a struct. I'm a bit unsure of how to properly deal with this in >> PyCuda. I followed the documentation as best I could, and I wrote a >> kernel test out if my wrapper was working correctly. The kernel >> executes without error, but fails to alter data in the struct. Code >> follows, and isĀ attachedĀ for easy viewing in your favorite editor. > > First of all, sorry for the long delay in responding. In my opinion, the > right way of dealing with this would be to use numpy record arrays as > Python-side stand-ins for structs. One might even write code to register > their dtypes with PyCUDA, so that array code can work with them sort of > automatically (although it's not clear how useful this latter bit would be). > One useful component would be to have code that automatically spits out a C > struct declaration for a given numpy dtype--that would minimize redundancy > and thereby the chance for mistakes. In the past, I've cobbled together such > a code generator that used the Python struct module, but I wouldn't > recommend that--it was slow and painful. See code here: > > https://github.com/inducer/cgen/blob/master/cgen/__init__.py#L343 > > Hope this helps, > Andreas > > > _______________________________________________ > PyCUDA mailing list > [email protected] > http://lists.tiker.net/listinfo/pycuda > _______________________________________________ PyCUDA mailing list [email protected] http://lists.tiker.net/listinfo/pycuda
