Python Front-End Bug In Strided Memlet (Step !=1) Leading to a View
- Dominant language
- Python
- Stars
- 593
- Forks
- 163
- Avg merge
- 2d 23h
- Merged PRs (30d)
- 60
Description
See the following example, running on dace main branch:
```
import dace
import cupy as cp
import numpy as np
from dace.transformation.passes import ArrayElimination, StateReachability
#try:
src = np.ones(40, dtype=cp.uint32)
dst = cp.zeros(20, dtype=cp.uint32)
@dace.program
def fail(dst: dace.uint32[20] @ dace.dtypes.StorageType.GPU_Global, src: dace.uint32[40]):
dst[0:20:2] = src[0:40:4]
sdfg = fail.to_sdfg(simplify=False)
sdfg.save("stided_copy_from_frontend_unsimplified.sdfgz", compress=True)
sdfg.validate()
```
Fails with:
```
Traceback (most recent call last):
File "/home/primrose/Work/DaCellerator/CopyGen/copygen.py", line 17, in
sdfg.validate()
File "/home/primrose/Work/dace/dace/sdfg/sdfg.py", line 2497, in validate
validate_sdfg(self, references, **context)
File "/home/primrose/Work/dace/dace/sdfg/validation.py", line 336, in validate_sdfg
validate_control_flow_region(sdfg, sdfg, initialized_transients, symbols, references, **context)
File "/home/primrose/Work/dace/dace/sdfg/validation.py", line 143, in validate_control_flow_region
validate_state(edge.dst, region.node_id(edge.dst), sdfg, symbols, initialized_transients, references,
File "/home/primrose/Work/dace/dace/sdfg/validation.py", line 811, in validate_state
raise InvalidSDFGEdgeError("Memlet other_subset out-of-bounds", sdfg, state_id, eid)
dace.sdfg.validation.InvalidSDFGEdgeError: Memlet other_subset out-of-bounds (at state assign_13_4, edge src[0:40:4] -> [0:40:4] (src:None -> src_0:views))
Invalid SDFG saved for inspection in /home/primrose/Work/DaCellerator/CopyGen/_dacegraphs/invalid.sdfgz
```
Contributor guide
Assessment
This issue has not been assessed yet.