Compiler-based scheduling optimization hints for user-level threads
First Claim
Patent Images
1. A machine-implemented method comprising:
- receiving from a compiler scheduling hint information associated with an operating system independent user-level thread, the scheduling hint information configurable to include parallelism information associated with the user-level thread, wherein said receiving further comprises receiving the scheduling hint information via an application programming interface between the compiler and the scheduler, wherein said interface further comprises an attribute table; and
electively taking the associated scheduling hint information into account to perform dynamic run-time scheduling for the user-level thread, wherein said scheduling for said operating system independent user-level thread is performed by a scheduler in user space.
1 Assignment
0 Petitions
Accused Products
Abstract
Method, apparatus and system embodiments to schedule user-level OS-independent “shreds” without intervention of an operating system. For at least one embodiment, the shred is scheduled for execution by a scheduler routine rather than the operating system. The scheduler routine may receive compiler-generated hints from a compiler. The compiler hints may be generated by the compiler without user-provided pragmas, and may be passed to the scheduler routine via an API-like interface. The interface may include a scheduling hint data structure that is maintained by the compiler. Other embodiments are also described and claimed.
25 Citations
24 Claims
-
1. A machine-implemented method comprising:
-
receiving from a compiler scheduling hint information associated with an operating system independent user-level thread, the scheduling hint information configurable to include parallelism information associated with the user-level thread, wherein said receiving further comprises receiving the scheduling hint information via an application programming interface between the compiler and the scheduler, wherein said interface further comprises an attribute table; and electively taking the associated scheduling hint information into account to perform dynamic run-time scheduling for the user-level thread, wherein said scheduling for said operating system independent user-level thread is performed by a scheduler in user space. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16)
-
-
17. A system, comprising:
-
a memory; a runtime scheduler to schedule one or more operating system independent user-level threads, said scheduler residing in user space of said memory; one or more thread execution units to execute said one or more operating system independent user-level threads; and an interface to pass a compiler-generated scheduling hint associated with at least one of the operating system independent user-level threads from a compiler to the scheduler, the scheduler configured to electively utilize the scheduling hint, wherein said scheduling hint information is received via an application programming interface between a compiler and a scheduler, wherein said interface further comprises an attribute table. - View Dependent Claims (18)
-
-
19. A machine-implemented method, comprising:
-
performing dependence analysis on a program that includes operating system independent user-level threads; decomposing the program into independent units of work associated with the operating system independent user-level threads; and statically generating, without utilizing user-provided pragmatic information, one or more scheduling hints to be associated with at least one of the independent units of work, and providing the scheduling hints to a runtime scheduler configured to electively utilize provided scheduling hints, wherein said scheduling hint information is received via an application programming interface between a compiler and a scheduler, wherein said interface further comprises an attribute table. - View Dependent Claims (20)
-
-
21. An article comprising a non-transitory machine-accessible medium having a plurality of machine accessible instructions, wherein, when the instructions are executed by a processor, the instructions cause the processor to perform a method, comprising:
-
performing dependence analysis on a program that includes operating system independent user-level threads; decomposing the program into independent units of work associated with the operating system independent user-level threads; and statically generating, without utilizing user-provided pragmatic information, one or more scheduling hints to be associated with at least one of the independent units of work, and generating compiled code for the program that includes instructions to provide the scheduling hints to a runtime scheduler configurable to electively utilize the scheduling hints, wherein said scheduling hint information is received via an application programming interface between a compiler and a scheduler, wherein said interface further comprises an attribute table. - View Dependent Claims (22)
-
-
23. A method for a machine having an associated operating system, comprising:
-
receiving from a compiler static scheduling hint information associated with a user-level thread invisible to the operating system, the static scheduling hint information configurable to include parallelism information associated with the user-level thread, wherein said scheduling hint information is received via an application programming interface between a compiler and a scheduler, wherein said interface further comprises an attribute table; and electively taking the associated static scheduling hint information into account to perform dynamic run-time scheduling for the user-level thread invisible to the operating system by a scheduler operating in user space. - View Dependent Claims (24)
-
Specification