Data Parallel Algorithms