diff --git a/src/vt/vrt/collection/balance/temperedlb/tempered_enums.h b/src/vt/vrt/collection/balance/temperedlb/tempered_enums.h index b56414a333..abb55cb285 100644 --- a/src/vt/vrt/collection/balance/temperedlb/tempered_enums.h +++ b/src/vt/vrt/collection/balance/temperedlb/tempered_enums.h @@ -165,6 +165,36 @@ enum struct KnowledgeEnum : uint8_t { Log = 2 }; +/// Enum for the strategy to be used in transfer stage +enum struct TransferStrategyEnum : uint8_t { + /** + * \brief Original strategy + * + * Transfer one object per transfer as in original Grapevine approach. + */ + Original = 0, + /** + * \brief Original strategy improved by recursion + * + * When single object transfer is rejected, attempt to recurse in order to + * pull more objects into the transfer and hereby minimize work added by + * said transfer. + * This is especially useful when communication is taken into account, as + * object transfers typically disrupt local vs. global communication edges. + */ + Recursive = 1, + /** + * \brief Form object clusters and attempt to perform swaps. + * + * Object can be clustered according to arbitrary definition, and swaps + * of entire clusters, according the nullset, between ranks are attempted. + * This is especially useful when shared memory constraints are present, + * as breaking shared memory clusters results in higher overall memory + * footprint, in constrast with whole cluster swaps. + */ + ClusterSwap = 2, +}; + }}}} /* end namespace vt::vrt::collection::lb */ #endif /*INCLUDED_VT_VRT_COLLECTION_BALANCE_TEMPEREDLB_TEMPERED_ENUMS_H*/