Space for project ideas and discussions

Please feel free to add your own thoughts and suggestions. If you want to introduce a new category, please do so and let me know. Mattan’s stuff is in green, please don’t change it.

Implement an application/algorithm

  1. Pick a challenging algorithm or application
  2. Evaluate it in terms of parallelism and locality aspects
  3. Choose a target (GPU, Cell, Cluster)
  4. Analytic evaluation of expected performance
  5. Implement several variants with different tradeoffs
  6. Measure performance and give feedback

Guidelines for applications:

  • Non-trivial parallelism/locality tradeoffs

Potential applications

Add stuff here.

  • Bob Ascott’s ideas: My dissertation topic is a “Java DataFlow Machine” so I have high interest in components of that subject. DataFlow machines may have less general interest, but I have just read an article about implementing Java on the Cell Processor and distributing work from the main processor (PPE) to the 8 “synergistic processing elements” (SPE).



Introduce and evaluate an architecture idea

The idea is to come up with your own architectural idea related to parallelism and locality or massively parallel processors like GPUs or Stream Processors we study in class. This is a fairly open ended topic and requires case-by-case directions and evaluation so no general guidelines or tasks here. This is a great opportunity to get some research started/continued if you’re interested in something along the lines of the class topics.

Architecture ideas



Ideas in programming models or systems

The idea here is to suggest and evaluate ideas relating to programming parallel/local systems, where as with architecture this is very open ended.

Programming models/systems ideas

  • MapReduce (hadoop-like) implementation on top of Sequoia.
    • Study how/whether the disciplined manner of Sequoia applications can be used to construct the ad hoc optimizations done for MapReduce.