EECS 583: Homework Assignments

Fall 2023

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

Homework 0

Assigned Aug 28, 2023 ; Due Sep 4, 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 16.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 Sep 8, 2023 ; Due Sep 18, 2023 (11:59pm Eastern USA)pdf

Implementation template and benchmarks (gzip'd tarball, tar zxvf F23_EECS583_HW1.tgz to extract files): F23_EECS583_HW1.tgz

Homework 2

Assigned Sep 22, 2023; Due Oct 13, 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 7, Friday Sep 22).

Benchmarks - F23_EECS583_benchmarks.tar.gz

Implementation template - F23_EECS583_HW2Template.tar.gz


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