Skip to content

Commit

Permalink
v2.3 patch notes (#76)
Browse files Browse the repository at this point in the history
* Docs: Adds v2.3 changelog

* Cleanup: Minor imports and style
  • Loading branch information
dgasmith committed Dec 1, 2018
1 parent e134977 commit 02faa68
Show file tree
Hide file tree
Showing 5 changed files with 33 additions and 10 deletions.
29 changes: 28 additions & 1 deletion docs/source/changelog.rst
Original file line number Diff line number Diff line change
@@ -1,7 +1,34 @@
Changelog
=========

2.2.0 / 2018-MM-DD
2.3.0 / 2018-12-01
------------------

This release primarily focuses on expanding the suite of available path
technologies to provide better optimization characistics for 4-20 tensors while
decreasing the time to find paths for 50-200+ tensors. See `Path Overview <path_finding.html#performance-comparison>`_ for more information.

New Features
++++++++++++
- (:pr:`60`) A new ``greedy`` implementation has been added which is up to two orders of magnitude faster for 200 tensors.
- (:pr:`73`) Adds a new ``branch`` path that uses ``greedy`` ideas to prune the ``optimal`` exploration space to provide a better path than ``greedy`` at sub ``optimal`` cost.
- (:pr:`73`) Adds a new ``auto`` keyword to the :func:`opt_einsum.contract` ``path`` option. This keyword automatically chooses the best path technology that takes under 1ms to execute.

Enhancements
++++++++++++
- (:pr:`61`) The :func:`opt_einsum.contract` ``path`` keyword has been changed to ``optimize`` to more closely match NumPy. ``path`` will be deprecated in the future.
- (:pr:`61`) The :func:`opt_einsum.contract_path` now returns a :func:`opt_einsum.contract.PathInfo` object that can be queried for the scaling, flops, and intermediates of the path. The print representation of this object is identical to before.
- (:pr:`61`) The default ``memory_limit`` is now unlimited by default based on community feedback.
- (:pr:`66`) The Torch backend will now use ``tensordot`` when using a version of Torch which includes this functionality.
- (:pr:`68`) Indices can now be any hashable object when provided in the `"Interleaved Input" <input_format.html#interleaved-input>`_ syntax.
- (:pr:`74`) Allows the default `transpose` operation to be overridden to take advantage of more advanced tensor transpose libraries.
- (:pr:`73`) The ``optimal`` path is now significantly faster.

Bug fixes
+++++++++
- (:pr:`72`) Fixes the `"Interleaved Input" <input_format.html#interleaved-input>`_ syntax and adds documentation.

2.2.0 / 2018-07-29
------------------

New Features
Expand Down
3 changes: 1 addition & 2 deletions opt_einsum/backends/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,9 @@
Compute backends for opt_einsum.
"""

from .dispatch import (get_func, has_einsum, build_expression, evaluate_constants, has_backend)

# Backends
from .cupy import to_cupy
from .dispatch import (get_func, has_einsum, build_expression, evaluate_constants, has_backend)
from .tensorflow import to_tensorflow
from .theano import to_theano
from .torch import to_torch
Expand Down
5 changes: 3 additions & 2 deletions opt_einsum/helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
"""

import numpy as np

from .parser import get_symbol

__all__ = ["build_views", "compute_size_by_dict", "find_contraction", "flop_count"]
Expand All @@ -18,9 +19,9 @@ def build_views(string, dimension_dict=None):
Parameters
----------
tensor_list : list of str
string : list of str
List of tensor strings to build
dimension_dictionary : dictionary
dimension_dict : dictionary
Dictionary of index _sizes
Returns
Expand Down
4 changes: 1 addition & 3 deletions opt_einsum/tests/test_contract.py
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,6 @@
'aef,fbc,dca->bde',
]


all_optimizers = ['optimal', 'branch-all', 'branch-2', 'branch-1', 'greedy']


Expand Down Expand Up @@ -181,8 +180,7 @@ def test_contract_expressions(string, optimize, use_blas, out_spec):
shapes = [view.shape for view in views]
expected = contract(string, *views, optimize=False, use_blas=False)

expr = contract_expression(
string, *shapes, optimize=optimize, use_blas=use_blas)
expr = contract_expression(string, *shapes, optimize=optimize, use_blas=use_blas)

if out_spec and ("->" in string) and (string[-2:] != "->"):
out, = helpers.build_views(string.split('->')[1])
Expand Down
2 changes: 0 additions & 2 deletions opt_einsum/tests/test_input.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@
Tests the input parsing for opt_einsum. Duplicates the np.einsum input tests.
"""

import sys

import numpy as np
import pytest

Expand Down

0 comments on commit 02faa68

Please sign in to comment.