EECS 583: Homework Assignments

Winter 2023

Home / announcements | Course syllabus | Reading list |
Schedule | Lecture Notes | Homeworks | Links

Homework 0

Assigned Jan 4, 2023 ; Due Jan 11, 2023:  Note, there is nothing to turn in for this homework, but it is highly recommended that you do it as you need it for Homework 1.

A. Setup and run LLVM on your own "hello world" program. We will be using version 15.0.6. We have 2 Linux servers for the class, eecs583a,eecs583b.eecs.umich.edu. You can either use one of the servers or your own Linux system. For the class servers, you will set up your directory to point to a central LLVM installation and just have your own pass in your local directory. For your own server, you will need to do a full install of LLVM on your system. See http://www.llvm.org for more information and to familiarize yourself with what resources are available. Detailed instructions for both setups are posted on piazza.

B. Skim over the following LLVM documentation,

C. Go through writing a pass tutorial: Writing a Pass. Create your own LLVM pass that can print the names of all basic blocks in the input program. You may want to write a script to run LLVM and your pass efficiently rather than running LLVM manually on the command line. Lastly, try generating the human-readable LLVM bitcode (*.bc) and dump/view the control-flow graph for the input program (see option -dot-cfg).

Homework 1

Assigned Jan 11, 2023 ; Due Jan 23, 2023 (11:59pm Eastern USA)pdf

Implementation template, run script, and benchmarks (gzip'd tarball, tar zxvf 583_W23_hw1.tgz to extract files): 583_W23_hw1.tgz

Homework 2

Assigned Jan 25, 2023; Due Feb 15, 2023 (11:59pm Eastern USA)pdf

Materials: 2 sets of benchmarks are provided in the first tgz file : correctness and performance. Correctness benchmarks are designed to help you test and debug your implementation, but are too small to notice any performance change with optimization. Performance benchmarks have high trip count loops to assess performance of your optimization. Some performance improvement should be observed particularly with the Bonus Implementation. See the 2 README files for more info about each group of benchmarks.

The second tgz file contains an implementation template to get you started including all the necessary files to build the template optimization pass. In addition, the file run.sh is provided that provides a list of the LLVM commands used in HW2.

Last, slides that go over the implementation template and steps in more detail are provided (see lecture notes/Zoom video from Class 6, Wednesday Jan 25).

Benchmarks - W23_EECS583_HW2Benchmarks.tar.gz

Implementation template - W23_EECS583_HW2Template.tar.gz


Home / announcements | Course syllabus | Reading list |
Schedule | Lecture Notes | Homeworks | Links