-
Notifications
You must be signed in to change notification settings - Fork 109
Description
Meshes are logically regions + ranks of {Host,Proc,Actor}. Today this is also their physical representation. This helps to simplify a lot of things, enables direct addressing, and so forth. The same is true of concepts like ValueMesh which logically map rank -> T-typed value (and today, that is their physical representation).
Our bet is that we can make these data structures efficient in practice, so that we can retain their simple model while allowing the system to scale.
We need an RLE (or similar) ValueMesh (and ValueMeshMut). This is going to be important for representing rank -> T-typed data structures (e.g., rank->seq for comm actor). This should take advantage of the fact that these data structures tend to be sliced along their dimension. Can we have a dimension-aware RL encoding?
Meshes also need to be efficiently represented. Host meshes are generally not going to be very compressible, but we can represent proc and actor meshes (which derive from host mesh) in a more efficient way, probably using similar techniques to ValueMesh representation.
We should think about whether it makes sense to extend multipart encoding to encode other “parts”, and to enable stateful sessions. This is similar to how header compression works in http/2: if a channel has already transmitted a “part”, it needn’t do so again; rather it only needs to include a reference to it. This would allow us to transmit meshes (including sub-meshes) only once between any two nodes. This probably requires some form of object identity too.