in fbpcs/emp_games/attribution/decoupled_attribution/main.cpp [23:124]
int main(int argc, char* argv[]) {
fbpcs::performance_tools::CostEstimation cost =
fbpcs::performance_tools::CostEstimation("computation_experimental");
cost.start();
folly::init(&argc, &argv);
gflags::ParseCommandLineFlags(&argc, &argv, true);
fbpcf::AwsSdk::aquire();
XLOGF(INFO, "Party: {}", FLAGS_party);
XLOGF(INFO, "Server IP: {}", FLAGS_server_ip);
XLOGF(INFO, "Port: {}", FLAGS_port);
XLOGF(INFO, "Base input path: {}", FLAGS_input_base_path);
XLOGF(INFO, "Base output path: {}", FLAGS_output_base_path);
try {
auto [inputFilenames, outputFilenames] =
aggregation::private_attribution::getIOFilenames(
FLAGS_num_files,
FLAGS_input_base_path,
FLAGS_output_base_path,
FLAGS_file_start_index,
FLAGS_use_postfix);
int16_t concurrency = static_cast<int16_t>(FLAGS_concurrency);
if (FLAGS_party == static_cast<int>(fbpcf::Party::Alice)) {
XLOGF(INFO, "Attribution Rules: {}", FLAGS_attribution_rules);
XLOG(INFO)
<< "Starting attribution as Publisher, will wait for Partner...";
if (FLAGS_use_xor_encryption) {
aggregation::private_attribution::startAttributionAppsForShardedFiles<
aggregation::private_attribution::PUBLISHER,
fbpcf::Visibility::Xor>(
inputFilenames,
outputFilenames,
concurrency,
FLAGS_server_ip,
FLAGS_port,
FLAGS_attribution_rules);
} else {
aggregation::private_attribution::startAttributionAppsForShardedFiles<
aggregation::private_attribution::PUBLISHER,
fbpcf::Visibility::Public>(
inputFilenames,
outputFilenames,
concurrency,
FLAGS_server_ip,
FLAGS_port,
FLAGS_attribution_rules);
}
} else if (FLAGS_party == static_cast<int>(fbpcf::Party::Bob)) {
XLOG(INFO)
<< "Starting attribution as Partner, will wait for Publisher...";
if (FLAGS_use_xor_encryption) {
aggregation::private_attribution::startAttributionAppsForShardedFiles<
aggregation::private_attribution::PARTNER,
fbpcf::Visibility::Xor>(
inputFilenames,
outputFilenames,
concurrency,
FLAGS_server_ip,
FLAGS_port,
FLAGS_attribution_rules);
} else {
aggregation::private_attribution::startAttributionAppsForShardedFiles<
aggregation::private_attribution::PARTNER,
fbpcf::Visibility::Public>(
inputFilenames,
outputFilenames,
concurrency,
FLAGS_server_ip,
FLAGS_port,
FLAGS_attribution_rules);
}
} else {
XLOGF(FATAL, "Invalid Party: {}", FLAGS_party);
}
} catch (const std::exception& e) {
XLOG(ERR) << "Error: Exception caught in Attribution run.\n \t error msg: "
<< e.what() << "\n \t input directory: " << FLAGS_input_base_path;
std::exit(1);
}
cost.end();
XLOG(INFO, cost.getEstimatedCostString());
if (FLAGS_run_name != "" &&
FLAGS_party == static_cast<int>(fbpcf::Party::Alice)) {
XLOGF(
INFO,
"{}",
cost.writeToS3(
FLAGS_run_name,
cost.getEstimatedCostDynamic(
FLAGS_run_name, FLAGS_attribution_rules, FLAGS_aggregators)));
}
return 0;
}