Scheduling and data relocation for heterogeneous computing systems and parallel implementations of block-based motion vector estimation for video compression