Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ENH: Use symengine #220

Merged
merged 34 commits into from
May 31, 2019
Merged

ENH: Use symengine #220

merged 34 commits into from
May 31, 2019

Conversation

richardotis
Copy link
Collaborator

@richardotis richardotis commented May 31, 2019

  • Switch to SymEngine/LLVM-based codegen
  • Remove SymPy codegen
  • Drop Windows py27 support
  • hyperplane: Fixes Lower convex hull is missing phases #219. A heuristic for forcing faster convergence would sometimes fail by causing feasible starting points close to the edge of composition space to appear infeasible. The heuristic is now removed.
  • lower_convex_hull: Cleanup calls to global_grid which more correctly go to grid, to reduce array duplication

bocklund and others added 30 commits May 28, 2019 19:36
…r to resolve a SymEngine compatibility issue
@richardotis richardotis added this to the 0.8 milestone May 31, 2019
@richardotis richardotis requested a review from bocklund May 31, 2019 17:36
Copy link
Collaborator

@bocklund bocklund left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A few additional notes:

  • Closes ENH: Use symengine #220 Develop branch breaks eqplot #218 (and properly fixes the already closed wontfix Improve JIT compilation time with symengine #155)
  • This breaks 'processes', 'multiprocessing' as options to scheduler. With equilibrium: dask scheduler default incorrectly set to synchronous #101, these actually were not useful anyways.
  • This should close Lower convex hull is missing phases #219. Is it possible to take any test code and write a test for lower_convex_hull that ensures we don't see any regressions? Non blocking if a test is not straightforward.
  • The test suite is now significantly faster (almost 4x faster on CI, installing pycalphad is more expensive than running the test suite).
  • SymPy models are converted to symengine objects just in time before differentiation and building callable functions. This takes about 15% of the time in the test suite for me and we should work towards using symengine primitives throughout pycalphad in the future (which will speed up other areas as well). The blocker for this is pickling symengine objects. Track
  • Introduces a patch for avoiding rewriting ITEs in nested Piecewise functions because symengine does not support ITEs

@richardotis can you add a comment to this PR (not in the code) on the changes in hyperplane/lower convex hull. Why are we not penalizing fake points in hyperplane and why the change from global_grid to grid in lower convex hull?

@richardotis
Copy link
Collaborator Author

Done.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Lower convex hull is missing phases
2 participants