CS267 Assignment 3: IS
Spring 2004

Dan Adkins, Sonesh Surana, Shariq Rizvi, Omair Kamil, Benjamin Lee, Mikhail Avrekh

The NAS IS benchmark implements a parallel sort on (relatively) small integers. It is designed to stress irregular access memory copying and possibly prefix-sum operations. The full IS specification given at the NAS site.

There's not much to say about this problem. You've given random integers within a set range, and you need to:

  1. Rank them subject to the partial verification in the spec, and
  2. produce a sorted list for the full verification step.

Note that the partial verification only checks ranks, not location in memory. The entries can have any affinity until the final verification step or even reside in local memory. For the purposes of this problem, the input integers start off in a shared array (in UPC terminology) and end up in a shared array, but can reside elsewhere until the final stage.

The official NAS serial Fortran code uses essentially an O(1) bucket sort. You simply count the occurrences of each key and use the counts to determine a key's rank. This seems a bit silly when you can have >227 possible key values, but you may want to consider smaller buckets for balancing the load.

Codes

These codes are available to get you started. You can no doubt find others on-line.


Back to homework 3's main page.

Main CS267 page, and the TA's CS267 page

E. Jason Riedy
ejr@cs.berkeley.edu