Semester Elective Project

Goals

  • Apply course concepts to a larger project.
  • Gain parallel/distributed systems experience that you can draw from in your career.
  • Improve your confidence in dealing with complex and ill-formed problems.

Guidelines

Below are some general guidelines for the semester-long elective project.

  • Avoid naturally-parallel projects; they are probably too trivial.
  • Prefer strong and weak scaling applications of distributed systems.
  • Do some research and see what others have already done.
  • Find a faculty member (from another department?) who can answer domain questions.

There is no complete standard grading rubric for these projects because they are so highly individualized. However, here are some general guidelines:

  • A level (novelty) - This project demonstrates a significant new implementation and/or analysis of a parallel or distributed system. This might include a novel system or variation on an existing system, and it should apply many of the concepts discussed in class. The writeup will include a thorough analysis and discussion of performance and scaling characteristics as well as any other relevant topics. In general, a project like this is a good candidate for publication.
  • B level (insight) - This project demonstrates significant insights into a parallel or distributed system. This may or may not include new implementations, but it should apply many of the concepts discussed in class. The writeup will include a thorough analysis and discussion of performance and scaling characteristics as well as any other relevant topics.
  • C level (parallelism) - This project demonstrates a parallel or distributed system, using at least two or three concepts discussed in class. The writeup will include a discussion of performance and scaling characteristics as well as any other relevant topics.

Ideas

Below are some specific ideas for the semester-long elective project.

  • Work with a faculty member (try math or chemistry!) to develop a new parallel code or parallelize an existing serial code.
  • Parallelize an existing serial code from another source.
  • Perform a performance analysis and optimize an existing parallel code.
  • Compare and analyze at least three existing algorithms or approaches to solving a problem in parallel.
  • Perform floating-point analysis on a given scientific code, preferably incorporating scaling effects. See Dr. Lam for more information.
  • Study variability in floating-point accuracy in heavily-multithreaded code. See Dr. Lam for more information.