Unfortunately, with ProcessGroup send/recv, this needs to be done in two comms (size and data) for now. We are building a new RPC API 4 which could simplifies it a bit at the API level, but internally it still uses ProcessGroup send/recv currently until we have a better comm primitive for that.