System and method for goal-based scheduling of blocks of code for concurrent execution
First Claim
1. A system, comprising:
- one or more processors;
a memory coupled to the one or more processors, wherein the memory is configured to store program instructions executable by the one or more processors to implement;
a concurrent code generator configured to receive marked code having a plurality of markers each indicating a block of code marked for concurrent execution and block-level performance criteria for that block, wherein the concurrent code generator is configured to generate concurrent code from the marked code; and
a scheduler configured to schedule a plurality of blocks of the concurrent code for multi-threaded execution, wherein the scheduler is configured to initiate multi-threaded execution of the blocks of concurrent code in an order determined by the block-level performance criteria for the blocks of concurrent code to reduce overall execution time of the concurrent code.
2 Assignments
0 Petitions
Accused Products
Abstract
A scheduler may be configured to schedule a plurality of blocks of concurrent code for multi-threaded execution. The scheduler may be configured to initiate multi-threaded execution of the blocks of concurrent code in an order determined by block-level performance criteria for the blocks of concurrent code to reduce overall execution time of the concurrent code. In one embodiment, the scheduler may be configured to schedule code blocks having a longer run time ahead of blocks having a shorter run time. The scheduler may be configured to schedule a group of said blocks based on a goal of each of the blocks of the group completing execution at approximately the same time. The scheduler may also be configured to initiate multi-threaded execution of each block of the group at different times according to the block-level performance criteria to the goal.
-
Citations
29 Claims
-
1. A system, comprising:
-
one or more processors; a memory coupled to the one or more processors, wherein the memory is configured to store program instructions executable by the one or more processors to implement; a concurrent code generator configured to receive marked code having a plurality of markers each indicating a block of code marked for concurrent execution and block-level performance criteria for that block, wherein the concurrent code generator is configured to generate concurrent code from the marked code; and a scheduler configured to schedule a plurality of blocks of the concurrent code for multi-threaded execution, wherein the scheduler is configured to initiate multi-threaded execution of the blocks of concurrent code in an order determined by the block-level performance criteria for the blocks of concurrent code to reduce overall execution time of the concurrent code. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. A method, comprising:
-
receiving marked code having a plurality of markers each indicating a block of code marked for concurrent execution and block-level performance criteria for that block; generating concurrent code from the marked code; receiving the concurrent code comprising one or more blocks configured for concurrent execution; determining a block-level performance criterion for each block to be concurrently executed; and initiating multi-threaded execution of the blocks of concurrent code in an order based on the block-level performance criteria for the blocks of concurrent code to reduce overall execution time of the concurrent code. - View Dependent Claims (12, 13, 14, 15, 16, 17, 18, 19, 20)
-
-
21. A computer readable storage medium, comprising program instructions, wherein the program instructions are executable to implement:
-
a scheduler configured to; determine block-level performance criteria for each block of a plurality of blocks of concurrent code according to data obtained from prior executions of each respective block; schedule the plurality of blocks of concurrent code for multi-threaded execution; and initiate multi-threaded execution of the blocks of concurrent code in an order determined by the block-level performance criteria for the blocks of concurrent code to reduce overall execution time of the concurrent code; and a tracking tool configured to be called for each concurrently executable block, wherein the tracking tool is configured to log information to trace or profile execution of the blocks to provide at least part of the block-level performance criteria. - View Dependent Claims (22, 23, 24, 25, 26, 27, 28, 29)
-
Specification