Programming model for transparent parallelization of combinatorial optimization
First Claim
Patent Images
1. A method, comprising:
- representing each of a plurality of subtasks configured to explore optimization alternatives for a combinatorial optimization problem by a reentrant finite state machine;
representing a space of optimization alternatives for a combinatorial optimization problem by a recursive data structure, wherein the reentrant finite state machine includes a state to store a solution to the given subtask in the data structure;
using a processor to assign a first subtask of the plurality of subtasks to a first processing thread, and a second subtask of the plurality of subtasks to a second processing thread;
determining that processing a current state of a first state machine associated with the first subtask is in a blocked condition that cannot be completed until the second subtask has been completed; and
suspending the first state machine for future reentrance and making the first processing thread available to perform a third subtask not currently in the blocked condition.
9 Assignments
0 Petitions
Accused Products
Abstract
Each of a plurality of subtasks is configured to explore and assess alternative solutions for a combinatorial optimization problem by a reentrant finite state machine is represented. Each of a plurality of threads is configured to perform operations comprising a subtask until either completion or a blocked state is reached and, in the event a blocked state is reached, to move on to performing another subtask that is not currently in a blocked state.
39 Citations
15 Claims
-
1. A method, comprising:
-
representing each of a plurality of subtasks configured to explore optimization alternatives for a combinatorial optimization problem by a reentrant finite state machine; representing a space of optimization alternatives for a combinatorial optimization problem by a recursive data structure, wherein the reentrant finite state machine includes a state to store a solution to the given subtask in the data structure; using a processor to assign a first subtask of the plurality of subtasks to a first processing thread, and a second subtask of the plurality of subtasks to a second processing thread; determining that processing a current state of a first state machine associated with the first subtask is in a blocked condition that cannot be completed until the second subtask has been completed; and suspending the first state machine for future reentrance and making the first processing thread available to perform a third subtask not currently in the blocked condition. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
-
-
12. A system, comprising:
-
a processor; and a memory coupled with the processor, wherein the memory is configured to provide the processor with instructions which when executed cause the processor to; represent each of a plurality of subtasks configured to explore optimization alternatives for a combinatorial optimization problem by a reentrant finite state machine; represent a space of optimization alternatives for a combinatorial optimization problem by a recursive data structure, wherein a solved subtask is represented only once in the data structure; assign a first subtask of the plurality of subtasks to a first processing thread, and a second subtask of the plurality of subtasks to a second processing thread; determine that processing a current state of a first state machine associated with the first subtask is in a blocked condition that cannot be completed until the second subtask has been completed; and suspend the first state machine for future reentrance and making the first processing thread available to perform a third subtask not currently in the blocked condition. - View Dependent Claims (13)
-
-
14. A computer program product, the computer program product being embodied in a tangible computer readable storage medium and comprising computer instructions for:
-
representing each of a plurality of subtasks configured to explore optimization alternatives for a combinatorial optimization problem by a reentrant finite state machine; representing a space of optimization alternatives for a combinatorial optimization problem by a recursive data structure, wherein a solved subtask is represented only once in the data structure; assigning a first subtask of the plurality of subtasks to a first processing thread, and a second subtask of the plurality of subtasks to a second processing thread; determining that processing a current state of a first state machine associated with the first subtask is in a blocked condition that cannot be completed until the second subtask has been completed; and suspending the first state machine for future reentrance and making the first processing thread available to perform a third subtask not currently in the blocked condition. - View Dependent Claims (15)
-
Specification