spcl / spcl/dace

ArrayElimination removes used array from SDFG

Open
#1,468 5 comments 0 reactions 0 assignees View on GitHub
bug transformations
Dominant language
Python
Stars
593
Forks
163
Avg merge
2d 23h
Merged PRs (30d)
60

Description

I am working on the attached SDFG. In the beginning I am able to apply translations. But after some time I start to get errors such as:
- `TypeError: Memlet is not of type Memlet (type: )`
- `AttributeError: 'AccessNode' object has no attribute 'code'`
- `Failed to load transformations (IndexError: list index out of range)`

This happens primary if I want to apply the simplify pass or when I want to apply some transformations others will still work.
I am not sure if the error is located inside the transformation or the vscode extension, but since I located through the extension I put the issue here.

I was only able to identify deterministic steps to reproduce the first error, for this do the following:
- Expand the map that goes over `[__iq__gather=0:12, __i1=0:50]` (inputs `c`, `o` and `v`).
- Fuse the created map that goes over `__iq__gather` with the top map `[__i0=0:12]` (input `e`).
- Run the simplify pass which will now fail.

I have attached the resulting SDFG.

[initial_sdfg.json](https://github.com/spcl/dace-vscode/files/13484542/initial_sdfg.json)
[Transformed_failing_sdfg.json](https://github.com/spcl/dace-vscode/files/13484543/Transformed_failing_sdfg.json)

Contributor guide

Open the contributing guide

Research direction

Load initial_sdfg.json and Transformed_failing_sdfg.json, then follow the listed map expansion and fusion steps before running the simplify pass. Start at the ArrayElimination transformation and inspect how the resulting SDFG handles memlets and access nodes. Done means the reproduced simplify pass no longer raises the reported type, attribute, or transformation-loading errors.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
compilers, hpc
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
42/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.