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 gh-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
…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
Copy link
Collaborator

@bocklund bocklund left a comment

A few additional notes:

  • Closes #220 #218 (and properly fixes the already closed wontfix #155)
  • This breaks 'processes', 'multiprocessing' as options to scheduler. With #101, these actually were not useful anyways.
  • This should close #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

@richardotis richardotis commented May 31, 2019

Done.

@richardotis richardotis merged commit 4aeff91 into develop May 31, 2019
5 checks passed
@bocklund bocklund deleted the use-symengine branch Nov 24, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Linked issues

Successfully merging this pull request may close these issues.

2 participants