Skip to content

Releases: tschijnmo/gristmill

0.7.0

16 Sep 03:23
Compare
Choose a tag to compare
0.7.0 Pre-release
Pre-release

This release is a relatively small release. The handling of repeated terms in
sums can now be finely turned by values in the
RepeatedTermsStratenumeration. Also some error messages to users are
updated for clearer indication of the problem.

0.6.0

10 Sep 03:01
Compare
Choose a tag to compare
0.6.0 Pre-release
Pre-release

0.6.0

This release is another release of gristmill with significant update. First,
the user interface for optimization has been updated for cleanness. The complex
optimization strategy has been replaced with separate options for the function
call.

Also internally, the code has been significantly cleaned up and improved. The
primary driving force for the revisions are the lessons learned when writing the
manuscripts for the optimization methodologies. Now the code has been made
completely in sync with the description in the manuscripts. This also brings
significant performance boost. For instance, for the optimization for problems
with terms composed of a large number of factors, the contraction optimization
algorithm has been upgraded with bits replacing hash tables for storing and
manipulating factor/summation sets. Improvements by several orders-of-magnitude
in performance can be seen in problems with say 20 factors. Even for problems
with a small number of factors, usually performance boost by about ten times can
be expected from the improvements in the summation optimizer.

A minor new feature is the addition of an option (remove_shallow) to disable
the inlining of shallow intermediates in the optimizer. This can be used in
cases where the default behaviour is undesired. Also an option named
req_an_opt can be used to possibly accelerate the optimization for
large-scale problems at the sacrifice of optimization quality. Also the tests
has been cleaned up for better coverage.

0.5.0

16 Jun 13:29
Compare
Choose a tag to compare
0.5.0 Pre-release
Pre-release

This is probably the largest revision made to gristmill ever. Most notably,
the summation optimization algorithm is completely rewritten. This algorithms
is based on the idea in the Bron-Kerbosch algorithm for max clique problem, and
it finally fills the last remaining gap between the automatically optimized
result with best optimization carried by human. The full algorithm can be
slow. However, options exist to fine-tune the balance between the time of
optimization and the quality of the result. Quite fortunately, for CCSD
equations, the greedy algorithm actually gives the same as the full
optimization. It is likely that generally good results can be given for
CC-style theories.

Also heavily reworked is the handling of costs and sizes internal to the code.
Discernible effect on users might be better handling of concrete numeric sizes,
either for ranges with sizes directly given by non-symbolic numbers or when all
the symbols are substituted by numbers for optimization. This will make the
code optimize the actual FLOP cost directly rather than the asymptotic cost.
This will also make the code run significantly faster due to the avoidance of
the complex polynomial arithmetic.

Another revision is that now the code can handle nonlinear factors like
(t_{ij})^2. Also added is the capability to disable any given
heuristic of optimization. Bug fixed in this release include,

  • Non-optimal evaluation will no longer be wrongly picked for optimization of a
    single contraction.

  • Inputs with neither summation nor external indices now will not crash the
    program.

  • Tensor definitions with external indices not actually used in its content
    will no longer have incorrect result.

  • Factors involving only external indices without any involvement of summed
    indices can now be treated.

0.4.0

06 Apr 22:16
Compare
Choose a tag to compare
0.4.0 Pre-release
Pre-release

0.4.0

This is a very small release. A bug on scalar intermediates is fixed by Roman
Schutski and a helper function mangle_base is added to mangle name of
indexed bases in code printing with greater ease.

0.3.0

30 Mar 06:06
Compare
Choose a tag to compare
0.3.0 Pre-release
Pre-release

0.3.0

This release primarily features the addition of product optimization
strategies. It was hoped that the new default SEARCHED will provide big
improvement over the previous behaviour, which can now be accessed by BEST.
Unfortunately, the improvement is only marginal. But the new strategy
GREEDY could be used for large problems defying deeper optimizations.

0.2.0

21 Mar 04:43
Compare
Choose a tag to compare
0.2.0 Pre-release
Pre-release

This is mostly a bug fix release. Problems in the handling of bounds in Fortran
printer and in the treatment purely scalar intermediates without any external
indices are fixed. And the handling of summations are improved with less
intermediates by removing duplicated and shallowly-defined ones. Most
importantly, the automatic result checker has been fixed.

0.1.0

15 Mar 03:47
Compare
Choose a tag to compare
0.1.0 Pre-release
Pre-release

This is the initial tentative release of gristmill. All basic functionalities are implemented and has been tested to be working for sample test cases.