added OpenCL implementation. Not fully working yet (=it's a mess), but
at least it works somehow.