Skip to content
Snippets Groups Projects

dtype handling of graph and local operators

Closed Vicentini Filippo requested to merge op-dtype into master

Created by: femtobit

This PR mainly fixes some sources of unnecessary copies of the component operators of GraphOperator, which should results in a reduced memory consumption.

One example was Heisenberg: It was previously built as a GraphOperator, but since the coupling operator was specified as an integer array in the code, the constructor of LocalOperator performed n_edges copies of the same bond op, each time changing the type. Therefore this was true:

>>> h = Heisenberg(hi, g)
>>> np.all(h._operators[0] == h._operators[1])  # same entries
True
>>> h._operators[0] is h._operators[1]  # different array object
False

With the change in the first commit of this PR, no more duplication occurs:

# this PR
>>> h._operators[0] is h._operators[1]
True  # same objects, so no extra memory for the array contents is required

The second commit should fix similar potential issue and the third one fixes a bug in the logic which determined the default dtype of LocalOperator.

These changes likely don't make a noticeable difference with small local operators (like in Heisenberg) unless the graph is very large. But for higher-dimensional local Hilbert spaces, it might be useful.

Merge request reports

Loading
Loading

Activity

Filter activity
  • Approvals
  • Assignees & reviewers
  • Comments (from bots)
  • Comments (from users)
  • Commits & branches
  • Edits
  • Labels
  • Lock status
  • Mentions
  • Merge request status
  • Tracking
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
Please register or sign in to reply
Loading