Example #1
0
 const ConcreteValueBase* ESolver::CreateValue(const ESFixedTypeBase* Type, const string& ValueString)
 {
     switch(Type->GetBaseType()) {
     case BaseTypeBool:
         return CreateValue(Type, ParseBoolString(ValueString));
     case BaseTypeInt:
         return CreateValue(Type, ParseIntString(ValueString));
     case BaseTypeEnum:
         return CreateValue(Type, ParseEnumString(ValueString, Type));
     case BaseTypeBitVector:
         return CreateValue(Type, ParseBVString(ValueString, Type->As<ESBVType>()->GetSize()));
     default:
         throw TypeException("Unhandled type in CreateValue()");
     }
 }
std::vector<int> InputParserUtil::ParseWorkerAffinities(
    const int num_workers,
    const string &affinity_string) {
  std::vector<int> affinities;
  if (affinity_string.empty()) {
    affinities.resize(num_workers, -1);
    return affinities;
  }

  if (!ParseIntString(affinity_string, ',', &affinities)) {
    LOG(FATAL) << "--worker_affinities must be a comma-separated list of "
               << "integer CPU ids.\n";
  }

  for (const int affinity : affinities) {
    if (affinity < -1) {
      LOG(FATAL) << "CPU affinities specified by --worker_affinities must be "
                 << "non-negative, or -1 to specify no affinity.\n";
    }
  }

  if (affinities.size() < static_cast<std::size_t>(num_workers)) {
    std::cout << "--num_workers is " << num_workers << ", but only "
              << "specified " << affinities.size() << " CPU affinities "
              << "with --worker_affinities. "
              << (num_workers - affinities.size()) << " workers will be "
              << "unaffinitized.\n";
    affinities.resize(num_workers, -1);
  } else if (affinities.size() > static_cast<std::size_t>(num_workers)) {
    std::cout << "--num_workers is " << num_workers << ", but specified "
              << affinities.size() << " CPU affinities with "
              << "--worker_affinities. Extra affinities will be ignored.\n";
    affinities.resize(num_workers);
  }

  return affinities;
}