1. A system for data-aware scheduling of applications on a heterogeneous platform having at least one central processing unit (CPU) and at least one accelerator, comprising: a function call handling module configured to intercept, analyze, and schedule library calls on a processing element, comprising: a function call interception module configured to intercept function calls to predefined libraries; a function call analysis module configured to analyze argument size and location; and a function call redirection module configured to schedule library calls and data transfers; and a memory unification module, configured to keep data coherent between memories associated with the at least one CPU and the at least one accelerator based on the output of the function call redirection module.