A branch-and-bound approach to scheduling of data-parallel tasks on multi-core architectures. (12th February 2020)