Skip to content

Releases: spcl/dace

DaCe v2.0.0 Pre-Release (alpha 4)

Pre-release

Choose a tag to compare

@tbennun tbennun released this 25 Jun 14:14
853d8b5

What's Changed

  • Symbolic serialization format changed to a type-safe representation, see #2366
  • Bug fixes

Full Changelog: v2.0.0-alpha3...v2.0.0-alpha4

DaCe v2.0.0 Pre-Release (alpha 3)

Pre-release

Choose a tag to compare

@tbennun tbennun released this 11 May 14:48

What's Changed

  • More documentation
  • Minor bug fixes

Full Changelog: v2.0.0-alpha2...v2.0.0-alpha3

DaCe v2.0.0 Pre-Release (alpha 2)

Pre-release

Choose a tag to compare

@tbennun tbennun released this 11 Jan 06:07
b88b82b

This is a second pre-release version of DaCe, with the following two major changes:

  • Machine Learning Integration for DaCe (Autodiff - ONNX - PyTorch) by @affifboudaoud in #2164
  • Extract FPGA code generation to separate repository by @tbennun in #2252

For all changes, see the Full Changelog: v2.0.0-alpha1...v2.0.0-alpha2

DaCe v2.0.0 Pre-Release (alpha)

Pre-release

Choose a tag to compare

@tbennun tbennun released this 08 Dec 16:05
7f0fc91

This version is a pre-release tracker for dace v2.0

v1.0.2

Choose a tag to compare

@tbennun tbennun released this 20 Mar 15:19

This release contains backports of further minor fixes.

What's Changed

Full Changelog: v1.0.1...v1.0.2

v1.0.1

Choose a tag to compare

@tbennun tbennun released this 23 Jan 15:49

This release contains backports of minor fixes following the release of v1.0.0.

Full Changelog: v1.0.0...v1.0.1

v1.0.0

Choose a tag to compare

@tbennun tbennun released this 16 Nov 03:31
b5f91e1

We are happy to announce DaCe version 1.0!

It is a major release milestone, and we went over many of the known issues over the years to ensure that this is the most stable version we can release without making fundamental changes to the framework. The Stateful DataFlow multiGraph (SDFG) intermediate representation used in this version is faithful to the original paper, which was published in 2019.

On a fundamental level, this release is no different from a minor version release (this version could have been DaCe 0.17), so there are no breaking changes from v0.x.

We would like to thank everyone who contributed to DaCe over the years and helped reach this milestone! It would not have been possible without you.

Release Notes

In addition to many issues and bugfixes courtesy of @acalotoiu, @tim0s, @htorst, @tbennun, @phschaad, @BenWeber42, @philip-paul-mueller, @luigifusco, @ThrudPrimrose, @FlorianDeconinck, @pratyai, @edopao, @kotsaloscv, and @iBug, several new features for quality of life and future development were added.

New features introduced into the SDFG IR and builder API:

  • Add GUIDs to SDFG elements and SDFG diff support (by @phschaad)
  • Added can_be_applied_to() to Transformation API (by @philip-paul-mueller)
  • SDFG.auto_optimize, SDFG.regenerate_code, and SDFG.as_schedule_tree are now easily accessible as API methods and fields

New Python frontend features

  • You can now specify the storage location of expressions inline using the @ operator or type hints. Examples:
    • a = np.ones(M) @ dace.StorageType.CPU_ThreadLocal
    • b: dace.float64[M, N] @ dace.StorageType.GPU_Global = np.zeros(...)

New transformations

New code generation features

  • clang-format can now be configured to be called on generated code (by @ThrudPrimrose)

Experimental features

  • Control flow (loop, conditional, named) regions (by @phschaad and @luca-patrignani). Stay tuned for more updates in the next development releases!

Other changes and bugfix highlights

Full Changelog: v0.16.1...v1.0.0

v1.0.0rc1

v1.0.0rc1 Pre-release
Pre-release

Choose a tag to compare

@tbennun tbennun released this 24 Oct 14:41
073b613

We are happy to announce the first release candidate of DaCe version 1.0!

This version uses the SDFG intermediate representation as published in the original Stateful Dataflow Multigraphs paper, which has been stable for quite some time.

On a fundamental level, this release is no different from a minor version release (this version could have been DaCe 0.17). However, with this release we would like to emphasize stability rather than new features.

If you are using DaCe and have a critical or blocking issue that makes it unstable, please create an issue and refer to it in the release discussion, so that we can add it to our release plan. Thank you for using DaCe!

Release Notes

