Colls::gatherv(send_buffer(args.send_size * args.datatype1->size()), args.send_size, args.datatype1,
(rank == args.root) ? recv_buffer(args.recv_size_sum * args.datatype2->size()) : nullptr,
args.recvcounts->data(), args.disps.data(), args.datatype2, args.root, MPI_COMM_WORLD);
Colls::gatherv(send_buffer(args.send_size * args.datatype1->size()), args.send_size, args.datatype1,
(rank == args.root) ? recv_buffer(args.recv_size_sum * args.datatype2->size()) : nullptr,
args.recvcounts->data(), args.disps.data(), args.datatype2, args.root, MPI_COMM_WORLD);