Saving, work in progress.  Looks like OpenCL does not support recursion.