A hierarchic task-based programming model for distributed heterogeneous computing. (September 2019)