separate allreduce() and fill_upper()