Optimizing Data Placement And Threads Management For Heterogeneous Computing.