auto-generation of OpenCL kernels from Python code; depends on Andreas Klöckner's PyOpenCL wrapper