static void usage()

in gloo/benchmark/options.cc [21:108]


static void usage(int status, const char* argv0) {
  if (status != EXIT_SUCCESS) {
    fprintf(stderr, "Try `%s --help' for more information.\n", argv0);
    exit(status);
  }

  fprintf(stderr, "Usage: %s [OPTIONS] BENCHMARK\n", argv0);

#define X(x) fputs(x "\n", stderr);
  X("");
  X("Participation:");
  X("  -s, --size=SIZE        Number of processes");
  X("                         Note: Need exactly two processes for send/recv benchmarks");
  X("  -r, --rank=RANK        Rank of this process");
  X("");
  X("Rendezvous:");
  X("  -h, --redis-host=HOST  Host name of Redis server");
  X("  -p, --redis-port=PORT  Port number of Redis server");
  X("  -x, --prefix=PREFIX    Rendezvous prefix (unique for this run)");
  X("      --shared-path=PATH File system rendezvous with this shared path");
  X("");
  X("Transport:");
  X("  -t, --transport=TRANSPORT Transport to use (tcp, ibverbs, ...)");
  X("      --sync=BOOL           Switch pairs to sync mode (default: false)");
  X("      --busy-poll=BOOL      Busy-poll in sync mode (default: false)");
  X("");
  X("Transport configuration for \"tcp\":");
  X("");
  X("  Note: if the device argument is not specified, Gloo uses the");
  X("  network device associated with the machine's hostname.");
  X("");
  X("      --tcp-device=DEV[,DEV...]  Network interface(s) to use (default: empty)");
  X("");
  X("Transport configuration for \"ibverbs\":");
  X("");
  X("  Note: the same port and index are used across all devices,");
  X("  in case multiple are specified.");
  X("");
  X("      --ib-device=DEV[,DEV...]  InfiniBand device(s) to use (default: mlx5_0)");
  X("      --ib-port=PORT            InfiniBand port to use (default: 1)");
  X("      --ib-index=INDEX          InfiniBand index to use (default: 0)");
  X("");
  X("Benchmark parameters:");
  X("      --no-verify        Do not verify results of first iteration");
  X("      --show-all-errors  Displays all errors when running with verify");
  X("      --inputs           Number of input buffers");
  X("      --elements         Number of floats to use per input buffer");
  X("      --warmup-iters     Number of warmup iterations to run (default: 5)");
  X("      --iteration-count  Number of iterations to run benchmark for");
  X("                         Iteration time is used by default if not specified");
  X("      --iteration-time   Minimum time to run benchmark for (default: 2s)");
  X("                         This value is unused if iteration count is specified");
  X("      --threads          Number of threads to spawn (default: 1)");
  X("      --nanos            Display timing data in nanos instead of micros");
  X("      --gpudirect        Use GPUDirect (CUDA only)");
  X("      --halfprecision    Use 16-bit floating point values");
  X("      --destinations     Number of separate destinations per host in "
                              "pairwise exchange benchmark");
  X("Algorithm parameters:");
  X("      --base           The base for allreduce_bcube (if applicable)");
  X("      --messages       The number of messages to send from A to B for");
  X("                       sendrecv_stress and isendirecv_stress (default: 10000)");
  X("");
  X("BENCHMARK is one of:");
  X("  allgather");
  X("  allgather_v");
  X("  allgather_ring");
  X("  allreduce_ring");
  X("  allreduce_ring_chunked");
  X("  allreduce_halving_doubling");
  X("  allreduce_bcube");
  X("  allreduce_local");
  X("  alltoall");
  X("  alltoall_v");
  X("  barrier_all_to_all");
  X("  broadcast");
  X("  broadcast_one_to_all");
  X("  pairwise_exchange");
  X("  reduce");
  X("  reduce_scatter");
  X("  scatter");
  X("  sendrecv_roundtrip");
  X("  sendrecv_stress");
  X("  isendirecv_stress");
  X("");

  exit(status);
}