New features:

  • Add GUIDs to SDFG elements and SDFG diff support (by @phschaad)
  • Added can_be_applied_to() to Transformation API (by @philip-paul-mueller)
  • Support SymPy 1.13 (by @BenWeber42)
  • New WCRToAugAssign transformation (by @alexnick83)
  • (Experimental) Control flow (loop, conditional, named) regions (by @phschaad and @luca-patrignani). Stay tuned for more updates in the next development releases!

Bugfixes:

See Full Changelog: v0.16.1...v1.0.0rc1

New Contributors

v0.16.1

Choose a tag to compare

@BenWeber42 BenWeber42 released this 20 Jun 18:02
93b557f

What's Changed

The main purpose of this release is to require NumPy < 2 for DaCe, since NumPy 2.0.0 contains breaking changes which aren't compatible with DaCe currently.

Recently, NumPy 2.0.0 has been released: https://numpy.org/news/#numpy-200-released

The release comes with documented breaking changes. Unfortunately, DaCe is currently not compatible with these changes. This also affects the recent 0.16 release of DaCe. Hence, we adjust our dependency requirements to use NumPy < 2 as a temporary work-around in this PR:

Fix numpy version to < 2.0 by @phschaad in #1601

Long term, we are tracking adding support for NumPy 2 in DaCe in this issue: #1602

Fix constant propagation failing due to invalid topological sort by @phschaad in #1589

This changeset has also landed in DaCe's development branch earlier. It fixes an issue where the ConstantPropagation pass can fail for certain graph structures.

Full Changelog: v0.16...v0.16.1

v0.16

Choose a tag to compare

@BenWeber42 BenWeber42 released this 13 Jun 20:26
d6f481a

What's Changed

CI/CD pipeline for NOAA & NASA weather and climate model by @FlorianDeconinck & @BenWeber42 in #1460, #1478 & #1575

Our collaborators NOAA & NASA have successfully used DaCe as an optimization framework and back-end for some of the components of their climate and weather model. Particularly, the FV3 dycore and GFS physics parametrization have been ported to a combination of GT4Py Python DSL and DaCe. DaCe is used within their stack as a stencil backend and as a full-program optimizer integrating stencils and glue-code together.

With this CI/CD pipeline, we run various checks for those components on every change to DaCe. This is an important step for DaCe to ensure stability for real-world applications that utilize DaCe. We are very grateful for this contribution and the collaboration with NOAA & NASA.

Changed default of serialize_all_fields to False by @BenWeber42 in #1564

This feature was already implemented in the previous 0.15.1 release in #1452, but not enabled by default. In this release, we are changing the default so that only fields with non-default values are serialized. This generally leads to a reduction in file size for SDFGs.

Since each DaCe version stores the default values of each field, it is still possible to recover these missing values. Default values should rarely change across different DaCe versions. Nevertheless, we want to caution users & developers when using SDFG files with different DaCe versions.

Analysis passes for access range analysis by @tbennun in #1484

Adds two analysis passes to help with analyzing data access sets: access ranges and Reference sources. To enable constructing sets of memlets, this PR also reintroduces data descriptor names to memlet hashes.

Reference-to-View pass and comprehensive reference test suite by @tbennun in #1485

Implements a reference-to-view pass (converting references to views if they are only set to one particular subset). Also improves the simplify pipeline in the presence of Reference data descriptors and adds multiple tests that use references.

Ndarray strides by @alexnick83 in #1506

The PR adds support for custom strides to dace.ndarray. Furthermore, the stride unit is number of elements, in contrast to NumPy/CuPy, where it is number of bytes. Custom strides are not supported for numpy.ndarray and cupy.ndarray.

Structure Support to NestedSDFGs and Python Frontend by @alexnick83 in #1366

Adds basic support for nested data (Structures) to the Python frontend. It also resolves issues with the use of Structures in nested SDFG scopes (mostly code generation).

Generalize StructArrays to ContainerArrays and refactor View class structure by @tbennun in #1504

This PR enables the use of an array data descriptor that contains a nested data descriptor (e.g., ContainerArray of Arrays). Its contents can then be viewed normally with View or StructureView.
With this, concepts such as jagged arrays are natively supported in DaCe (see test for example).
Also adds support for using ctypes pointers and arrays as arguments to SDFGs.

This PR also refactors the notion of views to a View interface, and provides views to arrays, structures, and container arrays. It also adds a syntactic-sugar/helper API to define a view of an existing data descriptor.

Add support for distributed compilation in DaceProgram by @kotsaloscv in #1551 & #1555

Adds configurable support for distributed compilation (MPI) to the Python front-end (via mpi4py). Distributed compilation can be enabled with the distributed_compilation parameter in the dace.program decorator.

Fixes and other improvements:

New Contributors

Full Changelog: v0.15.1...v0.16