.. _contribute: ============== Contributing ============== What can you do to help? * Author Email: srossross@enthought.com * Enthought Email: info@enthought.com * `Git development Model `_ OpenCL built-ins ^^^^^^^^^^^^^^^^^^^^ I have intentionally put off filling out all of the OpenCL built-in functions. If you see an error like:: File "/Users/sean/indigo_workspace/Clyther/clyther/cly_kernel.py", line 249, in translate eval(redirect_error_to_function) #use the @cly.developer function decorator to turn this off and see stack trace ... File "examples/tst.py", line 16, in a[0] = clrt.clamp(x, 0, 1) AttributeError: 'module' object has no attribute 'clamp' Then I have not yet added this function definition to the CLyther runtime module. Fortunately this is easy for you! To add this to CLyther you can define clamp like so:: import opencl as cl from clyther.rttt import RuntimeFunction, RuntimeType, gentype, sgentype, ugentype clamp = RuntimeFunction('clamp', # Name of the function lambda argtype, *args: argtype, # Return type. gentype(), sgentype(), sgentype(), # Argument types doc='Returns min(max(x, minval), maxval)', # Docstrng emulate=lambda x, minval, maxval : min(max(x, minval), maxval # Pure python function for emulation mode. ) Once you get this working you can put it in the Python clyther.runtime module following the `Nice Git development Model `_ and send me a pull request. Or send me a patch file via email srossross@enthought.com. If the function has an existing python equivalent. i.e. `acos` then you could specify the `builtin` argument:: acos = RuntimeFunction('acos', # Name of the function lambda argtype: argtype, # Return type. gentype() # Argument types doc='Returns acos(value)', # Docstring builtin=math.acos # Alternate function ) This will allow :func:`clyther.runtime.acos` and :func:`math.acos` to be used interchangeably. .. seealso:: * :class:`clyther.rttt.RuntimeFunction` * `Git development Model `_ Errors ^^^^^^^^^^^^^^^^^^^^ My goal is to make OpenCL as easy and friendly to use as possible. If you get an error that is not intuitive please post an issue on the `GitHub issue tracker `_. Transformation Pipeline ^^^^^^^^^^^^^^^^^^^^^^^^^^ CLyther transforms a Python ast into an OpecnCL ast and then compiles it using `OpenCL for Python `_. The ast transformation pipline can be found at :mod:`clyther.pipeline`. CLyther.array ^^^^^^^^^^^^^^^^^^^^^^^^^^ I would like to get a chunk of the core numpy functionality reproduced. Documentation ^^^^^^^^^^^^^^^^^^^^^^^^^^ I have just whipped up the documentation and I am notorious for my spelling typos. Please let me know! All documentation and other input is most welcome.