Project Structure
DaCe is divided into the following subfolders:
- Interfaces and entry points:
frontend
: Different language frontends that can be converted to SDFGs:
frontend/python
: Python frontend. See Writing DaCe Programs in Python and DaCe Python Frontend
frontend/common
: Common utilities for multiple frontends
cli
: Command-Line Utilities that can view, compile, and profile SDFGs
- Intermediate representation:
sdfg
: The SDFG Builder API
sdfg/graph.py
: General graph API for manipulation and traversal of nodes, edges, and their contents
sdfg/{nodes, scope, sdfg, state}.py
: Interfaces for specific SDFG components
sdfg/validation.py
: Functions that validate the correctness of SDFGs. See Graph Validation
sdfg/propagation.py
: Memlet Propagation
dtypes.py
: Basic enumerations and data types that are used in DaCe
data.py
: Definitions for usage and creation of Data Containers and Access Nodes
memlet.py
: Definition of a Memlet
subsets.py
: Subset types used in memlets (e.g.,Range
)
symbolic.py
: Symbolic types, expressions, conversion, and analysis functions. See Symbols and symbolic
- Optimization and transformation:
transformation
: Transformation classes and helpers. See Pattern-Matching and Subgraph Transformations
transformations/{dataflow, interstate, subgraph}
: Built-in DaCe transformations
optimization
: Automatic SDFG tuning interfaces
- Backends:
codegen
: Code Generation
runtime
: Thin runtime that supports DaCe-generated code. See C++ Runtime Headers
sourcemap.py
: Source mapping capabilities that maps frontend code <–> SDFG <–> generated code
- Library nodes and libraries (See libraries):
library.py
: Library interface
libraries
: Built-in libraries
- Configuration
config.py
: Configuration-related classes. See Configuring DaCe
config_schema.yml
: Configuration specification file (schema) with defaults and documentation
- Miscellaneous
serialize.py
andregistry.py
: Functionality that supports serialization and extensibility. See Properties and Serialization
external
: Git submodules containing necessary external projects
viewer
: Contains infrastructure for rendering SDFGs. Used in Jupyter notebooks and in sdfv - SDFG Viewer