Customization of OpenCL Applications for Efficient Task Mapping Under Heterogeneous Platform Constraints