An algorithm of task scheduling with data dependent is proposed. The algorithm consists of two steps: determining the priority of tasks and selecting the resources for tasks scheduling. In the step of prioritizing tasks, a new definition of task rank is introduced, which improves the traditional definition by taking the sum instead of the maximum of the upper and the lower ranks, therefore better representing the residual load of tasks in the workflow. In the step of selecting resources, a new method based on the fastest computation time is designed. In addition, the selection of critical path...