spcl / spcl/dace

Python Front-End Bug In Strided Memlet (Step !=1) Leading to a View

Open
#2,029 1 comment 0 reactions 3 assignees Claimed by @tbennun View on GitHub
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.