Describir: Heterogeneous computing with OpenCL