add context api, this implement could be used in both AMD and NVIDIA opencl