SMI Integration
- Dominant language
- Python
- Stars
- 593
- Forks
- 163
- Avg merge
- 2d 23h
- Merged PRs (30d)
- 60
Description
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
Contributor guide
Assessment
This issue has not been assessed yet.