dace
dace copied to clipboard
SMI Integration
Integration of a minimal set of SMI functionalities (p2p communications for the moment being).
Possible solution
Introduce the concept of remote streams
Technical details
If SMI should be used or not, is determined at codegeneration by looking at if remote streams are used
CMake Integration
The use of SMI is detected in the code-generation phase. In this case, proper Make targets are created for favoring compilation/emulation of SMI based programs.
This requires to define a topology file (that contains the mapping program <-> rank) for the sake of emulation. In this first implementation, this is not so meaningful but will be required for full SMI integration
Codegen object
Defined a target_name field, which can be set when returning a codegenobject and we want to have the field initialized
Generated code
For the sake of enabling an easy emulation toolchain, the host generated code will assume the presence of the following attributes:
-
smi_rank
: current rank (int) -
smi_num_ranks
: total number of ranks (int) -
smi_device
: device used (int, useful for running on Noctua)
These must be defined by specializing the SDFG.
TODO: this must be cleaned