added all_gather not-in-place version and target concept