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

Invalid Cache State of Memlets #1703

Open
philip-paul-mueller opened this issue Oct 24, 2024 · 1 comment
Open

Invalid Cache State of Memlets #1703

philip-paul-mueller opened this issue Oct 24, 2024 · 1 comment

Comments

@philip-paul-mueller
Copy link
Collaborator

Memlets have two subset properties subset and other_subset.
While subset always refers to the data container the data attribute of the Memlet is pointing to, other_subset is option (it is also not super clear to me what None in this case means) and describes to "other" side of the connection.
However, subset does not necessarily describes the subset at the source of the connection nor the subset at the destination.
For this the properties src_subset and dst_subset are provided, that takes the direction into account.
However, this information is sometimes outdated and to overcome it try_initialize() of the Memlet must be called.
In addition there are also get_{src, dst}_subset() which first call try_initialize().

In order to make PR#1678 work, we had to call try_initialize() on all edges in the state, which is a very expensive operation.

@pratyai
Copy link
Collaborator

pratyai commented Oct 24, 2024

  • The interpretation of other_subset deserves at least a detailed doc-string at this point, in my opinion.
  • Do you recall what happened before using try_initialize()?
    I've been trying to see when _is_data_src field is None when calling src_subset and dst_subset. So far, the only time that happens when two memlets are compared with == or != in newast.py or propagation.py etc. files that work with partly initialized graph anyway (because they are building it).
    Turns out they could just just be compared with is and is not --- as far as I can tell, the tests do not fail that way. But that is an entirely different comparison.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants