1. A dynamic task scheduling method comprising: receiving a task, wherein the task comprises a kernel and a plurality of data items to be processed by the kernel; dynamically partitioning the task into a plurality of sub-tasks, each having the kernel and a variable-sized portion of the data items, wherein the data items of the task are partitioned into variable-sized portions of the sub-tasks, and variable sizes of the variable-sized portions are dynamically determined; and dispatching the sub-tasks to a plurality of computing devices of a heterogeneous computing system; wherein dynamically partitioning the task into the sub-tasks comprises: analyzing the task to generate a task analysis result; and dynamically partitioning the task into the sub-tasks according to at least the task analyzing result, wherein the variable sizes of the variable-sized portions are dynamically set based on at least the task analysis result; wherein the task analysis result comprises an affinity analysis result; the computing devices comprise a first computing device and a second computing device; and when the affinity analysis result indicates that performance of executing the kernel in the first computing device is better than performance of executing the kernel in the second computing device, a size of a variable-sized portion included in a sub-task dispatched to the first computing device is set larger than a size of a variable-sized portion included in a sub-task dispatched to the second computing device.