This link may help.
There are some more, which describe about the implementation too.
NOPI tables use an internal random row hash generator, Rows are assigned to the amps according the this randomly generated row hash.
Rows are appended at the end of each table, so no sorting is required. All the rows on one amp will have same hash bucket number, the uniqueness value is incremented so rowid is unique. Random row hash generator is used at AMP level or PE level. for SQL based functions PE uses the random generator, while in case of Fastload based functions AMP uses the random generator and assign rows.