Announcements :

  • Lab 3 is out.
  • Lab 2 Part 2 is now available (also appended to Lab 2).
  • Reading for lecture 15 is posted.
  • Reading for lecture 13 is up and I will upload slides and notes late tonight.
  • Lab 2 is out. Also form your groups and sign up and don’t be shy — just sign yourselves up because you’ll get to work with almost everyone over the 3 projects.
  • I just added some recommended reading for Lecture 10.
  • Please use Firefox (or maybe Opera, Safari, and Chrome) to download slides and such from the wiki. For some reason Internet Explorer fails to download.
  • Notification email is active. Every time I make a change to the announcements, schedule, or assignments pages you should receive an email (within about an hour) with a link to the pages that changed. If you don’t want this email, please let me know.
  • Posted updated (non-hidden) slides for Lecture 6 and slides for Lecture 7.
  • Posted reading for Lecture 7 (no writeup).
  • Posted slides for Lecture 6 (before class :-) ).
  • Please update your groups .
  • Lab 1 has been posted.
  • Recommended reading for Lecture 4 posted.
  • Please check out the reading assignment for Tuesday 9/2/2008.
  • Please sign up for scribing.

  • Class Notes are available in the ‘Topic’ link of each lecture in the Schedule page (only for students taking the class at this point).
  • You can see the schedule as it develops at Schedule.
  • Click here for Announcements.
  • Assignments page.

EE382V (17280) — Principles of Computer Architecture
Fall 2008
Tentative Course Descriptor and Syllabus

Vital Information

Class will meet on Tuesdays and Thursdays 2:00 - 3:30pm in RLM 5.118.

Please check the class web page on Blackboard and https://lph.ece.utexas.edu/class/EE382V_Fa08 frequently for updates, reading material, assignments, and feedback.

Instructor

Professor:
Mattan Erez
ENS 538
mattan.erez@mail.utexas.edu
471–7846
Office Hours: TW 3:30PM - 4:30PM or by appointment


Description

Two major challenges facing computer architects today are dealing with tight power budgets and achieving high performance as off-chip bandwidth diminishes in comparison with available on-chip compute resources. In this course we will explore how the fundamental properties of locality and parallelism can be exploited in both hardware and software to overcome these challenges of power and bandwidth constraints. We will develop hardware cost models and hardware and software techniques through a combination of structured lectures, paper reading, discussions, homework assignments, programming labs, and a collaborative project. Examples of architectures and methods that will be covered include traditional general-purpose processors, parallel memory systems, stream processors and programming models, threaded programming and execution models, shared memory systems, distributed shared memory systems, domain decomposition techniques, and cache-aware and cache-oblivious algorithms (tentative syllabus below).


Goals

  • Understand how the fundamental concepts of locality and parallelism affect both performance and power dissipation in modern computer systems.
  • Learn how to use tools, techniques, and models that account for locality and parallelism at the same time.


Prerequisites

This is an advanced course in computer architecture. We will be developing most of the material during class or through provided reading. However, a solid base in computer architecture is a must, and familiarity with parallelism and concurrency will be very valuable. Please read the paragraphs below and come talk to me (or email/phone) if you have any concerns about regarding your preparation.

Students must know the principles of computer architecture. You should have done well in EE360N or an equivalent class. What I have been finding talking to students is that many have not taken a 360N equivalent class; it’s really much more similar to a graduate class in computer architecture than an undergraduate class.

Students are strongly encouraged to have some understanding of parallel architectures or concurrency and synchronization i.e., EE382N-10, CS372, EE345M or EE360P or equivalent. Other knowledge that is helpful includes algorithms (e.g., EE360C) and compilers (CS375).


Required Reading

Reading material will be selected from leading conferences, journals, and magazines including ASPLOS, ISCA, MICRO, SC, as well as active research projects. All required material will be made available on the course web page or Blackboard.


Recommended Reading

There is no required textbook for this class, however, you may find the following useful:

  • Timothy G. Mattson, Beverly A. Sanders, Berna L. Massingill, “Patterns for parallel programming”, 2005, Addison-Wesley Boston.


Class Format

The class will meet twice a week. The class meetings will be a combination of lectures and class discussions. About 15% (most likely) of the class meetings will be an open discussion based on pre-assigned reading material. As class preparation for the discussions, before each class, all students must read the assigned material (equivalent to at most 1 - 2 research papers) and prepare a short writeup of discussion points (individually or in groups of up to 3 students). During class, I will present the material and lead a discussion that places the material in the broader context of the class. For both formal lectures and discussion meetings, a single student will act as scribe for the entire class and take detailed notes. The notes will be formatted after class and distributed via Blackboard. In addition to the occasional short write-up required to vitalize class discussion, the class will include up to 5 collaborative homework assignments and programming labs (not 5 each) as well as a final collaborative project in lieu of a final examination (final examination time slot will be used for mandatory project presentations). Your final grade will also depend on my subjective evaluation of your performance based largely on your contribution to class discussions. Please see below for detailed class policies.


