Modularize OpenCL backend