Skip to content

Releases: spcl/dace-vscode

Version 1.7.0-insider

03 Nov 13:06
ef33449
Compare
Choose a tag to compare
Version 1.7.0-insider Pre-release
Pre-release

The insider version currently has feature parity with the public release version (v 1.6.0)

Get the latest version in the VSCode marketplace!

Version 1.6.0

03 Nov 13:06
ef33449
Compare
Choose a tag to compare

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.

image

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.

image

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.

276257247-9343e4d4-26a7-44fe-b215-23cbece96944

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:

279724878-b695711a-43f0-4fe1-a74f-ca4e739473f3

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.

image

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.

image

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!

Version 1.5.6-insider

06 Jul 13:33
51eb269
Compare
Choose a tag to compare
Version 1.5.6-insider Pre-release
Pre-release

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.

image

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.

image

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.

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.

image

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.

image

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)

Get the latest version in the VSCode marketplace!

Version 1.5.5-insider

24 Oct 13:58
51eb269
Compare
Choose a tag to compare
Version 1.5.5-insider Pre-release
Pre-release

Feature parity with 1.4.4.

Get the latest version in the VSCode marketplace!

Version 1.4.4

24 Oct 13:55
b50e0e5
Compare
Choose a tag to compare

Version 1.4 introduces a new form of close-up performance analysis for SDFGs, along with a set of bug fixes and smaller quality of life improvements.

New Features

Local View

A new local view allows tha analysis of close-up data-movement and reuse behavior by inspecting the exact access pattern on individual data containers throughout the program execution. Combining this with basic cache simulations gives an insight into the estimated amount of physical data movement.

lview_demo2

Exporting Transformations

Transformations can now be exported to JSON files for later use. This stores the exact subgraph the transformation applies to, including all corresponding properties, allowing the transformation to later be loaded elsewhere and be applied as intended to the correct location in the SDFG.

export_xform_demo

Passes

In addition to transformations, the transformation list now shows the available passes and pass pipelines in DaCe that can be run on a given SDFG. Passes can be run individually, or entire categories of passes can be run together in the form of a pipeline. This allows SDFGs to, for example, be simplified interactively through the UI.

