Thanks for your work!
I would love to help, but currently, and for the next few months, I'm
quite occupied in job searching and finishing my degree.
Andreas Klöckner wrote:
Hi Daniel, all,
Complex number support is now in PyCUDA git. Please read below for how
it happened and what remains to be done--and please help get it done! :)
On Freitag 08 Januar 2010, Ying Wai (Daniel) Fan wrote:
don't quite agree with your treatment of the complex scalars.
1) We ship a "fixed" version of the struct module that can serialize
2) struct can be fooled into serializing "2f" and get the real and imag
3) We serialize numpy complex byte-for-byte via
buffer(numpy.complex(3j)), circumventing the need for
struct to understand complex.
What do you think?
I think option 2 is better, as
it requires less work to implement
and thus less work to maintain
Not agreed at all. After some thinking, I've come to the conclusion
that this would require an endless string of workarounds and would make
PyCUDA's argument packing untenably slow.
Hopefully, future versions of struct will support
They will (PEP 3118), but in a post-3.1 timeframe. 
I've implemented option 1. Shipping our own struct module will be
necessary from 2.7 onward anyway, until someone comes up with a better
There is now complex number support in PyCUDA's mainline git, and this
will be in 0.94. I found it necessary to do this now to prevent
fragmenting PyCUDA into different versions--one that works with parret,
one that works with pycudafft, etc. In particular, I did not care too
much for your decision to release a forked PyCUDA without coordinating
with the mailing list.
I've landed this support, but for now it's somewhat less-than-perfect.
In particular, we need:
- proper implementations of .real and .imag.
- tests of all the cumath functions with complex numbers
If you rely on complex numbers in PyCUDA, PLEASE consider helping out
with one of these. Thanks!