Prof. Yufei Ding
Office hours: Monday 11:00am-12:15pm or by appointment (Frank Hall 1123)
Times and Location
Monday/Wednesday 9:00am-10:50am in PHELPS 2510
Course web site: http://www.cs.ucsb.edu/~yufdeiding/cs293s
With the increasing diversity and complexity of computers and their applications, the development of efficient, reliable software has become increasingly dependent on automatic support from compilers and other program analysis and translation tools. This course covers principal and emerging topics in understanding and transforming programs for efficiency, including data flow analysis, polyhedra analysis, optimizations for massively parallel programs (e.g., GPU) and distributed applications (e.g., data center programs), the reciprocity between code optimizations and machine learning, domain specific languages, and program synthesis.
- Data Flow Students will be able to reiterate basic concepts of data flow analysis and SSA; to explain iterative algorithms for data flow analysis and SSA construction; to design data flow formulas; to critique different implementation choices.
- Redundancy Elimination Students will be able to list different methods and scopes for redundancy elimination; to explain the operational characteristics of these methods; to contrast these methods; to implement these methods for contemporary systems; to select a suitable method for a given problem.
- Optimization Methods Students will be able to reiterate the concepts of common optimization methods; to paraphrase qualitative properties of these methods.
- Dependence Theory Students will be able to reiterate the principles of dependence; to recite the concepts of data dependence and control dependence; to analyze the types of data dependences for a given program.
- GPU Optimizations Students will be able to explain the unique properties of GPU as a parallel architecture; to write CUDA code; to paraphrase the impact of data placement optimizations on GPU programs; to explain operational characteristics of memory optimizations on GPU.
- Parallelization Students will be able to list challenges and common solutions to program parallelization; to reiterate concepts of speculative parallelization; to explain the design of principled speculative parallelization and characterize its distinctive properties.
- Emerging Techniques Students will be able to list the main emerging techniques for advancing code optimizations and explain how they solve computing efficiency problems.
Textbook and Other Information Sources
Class attendance is expected: you are responsible for everything that goes on in class. "I wasn't there" and "I didn't know" are not valid excuses for missing something important.
Please read this section carefully.
The university, the department, and this instructor all take the issue of academic integrity very seriously. A university requires an atmosphere of mutual trust and respect. While collaboration is an integral part of many scholarly activities, it is not always appropriate in a course, and it is never appropriate unless due credit is given to all participants in the collaboration. This goes for both ideas and programming or other work.
Here are some examples:
- Allowed: Discussion of lecture and textbook materials
- Allowed: Discussion of how to approach assignments, what techniques to consider, what textbook or lecture material is relevant
- Not allowed: Sharing ideas in the form of code, pseudocode, or solutions
- Not allowed: Turning in someone else's work as your own, even with that person's permission.
- Not allowed: Allowing someone else to turn in your work as his or her own.
- Not allowed: Turning in work without proper acknowledgment of the sources of the content (including ideas) contained within the work.
For some views on academic integrity at UCSB see the Academic Integrity page of the Office of Judicial Affairs.
Summary: Academic integrity is absolutely required - dishonesty (cheating, plagiarism, etc.) benefits no one and hurts everyone. If you are not sure whether or not something is appropriate, ask the instructor or the TA.
Course Materials and Copyright
All course materials (class lectures and discussions, handouts, examinations, web materials) and the intellectual content of the course itself are protected by United States Federal Copyright Law, the California Civil Code. The UC Policy 102.23 expressly prohibits students (and all other persons) from recording lectures or discussions and from distributing or selling lectures notes and all other course materials without the prior written permission of the instructor (See http://policy.ucop.edu/doc/2710530/PACAOS-100). Students are permitted to make notes solely for their own private educational use. Exceptions to accommodate students with disabilities may be granted with appropriate documentation.
To be clear, in this class students are forbidden from completing study guides and selling them to any person or organization.
Students with Disabilities
If you are a student with a (temporary or permanent) disability and would like to discuss special academic accommodations, please first contact the Disabled Students Program (DSP) at UCSB. DSP will arrange for special services when appropriate (e.g., facilitation of access, note takers, readers, sign language interpreters). Please note that it is the student's responsibility to communicate his or her special needs to the instructor, along with a letter of verification from DSP. The instructor will be happy to make the appropriate accommodations once you work out the details with DSP; also, feel free to communicate these needs to the instructor while waiting for DSP to finalize their response.
|Classroom computer use policy - Please come to class in order to focus on the subject at hand - not on email, texting, Facebook, web surfing, etc. This is distracting to your classmates and the instructor. If you truly need to use class time to devote to these activities, please do it elsewhere.|
|Cell phone policy - Please mute your cell phone. If it rings, I get to answer it. Really.|