heal-research / HeuristicLab

HeuristicLab - An environment for heuristic and evolutionary optimization
https://dev.heuristiclab.com
GNU General Public License v3.0
39 stars 16 forks source link

Implement ParallelEngine #1333

Closed HeuristicLab-Trac-Bot closed 13 years ago

HeuristicLab-Trac-Bot commented 13 years ago

Issue migrated from trac ticket # 1333

milestone: HeuristicLab 3.3.3 | component: ParallelEngine | priority: high | resolution: done

2010-12-11 22:52:26: @s-wagner created the issue


Similar to the ThreadParallelEngine of HL 3.2, a ParallelEngine should be implemented in HL 3.3.

HeuristicLab-Trac-Bot commented 13 years ago

2010-12-11 22:52:53: @s-wagner changed milestone from HeuristicLab x.x.x to HeuristicLab 3.3.3

HeuristicLab-Trac-Bot commented 13 years ago

2010-12-20 00:17:16: @s-wagner changed status from new to accepted

HeuristicLab-Trac-Bot commented 13 years ago

2010-12-20 00:17:16: @s-wagner changed component from ### Undefined ### to ParallelEngine

HeuristicLab-Trac-Bot commented 13 years ago

2010-12-26 02:20:27: @s-wagner edited the issue description

HeuristicLab-Trac-Bot commented 13 years ago

2010-12-26 02:20:27: @s-wagner changed title from Port ThreadParallelEngine from HL 3.2 to HL 3.3 to Implement ParallelEngine

HeuristicLab-Trac-Bot commented 13 years ago

2010-12-26 02:20:27: @s-wagner commented


Created branch in r5175.

HeuristicLab-Trac-Bot commented 13 years ago

2010-12-26 02:35:47: @s-wagner commented


Added first implementation of ParallelEngine in r5176.

HeuristicLab-Trac-Bot commented 13 years ago

2010-12-26 03:51:39: @s-wagner commented


Removed property ExecutionContext in Operator in r5177.

HeuristicLab-Trac-Bot commented 13 years ago

2010-12-28 01:47:19: @s-wagner commented


Removing the ExecutionContext property in Operator is not necessary as I found a more elegant (or at least less severe) solution. Therefore revoked changes of r5177 in r5178.

HeuristicLab-Trac-Bot commented 13 years ago

2010-12-30 02:13:27: @s-wagner commented


Stored execution contexts locally for each thread in r5183.

HeuristicLab-Trac-Bot commented 13 years ago

2010-12-31 04:29:39: @s-wagner commented


Worked on cancellation and refactored code in r5185.

HeuristicLab-Trac-Bot commented 13 years ago

2011-01-02 04:05:24: @s-wagner commented


Worked on cancellation and refactored code in r5187.

HeuristicLab-Trac-Bot commented 13 years ago

2011-01-02 05:33:17: @s-wagner commented


Adapted DebugEngine according to cancellation changes in r5188.

HeuristicLab-Trac-Bot commented 13 years ago

2011-01-03 00:47:26: @s-wagner commented


Merged branch back into trunk in r5193.

HeuristicLab-Trac-Bot commented 13 years ago

2011-01-03 00:50:56: @s-wagner commented


Deleted branch in r5194 (not migrated).

HeuristicLab-Trac-Bot commented 13 years ago

2011-01-03 00:54:14: @s-wagner changed status from accepted to reviewing

HeuristicLab-Trac-Bot commented 13 years ago

2011-01-03 00:54:14: @s-wagner changed owner from swagner to epitzer

HeuristicLab-Trac-Bot commented 13 years ago

2011-01-03 00:54:14: @s-wagner commented


epitzer, please review changes of DebugEngine in r5193.

HeuristicLab-Trac-Bot commented 13 years ago

2011-01-04 01:42:34: @s-wagner changed status from reviewing to assigned

HeuristicLab-Trac-Bot commented 13 years ago

2011-01-04 01:42:34: @s-wagner changed owner from epitzer to swagner

HeuristicLab-Trac-Bot commented 13 years ago

2011-01-04 01:42:40: @s-wagner changed status from assigned to accepted

HeuristicLab-Trac-Bot commented 13 years ago

2011-01-04 06:18:32: @s-wagner commented


Adapted EAs to enable parallel solution evaluation in r5208.

HeuristicLab-Trac-Bot commented 13 years ago

2011-01-05 00:28:48: @s-wagner commented


epitzer reviewed and agreed with changes of DebugEngine in r5193.

HeuristicLab-Trac-Bot commented 13 years ago

2011-01-05 00:50:34: @s-wagner commented


Adapted distance matrix calculation in TSPCoordinatesPathEvaluator in r5210 to avoid that multiple distance matrices are created, if the evaluator is executed in parallel.

HeuristicLab-Trac-Bot commented 13 years ago

2011-01-05 02:01:45: @s-wagner commented


Updated samples in r5211.

HeuristicLab-Trac-Bot commented 13 years ago

2011-01-05 02:26:24: @s-wagner changed status from accepted to assigned

HeuristicLab-Trac-Bot commented 13 years ago

