Skip to content

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

@ThrudPrimrose

Description

@ThrudPrimrose

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 <module>
    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

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions