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
syllabus:
PROJ2:
a software development or hardware performance analysis project, due
in December.
Here's what's left of the semester, before the final on December 16:
November 2010
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
December 2010
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
The deliverables are:
- In class on November 12, be ready to very briefly (a few sentences) describe your project topic.
- Turn
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.
- Turn
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.
- 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)
- Branch
prediction and execution speculation (e.g., reverse-engineer x86 branch
hardware, like compare always-taken branch performance with even-odd
branch performance)
- 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:
- SSE/SIMD
- OpenMP/Multicore
- MPI cluster
- GPU
- Or build a new language that magically expands to cover any of these!
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.