OpenCL consists of two parts. There is a node side, which is usually written in C, and a device side, which is written in derivative from C, defined by OpenCL. This code compiles to the device (usually a graphics processor) at runtime.
CLyther is trying to distract everything. You write host-side code in Python. You write device-side code in a subset of Python (similar to Cython). It is very high level and easy to use.
PyOpenCL is a relatively low-level binding to the Python OpenCL API. The device-side code is written in a subset of OpenCL C99. This gives you full access and full control of OpenCL. Very little distracted.
I have limited experience with both, but I got the impression that when both are mature I would prefer to use Clyther for most projects. This is more user friendly, which means that you are more likely to use it and use it more. It's also easier to move code between Clyther and Python than PyOpenCL and Python, so code maintenance and refactoring should be simpler. For projects very important for productivity I would prefer PyOpenCL. This gives you a lower level of control and fewer layers between you and the equipment. The ultimate performance possible should be better with PyOpenCL than with Clyther.
I do not know if this will go on forever. It is likely that PyOpenCL will ultimately add higher level constructs and that Clyther will ultimately add lower level control. In an ideal world, Clyther developers could move the kernel so that it was built on top of PyOpenCL, so we would not have to choose and avoid duplication of labor. I doubt it will ever happen.
PyOpenCL currently looks more mature than Clyther. It was launched first and less ambitious in scope. It has better documentation than Clyther, and appears to have a larger user community. Both are pretty similar in code size. Clyther is about 4KLOCs Python and 4KLOCs C. PyOpenCL is about 7KLOC Python code and 9KLOCs C ++ code. This is approximate (including assembly systems, examples, etc.), therefore it cannot be considered as implying anything other than approximate equality.
source share