Class Policies

  • Class attendance and participation: Students are required to attend all classes, as well as prepare and actively participate in class discussions. If you know you will not be able to attend a class or missed a class for a good reason please contact me.
  • Grading and auditing: This class should be taken for a grade and not the credit/no-credit option. If this is a serious issue for you, please see the professor. Auditing the class is generally fine, as long as you take it seriously and are well prepared for the discussion on those classes you choose to attend. If you are interested in auditing the class instead of registering, please see the professor.
  • Progress Updates: Each student is expected to give me an update on his or her progress during the first 3 weeks of the semester and once more during the last 2 weeks of the semester. These updates can be either in the form of a report or as a short individual meeting. Additionally, each group collaborating on a project must consult with the me at least once every two weeks (again, by providing written progress reports or conversations in meetings).
  • Collaboration: Group work is strongly encouraged for both class preparation, assignments, and the final project. The homework and programming assignments, as well as the final project must be collaborative in nature and require teams of 3 students. Before forming a larger or smaller group for the final project, please contact me for permission. Each group should submit a single writeup. To more fairly evaluate the final project, each student is expected to hand in a sincere evaluation of each team member’s contribution. For the final project, discussions outside the group are also permitted, however, plagiarism will not be tolerated (see below for academic dishonest policy).
  • Assignments and Labs (35%): To improve understanding and intuition, the class will include up to 5 collaborative assignments and programming labs. The, most likely, four labs will deal with programming stream architectures (Cell BE, GPUs) and more traditional parallel systems as well. Because of limited equipment for the labs, please form groups of 3 (see the instructors before forming other group sizes). You may not use the same partner more than once for the assignments (but yes for the project). The assignments and labs will not be graded competitively against one another — I expect you to do well and learn from them and not spend unbounded time.
  • Scribing (required to pass, 5% of final grade): Taking notes during class is important, however, when everyone is engrossed in writing, little discussion and conversation can take place. Therefore, in each class, a single student will be a scribe who will take notes for everyone. The formatted scribe notes are due one week after class. After I review the notes, which may be returned to the scribe for revision of content, the notes will be posted to the wiki so that everyone can both see them and contribute. I will monitor the notes occasionally for correctness and to see how they evolve (and by whom). Each student will be a scribe for a single class. Please see the scribing instructions for formatting instructions and more information.
  • Final project (writeup — 30% of final grade; class presentation — 5% of final grade): The final project must be a collaboration of 3 students and individual work will not be accepted. Please see above for group guidelines and contact me in case of difficulties in finding partners. The project will be used as a teaching tool to enhance your understanding of the material. The project will be open-ended I will help you focus your ideas and hone your intuition and skills. Think of the project as an attempt to write a research paper on a topic that is covered in, or related to, the class and may address hardware and/or software issues. It is not expected that you fully achieve this goal of publishable research, but you are required to be able to describe your idea in depth, place it in the context of the class and of prior related work, phrase hypotheses on how implementing your idea will improve and affect the system, and design an evaluation that will test the hypotheses. I will do my best to help you focus and refine your ideas and to guide you towards achieving significant research if you are interested and motivated to do so. The end result of the project should be a written report that roughly follows the style and length of a typical architecture conference paper as well as a presentation that will be given to the entire class. You are free to choose your own project topic, and we will also provide some ideas to get you started. The projects will be graded competitively against each other. What this means, is that if you set out to do a narrow-scoped project and accomplish it you may get a lower grade than a team that had attempted a more challenging task. I want to encourage you to think big and use us as a resource to guide you in accomplishing challenging tasks with reasonable effort.
    * Other (25% of final grade): I will evaluate each student based largely on class participation, contribution to the class notes in the wiki (to an extent), and individual/group updates.
  • Feedback: Candid and frank (anonymous) feedback and criticism regarding the choice of topics, pace, workload, etc …, will be greatly appreciated by me and will positively impact the class.
  • Final examination: There will not be a final written examination in this class.
  • Policy summary:
Component% of final grade
Attendance and participationPart of “other” 25%
Progress UpdatesPart of “other” 25%
Scribing5%
Assignments and Labs35%
Final project30% (writeup) +
5% (class presentation)
Feedback0%


Academic Dishonesty Policy

Plagiarism or any form of academic dishonesty (cheating includes, but is not limited to, copying another student’s work, bringing notes into a test and copying material directly from a book, article or web site without including appropriate references, falsifying data, and doing someone’s work) is a violation of University rules and may result in failing the class or may incur even steeper penalties. For University policies see: http://www.utexas.edu/opa/news/04newsreleases/nr_200404/nr_honor040429.html.


College of Engineering Drop/Add Policy

The Dean must approve adding or dropping courses after the fourth class day of the semester.


Students with Disabilities

The University of Texas at Austin provides upon request appropriate academic accommodations for qualified students with disabilities. For more information, contact the Office of the Dean of Students at 471–6259, 471–4641 TTY or the College of Engineering Director of Students with Disabilities at 471–4382.


Tentative syllabus

(topics that will most likely be covered at some point in the semester)

  • Parallel programming models (threads, arrays, streams, functional)
  • Parallel execution models (SPMD, MIMD, SIMD, streams, dataflow, VLIW)
  • Namespaces and locality
  • Hardware locality mechanisms (caches, scratchpad memories, registers)
  • Area and power models for communication and computation
  • Locality aware programming models
  • Locality and parallelism in real systems (SMP, DSM, stream processors)
  • Tools for increasing locality (domain decomposition, blocking, reordering)

Important Dates (tentative)

9/2/2008Last official add/drop day
9/12/2008last day for refund
10/2/2008Locality lab due
10/2/2008Last day to get your first progress update in (or meet with me before this day)
10/15/2008Initial project checkpoint
10/23/2008GPU lab due
10/29/2008Project progress
11/6/2008Cell lab due
11/19/2008Project progress
12/4/2008Project report due (automatic 1 week extension)
12/11/2008Project presentations 9am - 12pm (exam)

Sponsors

NVIDIA® Corporation graciously donated some of the equipment used in the labs and projects.