Various Bugfixes and QOL improvements

  • July Improvements 2/2 (#180), with, among other things:
    • Improved error reporting (#172)
    • Enabling editing of SDFGs (adding and removing of elements) without a running DaCe daemon, and consequently without requiring an installation of DaCe (#157)
    • Addition of auto-open preferences for generated SDFGs and instrumentation reports to the VSCode settings (#182)
  • August Improvements, with, among other things:
    • Allow changing the editor layout through the UI
    • Improve the behavior of the information side panel
    • Allow closing the information side panel
    • Zoom to affected nodes when selecting a transformation
    • Allow the minimap to be disabled through the UI
    • Group transformations by type
    • Allow all transformations of a certain type to be applied at once
    • Fix a number of bugs related to property editing
    • Allow configuring of default custom transformation directories
    • Fix and improve Go-To-Source and Go-To-Generated-Code functionality
  • October Improvements (#203), with, among other things:
    • Improvements to the responsiveness of the information side panel
    • Bugfixes around the editing of transformation properties
    • Allowing cutouts to be saved as SDFG edits
    • Cleaned up transformation list with grouping by transformation type and removing categories that were not being used

Get the latest version in the VSCode marketplace!

Full Changelog: v1.2.0...v1.4.4

Version 1.3.2-insider

28 Jul 20:37
23da88a
Compare
Choose a tag to compare
Version 1.3.2-insider Pre-release
Pre-release

Version 1.3.1-insider introduces a new form of close-up performance analysis for SDFGs, along with a set of bug fixes and smaller quality of life improvements.

New Features

Local View

A new local view allows tha analysis of close-up data-movement and reuse behavior by inspecting the exact access pattern on individual data containers throughout the program execution. Combining this with basic cache simulations gives an insight into the estimated amount of physical data movement.

NOTE: This is a pre-release, and this feature is still under heavy development and you may experience instabilities and issues when using this feature. Reporting any such issues helps improve the feature and bring it to release faster!

lview_demo2

Exporting Transformations

Transformations can now be exported to JSON files for later use. This stores the exact subgraph the transformation applies to, including all corresponding properties, allowing the transformation to later be loaded elsewhere and be applied as intended to the correct location in the SDFG.

export_xform_demo

Various Bugfixes and QOL improvements

  • July Improvements 2/2 (#180), with, among other things:
    • Improved error reporting (#172)
    • Enabling editing of SDFGs (adding and removing of elements) without a running DaCe daemon, and consequently without requiring an installation of DaCe (#157)
    • Addition of auto-open preferences for generated SDFGs and instrumentation reports to the VSCode settings (#182)
  • August Improvements, with, among other things:
    • Allow changing the editor layout through the UI
    • Improve the behavior of the information side panel
    • Allow closing the information side panel
    • Zoom to affected nodes when selecting a transformation
    • Allow the minimap to be disabled through the UI
    • Group transformations by type
    • Allow all transformations of a certain type to be applied at once
    • Fix a number of bugs related to property editing
    • Allow configuring of default custom transformation directories
    • Fix and improve Go-To-Source and Go-To-Generated-Code functionality

Full Changelog: v1.2.0...v1.3.2-insider

Version 1.2.0

27 Jul 14:18
981916f
Compare
Choose a tag to compare

Version 1.2.0 represents a small incremental update that addresses some usability bugs and provides smaller quality of life improvements.

New Features

Custom Transformations

The built-in transformation list can now be extended by loading custom transformations from Python files through the top right corner of the transformation list. These custom transformations are shown alongside the built-in set of transformations wherever applicable.

image

Specializing SDFGs

SDFGs with symbolic parameters can now be specialized through the SDFG Analysis panel. Concrete constant values can be assigned to free symbols, which consequently parameterizes the corresponding parts of the graph with those constant values and allows the graph to be specialized for a specific data size.

specialize_demo

Toggle Minimap

The built-in minimap can now be enabled / disabled through the VSCode settings, under extension settings dace.sdfv.minimap.

Pre-Releases

The extension now supports a pre-release version, which is used to test new features before they are released. This version offers the newest features, but at the cost of stability. You can switch between the pre-release and release version of the extension in the built-in extension marketplace page.

image

Workspace Trust

To keep you and your files safe, we have adopted VSCode's workspace trust to provide an experience with a reduced, safe feature set for working in untrusted workspaces.

Various Bugfixes

  • Fix overlays, library node expansion issues, and inability to edit complex or compound data types in #165
  • June Fixes Round 2 in #167
  • July Improvements 1/2 in #173

Full Changelog: v1.1.0...v1.2.0

Version 1.1.0

25 Apr 15:41
9319658
Compare
Choose a tag to compare

New Features

Offline Editing

Many SDFG editing actions no longer require a running Python/DaCe daemon in the background. This speeds up SDFG editing and enables working with SDFGs to a higher degree without having DaCe installed.

Logical Groups

SDFG elements can now be grouped by any criteria and are colored by default. The color overlay can be disabled, and colors or group names can be adjusted on-the-fly.

grouping_demo

Data Container Editing

Data containers can now be edited:

  • New containers can be added to SDFGs
  • Existing containers can be modified and have their types and attributes changed
  • Containers can be deleted

dc_editing_demo

Other Changes and Improvements

  • Improved rendering to speed up drawing for large SDFGs
  • Improved UI for working with overlays
  • Stability improvements and bugfixes

Full Changelog: v1.0.0...v1.1.0

Version 1.0.17

07 Jul 11:39
0a83400
Compare
Choose a tag to compare

This Visual Studio Code extension provides a rich editor for SDFGs with included profiling and debugging, static analysis, and interactive optimization.

Features

SDFG Editor

The SDFG editor allows changing of all editable SDFG properties and elements. To allow for easier exploration of large graphs, most graph elements can be collapsed into a smaller, more compact representation. A number of viewing options, like the hiding of access nodes, can further assist with the editing of larger graphs.

sdfg-editor-example

SDFG Optimization / Transformations

With the SDFG Editor, data-centric applications can be optimized interactively using transformations.

  • A set of applicable performance optimizing transformations is shown in a sorted list in the side panel for each valid SDFG program.
  • A description provides more information about each transformation.
  • Transformations can be previewed before applying them to the SDFG.
  • The transformation history allows easy undoing/redoing of specific optimization steps.

sdfg-optimization-example

Static Analysis

SDFGs can be statically analyzed for memory or compute bottlenecks using a series of overlays, which highlight the number of arithmetic operations or the amount of memory moved per graph element.

sdfg-analysis-example

Profiling

A built-in profiling run configuration allows SDFG programs to be run multiple times1 while recording the median runtime for each execution. This median runtime is then reported back to you. Additionally, individual graph elements can be instrumented with timers, which generates a detailed profiling report after an SDFG's execution. This report can be loaded in an displayed via overlay on top of the SDFG.

1 The number of executions per profiling run can be configured in the .dace.config. This can be opened by typing Open .dace.config into the command bar.

Building SDFGs

Graph elements can be dynamically added and moved around, allowing the creation of entire SDFGs from scratch.

sdfg-editor-adding-elements-example

Debugging

SDFGs can be run with a debugger, allowing the setting of breakpoints on the graph. For this purpose, the extension will install the Python / C++ Debugger extension.

Version 0.3.5

19 May 07:48
ee399e7
Compare
Choose a tag to compare

This version adds the capability of editing SDFGs in the viewer, allowing the changing and addition of SDFG element properties/attributes. Once the DaCe backend is started by opening the DaCe Optimization side-panel, SDFG element properties are grouped by category if an element is selected. The user can then edit individual properties directly in the information panel, or in separate popup dialogues for more complex properties like ranges, subsets, dictionaries, and lists.