



































Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
Mapping applications to processor hardware. » Analysis, optimizations, code generation. » Retargetability – work for multiple platforms (not ...
Typology: Lecture notes
1 / 43
This page cannot be seen from the preview
Don't miss anything!




































» Dynamic compiler » Datacenter » Clarity-lab: http://clarity-lab.org/
❖ 1. Programming » Good C++ programmer (essential) » Linux, gcc, emacs » Debugging experience – hard to debug with printf’s alone – gdb! ❖ 2. Computer architecture » EECS 370 is good, 470 is better but not essential » Basics – caches, pipelining, function units, registers, virtual memory, branches, multiple cores, assembly code ❖ 3. Compilers » Frontend stuff is not very relevant for this class » Basic backend stuff we will go over fast Ÿ Non-EECS 483 people will have to do some supplemental reading
» Lecture notes – available the night before class » Piazza – ask/answer questions, GSI and I will try to check regularly but may not be able to do so always » piazza.com/umich/fall2017/eecs583/home
» LLVM webpage: http://www.llvm.org » Read the documentation! » LLVM users group
» 2 hrs is hard to handle » We’ll stop at 12:00, most of the time
» Text book material – some overlap with 483 » 2 homeworks to apply classroom material
» Last 1/ rd of the semester, students take over » I will recommend papers of several topics » Select paper related to your project – entire class is expected to read the paper » Each project team - presents 1 paper. 20 min presentation + 5 min Q&A.
» Most (hopefully all) will get A’s and B’s » Slackers will be obvious
» Project – 45% » Homeworks – 30% » Paper presentation – 20% » Class participation – 5%
❖ 2 of these » 1 small &1 hard programming assignment » Design and implement something we discussed in class ❖ Goals » Learn the important concepts » Learn the compiler infrastructure so you can do the project ❖ Grading » Working testcases?, Does anything work? Level of effort? ❖ Working together on the concepts is fine » Make sure you understand things or it will come back to bite you » Everyone must do and turn in their own assignment
» Small research idea » Design and implement it, see how it works
» Take an existing paper, implement their technique » Then, extend it to do something interesting Ÿ Generalize strategy, make more efficient/effective
» Take existing idea, create quality implementation in LLVM » Try to get your code released into main LLVM system
❖ Memory system performance » Instruction/data prefetching » Use of scratchpad memories ❖ Automatic parallelization » Loop parallelization » Vectorization/SIMDization ❖ Reliability » Reducing AVF » Application-specific techniques ❖ Power » Identification of power- intensive computation » Instruction scheduling techniques to reduce power ❖ Multicore/manycore/GPU » Cache contention ❖ For the adventurous - Dynamic optimization » DynamoRIO » Protean Code » Run-time parallelization or other optimizations are interesting » Hybrid processors: Transmeta style processor (Nvidia’s Denver) ❖ Approximate computing ❖ Machine learning
» What problem does the paper solve? Ÿ Is it an important problem? » Context of the paper? » What new insights does the paper provide? Ÿ Here’s some data that shows something that we didn’t know before about programs/architecture/compiler » What is the mechanism proposed in the paper? » What is the conclusion? » Are you convinced that the paper presents a good idea? » Does the paper raise any questions? » How to improve the paper?