2011-01-05 02:26:24: @s-wagner changed owner from swagner to gkronber

HeuristicLab-Trac-Bot commented 13 years ago

2011-01-05 02:26:24: @s-wagner commented


When using GP to solve a symbolic regression or symbolic classification problem with the ParallelEngine, an exception is thrown. It seems that there are still some synchronization issues in the corresponding evaluators.

HeuristicLab-Trac-Bot commented 13 years ago

2011-01-05 14:53:03: @mkommend changed owner from gkronber to mkommend

HeuristicLab-Trac-Bot commented 13 years ago

2011-01-05 14:54:16: @mkommend changed owner from mkommend to swagner

HeuristicLab-Trac-Bot commented 13 years ago

2011-01-05 14:54:16: @mkommend commented


Made SimpleArithmeticExpressionInterpreter thread safe with r5223.

HeuristicLab-Trac-Bot commented 13 years ago

2011-01-05 15:09:15: @s-wagner changed status from assigned to accepted

HeuristicLab-Trac-Bot commented 13 years ago

2011-01-05 15:42:48: @s-wagner changed status from accepted to assigned

HeuristicLab-Trac-Bot commented 13 years ago

2011-01-05 15:42:48: @s-wagner changed owner from swagner to mkommend

HeuristicLab-Trac-Bot commented 13 years ago

2011-01-05 15:42:48: @s-wagner commented


Please update GP symbolic regression and symbolic classification samples.

HeuristicLab-Trac-Bot commented 13 years ago

2011-01-14 15:23:58: @s-wagner changed status from assigned to reviewing

HeuristicLab-Trac-Bot commented 13 years ago

2011-01-21 10:04:02: @abeham commented


Comments regarding r5208

  • OSGA: EvaluatedSolutions should probably not be incremented in each thread by one, but after the parallel region and by the size of SelectedParents. The IntCounter is implemented thread-safe, but it will probably cause a lot of waits. In the case of reevaluating the mutated individuals after the OS, I think it would be okay to do it inside, though of course it would be nicer to just increment by the number of subscopes.
  • I'm hesitating to accept the change to IntCounter making it thread-safe. I would like to spark a discussion on providing additional thread-safe variants for basic operators. We could introduce a new plugin HeuristicLab.Operators.(ThreadSafe|Parallel). That way the operator designer doesn't need to make the trade-off, but instead the algorithm designer has to make the decision (which she has to make anyway). It's also more obvious if an operator is thread-safe or not. On the other hand the library is already quite complex and it doesn't get simpler if we add more operators.

Regarding r5210

  • I'm fine with that, although I'm swinging in favor of removing the feature from the evaluators and putting it into the problem. What was the reason again that we didn't do this?
HeuristicLab-Trac-Bot commented 13 years ago

2011-01-21 14:19:41: @abeham changed status from reviewing to assigned

HeuristicLab-Trac-Bot commented 13 years ago

2011-01-21 14:19:41: @abeham changed owner from mkommend to abeham

HeuristicLab-Trac-Bot commented 13 years ago

2011-01-21 15:30:29: @abeham commented


TODO for me:

  • Remove counting of evaluated solutions from the parallel part
    • OSGA
    • SASEGASA
    • Island OSGA
    • Island GA
    • GA
    • ES
    • NSGA-II
  • Add an operator that counts the sub-scopes and increments EvaluatedSolutions accordingly after the parallel part
  • ~~Allow parallel evaluation in ~~
    • LocalSearch
    • SimulatedAnnealing (note: does not work)
    • TabuSearch
HeuristicLab-Trac-Bot commented 13 years ago

2011-01-21 15:30:29: @abeham

HeuristicLab-Trac-Bot commented 13 years ago

2011-01-21 15:30:29: @abeham

HeuristicLab-Trac-Bot commented 13 years ago

2011-01-21 15:30:29: @abeham

HeuristicLab-Trac-Bot commented 13 years ago

2011-01-21 15:30:29: @abeham

HeuristicLab-Trac-Bot commented 13 years ago

2011-01-21 15:30:29: @abeham

HeuristicLab-Trac-Bot commented 13 years ago

2011-01-21 22:52:08: @abeham commented


r5352

  • Removed changes to IntCounter that would make it thread-safe, if a thread-safe operator is needed a separate one should be implemented
  • Moved counting of evaluated solutions out of the parallel region
HeuristicLab-Trac-Bot commented 13 years ago

2011-01-21 23:31:17: @abeham commented


r5353

  • Adapted local search to perform move evaluation in parallel (using the parallel engine)
HeuristicLab-Trac-Bot commented 13 years ago

2011-01-22 00:15:10: @abeham commented


r5354

  • Adapated Tabu Search to run move evaluations and tabu check in parallel

Note that simulated annealing can't be parallelized easily. It will apply any move as soon as it satisfies the acceptance criterion.

HeuristicLab-Trac-Bot commented 13 years ago

2011-01-22 15:21:46: @abeham changed status from assigned to reviewing

HeuristicLab-Trac-Bot commented 13 years ago

2011-01-22 15:21:46: @abeham changed owner from abeham to swagner