able to decide target segment size, which implies the pattern:
rank 0 write the first segment, rank 1 writes the second segment, ...
added some comments on generate_data_flow_graph