File SchedulingDecision.h

namespace faabric
namespace batch_scheduler

Enums

enum SchedulingTopologyHint

Values:

enumerator NONE
enumerator CACHED
enumerator FORCE_LOCAL
enumerator NEVER_ALONE
enumerator UNDERFULL
enum MigrationStrategy

Values:

enumerator BIN_PACK
enumerator EMPTY_HOSTS

Variables

const std::unordered_map<std::string, SchedulingTopologyHint> strToTopologyHint = {{"NONE", SchedulingTopologyHint::NONE}, {"CACHED", SchedulingTopologyHint::CACHED}, {"FORCE_LOCAL", SchedulingTopologyHint::FORCE_LOCAL}, {"NEVER_ALONE", SchedulingTopologyHint::NEVER_ALONE}, {"UNDERFULL", SchedulingTopologyHint::UNDERFULL},}
const std::unordered_map<SchedulingTopologyHint, std::string> topologyHintToStr = {{SchedulingTopologyHint::NONE, "NONE"}, {SchedulingTopologyHint::CACHED, "CACHED"}, {SchedulingTopologyHint::FORCE_LOCAL, "FORCE_LOCAL"}, {SchedulingTopologyHint::NEVER_ALONE, "NEVER_ALONE"}, {SchedulingTopologyHint::UNDERFULL, "UNDERFULL"},}
class SchedulingDecision

Public Functions

SchedulingDecision(uint32_t appIdIn, int32_t groupIdIn)
bool operator==(const SchedulingDecision &rhs) const = default
bool isSingleHost() const

Work out if this decision is all in one host. If the decision is completely on another host, we still count it as not being on a single host, as this host will be the main.

Will always return false if single host optimisations are switched off.

void addMessage(const std::string &host, const faabric::Message &msg)
void addMessage(const std::string &host, int32_t messageId, int32_t appIdx)
void addMessage(const std::string &host, int32_t messageId, int32_t appIdx, int32_t groupIdx)
void addMessageInPosition(int32_t pos, const std::string &host, int32_t messageId, int32_t appIdx, int32_t groupIdx, int32_t mpiPort)
int32_t removeMessage(int32_t messageId)
std::set<std::string> uniqueHosts()
void print(const std::string &logLevel = "debug")

Public Members

uint32_t appId = 0
int32_t groupId = 0
int32_t nFunctions = 0
std::vector<std::string> hosts
std::vector<int32_t> messageIds
std::vector<int32_t> appIdxs
std::vector<int32_t> groupIdxs
std::vector<int32_t> mpiPorts
std::string returnHost

Public Static Functions

static SchedulingDecision fromPointToPointMappings(faabric::PointToPointMappings &mappings)