Avoid symbolic output extent in newOutputDomain#358
Avoid symbolic output extent in newOutputDomain#358jacobhinkle wants to merge 12 commits intomainfrom
Conversation
|
I've encountered an interesting limitation. For a dynamic resize resulting in a broadcast, we may have a concretized root domain of type This currently fails when building |
|
Note that |
|
It seems to me that the problem lies in |
I believe so. |
|
OK, then I think that would be preferred over adding broadcast ops. Let me know if you need any help. |
With this, now failing at [E thread_pool.cpp:109] Exception in thread pool task: it != bcast_map_.end() INTERNAL ASSERT FAILED at "/opt/pytorch/nvfuser/csrc/root_domain_map.cpp":630, please report a bug to PyTorch. Not found: iS4{i0}rf in T2[ iS4{i0}rf iS6{i2}rf ] (Rfactor: [ bS10{( i0 + i5 )}rf iS11{( i2 + i6 )}rf ])
Using this, we can enable mapping of Symbolic IterDomains when doing p2c propagation in concretization, and still keep it disabled for the purposes of exact mapping. This fixes some errors but I am now seeing errors like > [E thread_pool.cpp:110] Exception in thread pool task: is_overriden || index_map.find(alloc_dom[i]) != index_map.end() INTERNAL ASSERT FAILED at "/opt/pytorch/nvfuser/csrc/index_compute.cpp":1634,
|
This is being addressed in #420 |
Fixes #357
There are a combination of issues address by this PR. First, as noted in the issue, we should not exact map between
Symbolicdomains. However, there is still an issue where the output extent, computed at Fusion definition, is sometimes set equal to the symbolic extent even though that extent might concretize to 1 and then become a resolved broadcast. In those cases we should either use anyIterationextents if available, or if we have an unambiguousSymbolicextent, we can use it.