US 12,147,849 B2
Work stealing in heterogeneous computing systems
Rajkishore Barik, Santa Clara, CA (US); Stephan A. Herhut, Santa Clara, CA (US); Jaswanth Sreeram, San Jose, CA (US); Tatiana Shpeisman, Menlo Park, CA (US); and Richard L. Hudson, Florence, MA (US)
Assigned to Intel Corporation, Santa Clara, CA (US)
Filed by Intel Corporation, Santa Clara, CA (US)
Filed on Oct. 4, 2021, as Appl. No. 17/493,419.
Application 17/493,419 is a continuation of application No. 15/391,549, filed on Dec. 27, 2016, granted, now 11,138,048.
Application 15/391,549 is a continuation of application No. 13/976,579, abandoned, previously published as PCT/US2013/032707, filed on Mar. 15, 2013.
Prior Publication US 2022/0027210 A1, Jan. 27, 2022
Int. Cl. G06F 9/50 (2006.01); G06F 13/42 (2006.01)
CPC G06F 9/5083 (2013.01) [G06F 9/505 (2013.01); G06F 13/4239 (2013.01)] 25 Claims
OG exemplary drawing
 
1. An apparatus comprising:
first computation circuitry of a first type;
interface circuitry to access a first work queue corresponding to the first computation circuitry and a second work queue corresponding to second computation circuitry of a second type;
load balancing instructions to obtain tasks from a workload by encoding first and second index ranges of a data parallel operation;
determination instructions to make a determination to move a task from the second work queue and add the task to the first work queue, the first computation circuitry and the second computation circuitry corresponding to a work-group, the determination to move the task after a determination that the first computation circuitry is a leader in the work-group and based on load balancing and at least one of processing speed or reduced power consumption; and
the first computation circuitry to cause the move of the task from the second work queue via an atomic operation, the atomic operation to perform a read operation and a write operation to update a pointer of the second work queue in a same bus cycle during the move of the task, the atomic operation to prevent multiple entities from moving the task.