v0.16
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:
- Remove unused deps by @jack-mcivor in #1459
- Small fix for debuginfo that can be None by @kotsaloscv in #1469
- Make dynamic map range docs more explicit by @tbennun in #1474
- Added
nan
to the DaCemath
namespace by @philip-paul-mueller in #1437 - Fix for floordiv on GPU target by @edopao in #1471
- Add merge_group to CI for merge queues by @tbennun in #1482
- Fix SymPy dependency (again) by @tbennun in #1483
- Fix for CUDA codegen by @edopao in #1442
- Complete coverage for reference-to-view pass by @tbennun in #1488
- CMakeLists.txt Improvements for CUDA by @kylosus in #1337
- Faster Call for
CompiledSDFG
by @philip-paul-mueller in #1467 - Evaluate dtype_to_typeclass at use time by @tbennun in #1494
- Fix redefinition of interstate edge type in code generator by @tbennun in #1490
- CuPy fixes and special cases for HIP by @tbennun in #1492
- CI Update by @tim0s in #1502
- FPGA CI Update by @tim0s in #1508
- Bump jinja2 from 3.1.2 to 3.1.3 by @dependabot in #1503
- Jupyter fix by @phschaad in #1489
- Modernize HIP CMake commands, fix corner cases by @tbennun in #1518
- Remove the long-deprecated
symbol.get/set
methods by @tbennun in #1523 - Support output indirection in numpy frontend by @tbennun in #1509
- Fix for const references by @alexnick83 in #1522
DeadDataFlowElimination
will add type hint when removing a connector by @luca-patrignani in #1499- Fixed an issue in the Memlet duplication verification. by @philip-paul-mueller in #1526
- Refactor SDFG List to CFG List by @phschaad in #1511
- Dependency Edge Hotfix by @Berke-Ates in #1513
- Remove Property.from_string and Property.to_string by @luca-patrignani in #1529
- Fixed the
{in,out}_edges()
function of theDiGraph
class. by @philip-paul-mueller in #1527 - Fixes for structures nested in (nested) struct-arrays by @alexnick83 in #1534
- Updated and fixed the MapExpansion transformation. by @philip-paul-mueller in #1532
- Updated and fixed the MapDimShuffle tranformation. by @philip-paul-mueller in #1531
- Use State Fissioning to Generalize Transformations by @lukastruemper in #1462
- Fixed edge consolidation by @philip-paul-mueller in #1546
- Fix Profiler + Minor improvements by @JanKleine in #1548
- Add dtype for numpy.uintp which is compatible with C uintptr_t by @kotsaloscv in #1544
- Fix bug in map_fusion transformation by @edopao in #1553
- Updated the
add_state_{after, before}()
function. by @philip-paul-mueller in #1556 - Bump idna from 3.4 to 3.7 by @dependabot in #1557
- Fix infinite loops in memlet path when a scope cycle is added by @tbennun in #1559
- Adds support for ArrayView to the Python Frontend by @alexnick83 in #1565
- It is now possible to suppress output in
view()
by @philip-paul-mueller in #1566 - Bump jinja2 from 3.1.3 to 3.1.4 by @dependabot in #1569
- Correction in the docstring of the SDFG class's init method by @alexnick83 in #1571
- Fix Subscript literal evaluation for List by @FlorianDeconinck in #1570
SDFG.save()
now performs tilde expansion. by @philip-paul-mueller in #1578- Control Flow Block Constraints by @phschaad in #1476
- Updated SDFV and Corresponding HTML Template by @phschaad in #1580
- Changed Xilinx C++11 flag to C++14 by @BenWeber42 in #1585
- Made
dace::math::pow
forward tostd::pow
more generic by @Berke-Ates @philip-paul-mueller @phschaad @BenWeber42 in #1580
New Contributors
- @jack-mcivor made their first contribution in #1459
- @kylosus made their first contribution in #1337
- @luca-patrignani made their first contribution in #1499
Full Changelog: v0.15.1...v0.16