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

Conversation

Projects
None yet
2 participants
@richardotis
Copy link
Collaborator

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 some commits May 28, 2019

FIX: patched_piecewise: Remove ITE rewriting from SymPy's ExprCondPai…
…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

@bocklund
Copy link
Collaborator

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

This comment has been minimized.

Copy link
Collaborator Author

commented May 31, 2019

Done.

@richardotis richardotis merged commit 4aeff91 into develop May 31, 2019

5 checks passed

continuous-integration/appveyor/branch AppVeyor build succeeded
Details
continuous-integration/appveyor/pr AppVeyor build succeeded
Details
continuous-integration/travis-ci/pr The Travis CI build passed
Details
continuous-integration/travis-ci/push The Travis CI build passed
Details
coverage/coveralls First build on use-symengine at 89.605%
Details
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.