Architecture Research Project (Project 2)
CS 441, Dr. Lawlor
A substantial chunk of your course grade comes from the two semester
projects. Project 1 was entirely research-oriented. Project 2
will be more applied and implementation-oriented. From the
a software development or hardware performance analysis project, due
Here's what's left of the semester, before the final on December 16:
November 2010The deliverables are:
Su Mo Tu We Th Fr Sa
1 2 3 4 5 6
7 8 9 10 11 12 13 <- project topics in class
14 15 16 17 18 19 20
21 22 23 24 25 26 27 <- rough draft code due (then Thanksgiving break)
28 29 30
Su Mo Tu We Th Fr Sa
1 2 3 4
5 6 7 8 9 10 11 <- presentations
12 13 14 15 16 17 18 <- finals week, final code and performance analysis due
19 20 21 22 23 24 25
26 27 28 29 30 31
- In class on November 12, be ready to very briefly (a few sentences) describe your project topic.
in your rough draft code, which should run and do something related to
your problem, by November 23. This code need not be well
commented or heavily optimized.
- Present your code in class on December 7. Plan for about
ten minutes of presentation: describe your problem, show us your code,
and walk us through your optimization process.
in your final polished code and performance analysis on December
16. This code should be commented, pretty, and high performance.
Possible Project 2 Topics
Or choose your own topic! Topics should all be applied
work of the form "Build a new X", not just paper research.
Your starting code can be something completely new, something you
found on the net (with a citation), or an extension of any homework in
this class or any other.
- Hardware performance analysis: benchmark some test programs that demonstrates some aspect of modern hardware, such as:
- Out-of-order execution (e.g., reorder instructions manually, compare to automatic reordering)
prediction and execution speculation (e.g., reverse-engineer x86 branch
hardware, like compare always-taken branch performance with even-odd
- Dependency tracking (e.g., benchmark performance benefit from decreasing dependency tree depth)
- Cache prefetching and out-of-order loads and stores (e.g., compare cached loads with cached loads matching a previous store)
- Software development: write and benchmark something on any new parallel high-performance architecture, such as:
- MPI cluster
- Or build a new language that magically expands to cover any of these!