sisl / ExprOptimization.jl

Algorithms for optimization of Julia expressions
Other
44 stars 11 forks source link

Add parallel processing support #12

Closed rcnlee closed 4 years ago

rcnlee commented 6 years ago

At the individual evaluation level. I'm thinking Threads.@thread might be the easiest way to go.

xgdgsc commented 5 years ago

Is there any progress on this? Is it because julia threads support experimental that you may want to do it later?

rcnlee commented 5 years ago

There hasn't been any progress. Mostly because I haven't had time to work on it. I've done some profiling since I opened the issue and both the genetic operations and the evaluation of the expressions are bottlenecks (since the introduction of SymbolTable, before it was all evaluation), so it might be a better idea to parallelize over both. e.g., in GP, crossover and mutation requires deepcopying and manipulating trees.

xukai92 commented 4 years ago

I tried to simply parallel the evaluation of loss in the cross entropy method via multi-threading and the performance gain is very obvious. I'd like to fire a PR soon if no one else is working on it. Besides, there is also https://github.com/sisl/ExprSearch.jl that seems to have a similar set of implementations - which package is actually maintained and I should be contributing to?

rcnlee commented 4 years ago

Yes please, I would welcome that. This is the newer one and is maintained. ExprSearch.jl is deprecated.