A device for controlling multiple processing units (410A, 410B) in parallel, the device comprising: a first processing unit for processing a linear tropical dynamic programming problem, the linear tropical dynamic programming problem comprising first and second stages (104, 104) in which an output of a first stage (104) is used as an input to a subsequent second stage (104) each stage comprising one or more sub-problems wherein a solution to the dynamic programming problem is constructed from solutions to the sub-problems; a second processing unit for processing the dynamic programming problem; and a memory in communication with the first and second processing units (410A, 410B), the memory comprising: a stage creation module for determining first and second stages (104, 104) of the dynamic programming problem, a dependency identification module for determining at least one dependency between the first and second stages (104, 104), the dependency being a coupling of a first stage output with a second stage input, and a parallel execution module for breaking the at least one dependency by using a generated input that is independent of the first stage output as the second stage input, and processing in parallel the second stage (104) on the second processing unit using the generated input as the second stage input to compute a solution to each sub-problem of the second stage and the first stage (104) on the first processing unit to compute a solution to each sub-problem of the first stage so as to calculate a solution to the dynamic programming problem from the solutions to the sub-problems, and wherein the memory (412) further comprises: a cluster creation module for clustering the first stage (104) with a first set (106 -) of other stages of the dynamic programming problem to form a first cluster and the second stage (104) with a second set (108 - of other stages of the dynamic programming problem to form a second cluster so that, as the number of stages within a cluster increases, properties of rank convergence can achieve correct or almost correct solutions using the generated inputs as the second stage input, wherein the parallel execution module further processes in parallel the second cluster on the second processing unit and the first cluster on the first processing unit so as to calculate the solution. a first processing unit for processing a linear tropical dynamic programming problem, the linear tropical dynamic programming problem comprising first and second stages (104, 104) in which an output of a first stage (104) is used as an input to a subsequent second stage (104) each stage comprising one or more sub-problems wherein a solution to the dynamic programming problem is constructed from solutions to the sub-problems; a second processing unit for processing the dynamic programming problem; and a memory in communication with the first and second processing units (410A, 410B), the memory comprising: a stage creation module for determining first and second stages (104, 104) of the dynamic programming problem, a dependency identification module for determining at least one dependency between the first and second stages (104, 104), the dependency being a coupling of a first stage output with a second stage input, and a parallel execution module for breaking the at least one dependency by using a generated input that is independent of the first stage output as the second stage input, and processing in parallel the second stage (104) on the second processing unit using the generated input as the second stage input to compute a solution to each sub-problem of the second stage and the first stage (104) on the first processing unit to compute a solution to each sub-problem of the first stage so as to calculate a solution to the dynamic programming problem from the solutions to the sub-problems, and wherein the memory (412) further comprises: a cluster creation module for clustering the first stage (104) with a first set (106 -) of other stages of the dynamic programming problem to form a first cluster and the second stage (104) with a second set (108 - of other stages of the dynamic programming problem to form a second cluster so that, as the number of stages within a cluster increases, properties of rank convergence can achieve correct or almost correct solutions using the generated inputs as the second stage input, wherein the parallel execution module further processes in parallel the second cluster on the second processing unit and the first cluster on the first processing unit so as to calculate the solution. a cluster creation module for clustering the first stage (104) with a first set (106 -) of other stages of the dynamic programming problem to form a first cluster and the second stage (104) with a second set (108 - of other stages of the dynamic programming problem to form a second cluster so that, as the number of stages within a cluster increases, properties of rank convergence can achieve correct or almost correct solutions using the generated inputs as the second stage input, wherein the parallel execution module further processes in parallel the second cluster on the second processing unit and the first cluster on the first processing unit so as to calculate the solution.