.NET wrapper for OpenCL with abstraction