Announcements :

  • Lab 2, Parts 2 and 3 are out.
  • Added a comment and reference to OS noise in comments on Lecture 14.
  • Reading for next week lectures also out (for Lecture 15 and for Lecture 16).
  • Part 1 of Lab 2 is now out.
  • http://sandpile.org contains useful information on current (and old) x86 processors, including cache organization. Checkout the CPUID section.
  • Please start using the Projects page.
  • Updated schedule and posted scribe notes and cache-oblivious reading (9/9).
  • New group policy: you are encouraged but not required to switch partners for each lab (9/9).
  • Posted survey about partner policy on Blackboard (under Assignments).
  • Sign up for Lab 1 groups.
  • Lab 1 is out. Note that parts 1 and 2 are somewhat independent.
  • Sign up for scribing.
  • User/password on Blackboard.


EE382N-20 (17175) — Computer Architecture: Parallelism and Locality
Fall 2011
Tentative Course Descriptor and Syllabus

Vital Information

Class will meet on Mondays and Wednesdays 11:00 - 12:30pm in ENS 145.

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

Instructor

Professor:
Mattan Erez
ENS 538
mattan.erez@mail.utexas.edu
471–7846
Office Hours: Tue. 2 - 3 and Wed. 9:45 - 10:45 or by appointment

Teaching Assistant:
Ikhwan Lee
ikhwan@mail.utexas.edu
Office Hours: Mon. 10:00 - 11:00 and Wed. 2 - 3 or by appointment
Location: ENS518

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 utilized 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, massively parallel processors, parallel memory systems, parallel 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 EE460N 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.
  • David B. Kirk and Wen-Mei Hwu, “Programming Massively Parallel Processors: A Hands-on Approach”, 2010, Morgan Kaufmann.


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 2 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 (36%): To improve understanding and intuition, the class will include up to four collaborative assignments and programming labs. The, most likely, three labs will deal with programming massively-parallel processors (e.g., 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, 4% 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 — 25% 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.
    * ‘’‘Quiz (10% of final grade): There will be one in-class quiz, tentatively on 10/28.
  • Other (20% 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, however, the final exam time slot may be used for project presentations.
  • Policy summary:
Component% of final grade
Attendance and participationPart of “other” 20%
Progress UpdatesPart of “other” 20%
Scribing4%
Assignments and Labs36%
Quiz10%
Final project25% (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 and our honor code see: http://registrar.utexas.edu/catalogs/gi09-10/ch01/.


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 (http://www.utexas.edu/diversity/ddce/ssd/) 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)

8/29Last official add/drop day
9/5NO CLASS (labor day)
9/9last day for refund (and add with approval)
9/23Last day to get your first progress update in (or meet with me before this day)
9/30Locality lab due
10/13Initial project checkpoint
10/21GPU lab due
10/28Project progress
11/16Tentative in-class quiz
11/11Project progress
11/4Third lab due
11/25Project progress
12/2Last day for individual progress report
12/2Project report due (automatic 1 week extension)
12/10Project presentations during final exam period