New Features
Vertical SDFG Layout
Large SDFGs with complex state machines are hard to navigate and understand. A new vertical layout now helps with this. The new layout aims to vertically lay out an SDFG's state machine similar to the vertical structure of source code, which we're familiar with reading. Doing so more naturally exposes program order and control flow constructs such as branching or loops. The layout can be turned on or off through the SDFG editor settings.
Improved SDFG Navigation
Together with the new vertical layout, SDFGs can now be (optionally) navigated more akin to how PDF documents are navigated, with a scroll navigation rather than the traditional pan-and-zoom navigation. With this option turned on, SDFGs can be scrolled vertically with the scroll wheel, and zooming is performed via Ctrl. + scroll wheel. This allows for much easier navigation of tall, vertical SDFGs. The option can be toggled in the SDFG editor settings.
Additionally, long edges have traditionally been hard to navigate, especially in the legacy layout. To address this, we have added an option to navigate directly to an edge's start/source or destination/sink position with the click of a button.
Step-Wise SDFG Collapse / Expand
Hierarchical elements in SDFGs, such as Maps, States, and Nested SDFGs can be expanded and collapsed to show / hide details as needed. However, the default behavior of the 'collapse all' or 'expand all' buttons in the editor has now changed to only expand / collapse one level at a time. Each subsequent click collapses / expands the next level. This offers much more flexibility in navigating the SDFG and saves a user from having to manually collapse / expand dozens of elements. A shift + click on the respective buttons still collapses / expands all elements.
Editing Compressed SDFGs
Compressed SDFG files (.sdfgz
) can now be edited, analyzed, and optimized similar to regular SDFG files. Their reduced filesize and binary file representation immensly speeds up the optimization and editing workflow, making them the new filetype of choice for working with larger programs and SDFGs. DaCe supports saving and loading of these files out of the box, or they can be obtained / read through the use of gzip
.
Work / Depth Analysis (@hodelcl)
A new work / depth analysis has been made available together with the latest version of DaCe (v0.15). The analysis provides overlays that visualize the work, depth, and average parallelism, as well as the operational intensity for each SDFG element individually.
SDFG Visualization Improvements
Basic Tasklet Code Highlighting
Tasklet code is now highlighted to clearly show the use of symbols inside tasklets in red. The tasklet code now also shows where other variable names are being used, by highlighting the code variables corresponding to input and output connectors when hovering over said connectors.
Dependency Edges
Dependency edges (also known as empty memlets) are now clearly distinguishable from the rest of the data movement edges in an SDFG by having them represented as simple lines rather than arrows. This more clearly indicates that there is no data movement happening across them.
State Machine
The state machine often contains complex control flow which can only be understood by examining what interstate edges carry which conditions or assignments across them. This information has only been accessible by hovering over edges or clicking them to view them in the details panel. There is now a setting that can be turned on in the viewer settings (see 'Improved SDFG Editor Settings UI' below), with which interstate edges can be toggled to always show their labels:
Preview Features
- The SDFG editor is now capable of showing experimental, hierarchical Control Flow Graph-SDFGs that are currently being experimented with in DaCe. This feature is a preview and is likely to change.
- Support for external nested SDFGs has been added as an experimental preview feature to both DaCe and the viewer.
Engineering
Performance Enhancements
A slew of re-engineering changes bring a roughly 2x speedup in most editing and SDFG navigation workflows
Improvements and Bugfixes
Improved SDFG Editor Settings UI
SDFG editor settings have been extended to allow for more customizeability. They are now also persisted across sessions in the VSCode user setttings.
DaCe Backend Panel
A new status panel allows for better control and management of the DaCe optimization backend. The panel allows re-starting or stopping the backend, reading and changing the port the backend runs on, or connecting to a different backend that is launched externally or remotely.
Other Improvements and Fixes
- Various smaller UI improvements and bugfixes related to the info tray and the minimap
- Improve display for unknown, unregistered map schedules
- Allow symbols to be modified similar to data containers and list them separately in the info tray
- Update data container attributes when changing data container types (from scalar to array etc.)
- Provide a troubleshooting link if the DaCe backend does not start
- Always first try to query the DaCe backend for up-to-date metadata when editing an SDFG before loading static dictionaries (web and built-in)
- Connects the DaCe backend through IPv6 for better future proofing (@philip-paul-mueller)
Get the latest version in the VSCode marketplace!