Syllabus Parallel Computing
Syllabus Parallel Computing
Prof. Christopher D. Carothers Department of Computer Science Rensselaer Polytechnic Institute 110 8th Street Troy, New York 12180 e-mail: [email protected] course website: www.cs.rpi.edu/chrisc/COURSES/PARALLEL/SPRING-2013/index.html phone: (518) 276-2930 fax: (518) 276-4108 Ofce Hours: MRC 309a, Tuesday and Friday, 2 to 4 p.m. and by appointment. Class Time and Location: West Hall Auditorium, Tuesdays and Fridays, Noon to 1:30 p.m. January 22, 2013
1.1 Prerequisite
The principle prerequisite for this class is CSCI 2500, Computer Organization. However, I understand that many of you come from elds of study that are outside of Computer Science. So below I have listed some prerequisites and course assumptions: Some programming experience in Fortran, C, C++. Java is great but not for HPC. You will have a choice to do your assignment in C, C++ or Fortran subject to the language support of the programming paradigm. This course assumes you have never touched a parallel or distributed computer. However, we do assume you have touched a computer and have some knowledge of Linux/Unix as all of our parallel computing systems only use the Linux OS. You should possess a strong desire and love to write software. While both theory and practice are presented in lecture, the class assignments and group project is focused on getting real programs to execute in parallel such that performance improvement is demonstrated.
2 Performance Expectations
As a professor, student adviser and course instructor, I get asked, Is Parallel Computing/Programming Hard?. If you like writing software and you enjoy the challenging task of debugging programs that have a non-deterministic execution order when not properly made to execute in parallel, this is the course for you. Also, if you are a performance junky and like to tweak programs to make them run as fast as possible, this course is for you. If you are a weak programmer or you do not really enjoy writing software, then I would say this course is probably not your cup of tea. If you nd yourself getting deadlocked (pun intended) on an assignment and you are unable to make progress, please contact Prof. Carothers early. Do not wait until the last minute. Also, do not try to stay up all night in a marathon debugging session. Try to work smarter by asking questions and getting help from the instructor and our class TA.
Project assigned on Friday, April 12th due on Tuesday, May 8th. The NO CLASS days are as follows: Tuesday, March 12th SPRING BREAK. Friday, March 15th SPRING BREAK. Note that Tuesday, May 7th is the last day of class.
7 Academic Integrity
While I strongly encourage you to form study groups and work together in learning this material, the programming assignments are to be done individually unless otherwise noted by the assignment/project specication. What this means is that you should do whatever is necessary to ensure your work remains your work. For example, in doing programming 4
assignments you might want to prepend variable names with your initials. If during in the grading process, it is determined that students shared or duplicated work, those students will automatically take a zero for the offense plus a 5 point total average deduction. For a second offense, the student or students involved will fail this course and a report will be sent to the Dean of Students ofce which could result in additional disciplinary action.
8 Learning Outcomes
By the end of this course, you will be able to: 1. Apply the concept of the Amdahls Law to the estimation of the fraction of a program that can be serialized and still yield a good speedup / program performance improvement. 2. Apply the concepts of a Parallel Computer Architecture by creating a parallel program that will maximize the performance of the parallel program when executed on that class of parallel computing systems. 3. Apply the concepts of Message Passing to the creation of a program that executes efciently on this class of parallel computer architecture. 4. Apply the concepts of Threads to the creation of a program that executes efciently on this class of parallel computer architecture. 5. Apply the concepts of CUDA to the creation of a program that executes efciently on this class of parallel computer architecture. 6. Apply the concepts of Parallel File I/O to the creation of a parallel program that efciently reads and writes data to disk. 7. Apply the concepts of Fault Tolerance to the creation of a parallel program that will checkpoint its state and enable the ability to be re-started at some point in its execution cycle near to when it failed.. 8. Apply the concepts of Performance to the analysis of computer performance problems. 9. Apply the concepts of Performance Counters to the analysis of parallel program performance.