IP Library Granted Patent US 9,959,142
Granted Patent B2
US 9,959,142 · App. 14/727,887 · Granted May 1, 2018

Dynamic task scheduling method for dispatching sub-tasks to computing devices of heterogeneous computing system and related computer readable medium

Inventors: Che-Ming Hsu (Miaoli County, TW); Tzu-Hung Yen (Hsinchu County, TW); Yu-Mao Kao (Hsinchu, TW); Shih-Chieh Huang (New Taipei, TW); Ting-Chang Huang (Taoyuan, TW)
Assignee: MEDIATEK INC.
G06F9/5033G06F9/5044Y02B60/142
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,959,142
App. No.
14/727,887
Granted
May 1, 2018
Kind
B2
Abstract

One dynamic task scheduling method includes: 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; and dispatching the sub-tasks to a plurality of computing devices of a heterogeneous computing system. Another dynamic task scheduling method includes: receiving a task, wherein the task comprises a kernel and a plurality of data items to be processed by the kernel; partitioning the task into a plurality of sub-tasks, each having the kernel and a same fixed-sized portion of the data items; and dynamically dispatching the sub-tasks to a plurality of computing devices of a heterogeneous computing system.

Claims (46)

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.

2. The dynamic task scheduling method of claim 1 , wherein a number of the sub-tasks is equal to a number of the computing devices.

3. 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 a predicted task run time for each of the computing devices; the computing devices comprise a first computing device and a second computing device; and when a predicted task run time of the task executed by the first computing device is shorter than a predicted task run time of the task executed by 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.

4. The dynamic task scheduling method of claim 1 , wherein dynamically partitioning the task into the sub-tasks further comprises:

monitoring the computing devices to generate a device monitoring result; and

dynamically partitioning the task into the sub-tasks according to at least the device monitoring result.

5. The dynamic task scheduling method of claim 4 , wherein the device monitoring result comprises an estimated task queuing delay of each of the computing devices; the computing devices comprise a first computing device and a second computing device; each sub-task dispatched to the first computing device is enqueued into a first task queue, and is dequeued from the first task queue and transmitted to the first computing device for execution; each sub-task dispatched to the second computing device is enqueued into a second task queue, and is dequeued from the second task queue and transmitted to the second computing device for execution; and when an estimated task queuing delay resulting from the first task queue is shorter than an estimated task queuing delay resulting from the second task queue, 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.

6. The dynamic task scheduling method of claim 4 , wherein the device monitoring result comprises a device load of each of the computing devices the computing devices comprise a first computing device and a second computing device; and when a device load of the second computing device is heavier than a device load of the first 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.

7. The dynamic task scheduling method of claim 4 , wherein the device monitoring result comprises a device limitation of each of the computing devices; and a size of a variable-sized portion included in a sub-task dispatched to said each of the computing devices is positively correlated to a margin between a current operating status of said each of the computing devices and the device limitation of said each of the computing devices.

8. A non-transitory computer readable medium storing a program code that, when executed by a heterogeneous computing system, causes the heterogeneous computing system to execute following steps:

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 the 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.

9. The non-transitory computer readable medium of claim 8 , wherein a number of the sub-tasks is equal to a number of the computing devices.

10. A non-transitory computer readable medium storing a program code that, when executed by a heterogeneous computing system, causes the heterogeneous computing system to execute following steps:

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 the 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 a predicted task run time for each of the computing devices; the computing devices comprise a first computing device and a second computing device; and when a predicted task run time of the task executed by the first computing device is shorter than a predicted task run time of the task executed by 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.

11. The non-transitory computer readable medium of claim 8 , wherein dynamically partitioning the task into the sub-tasks further comprises:

monitoring the computing devices to generate a device monitoring result; and

dynamically partitioning the task into the sub-tasks according to at least the device monitoring result.

12. The non-transitory computer readable medium of claim 11 , wherein the device monitoring result comprises an estimated task queuing delay of each of the computing devices; the computing devices comprise a first computing device and a second computing device; each sub-task dispatched to the first computing device is enqueued into a first task queue, and is dequeued from the first task queue and transmitted to the first computing device for execution; each sub-task dispatched to the second computing device is enqueued into a second task queue, and is dequeued from the second task queue and transmitted to the second computing device for execution; and when an estimated task queuing delay resulting from the first task queue is shorter than an estimated task queuing delay resulting from the second task queue, 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.

13. The non-transitory computer readable medium of claim 11 , wherein the device monitoring result comprises a device load of each of the computing devices; the computing devices comprise a first computing device and a second computing device; and when a device load of the second computing device is heavier than a device load of the first 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.

14. The non-transitory computer readable medium of claim 11 , wherein the device monitoring result comprises a device limitation of each of the computing devices; and a size of a variable-sized portion included in a sub-task dispatched to said each of the computing devices is positively correlated to a margin between a current operating status of said each of the computing devices and the device limitation of said each of the computing devices.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 2, 2015
From: HSU, CHE-MING; YEN, TZU-HUNG; KAO, YU-MAO; HUANG, SHIH-CHIEH; HUANG, TING-CHANG
To: MEDIATEK INC.
Reel/Frame 035759/0683 →
Continuity (2)
Provisional Application 62013515 · Jun 17, 2014
Related Publication 20150363239A1 · Dec 17, 2015