FSU Seal - 1851

    COURSE SYLLABUS

    CIS 4930-01 Parallel Computing
    Fall 2017


Pre/co-requisites:

Pre-requisites: COP 4530 (this pre-requisite will not be waived). Undergraduate Operating Systems is also recommended.

Class Schedule:

Activity Day Time Location
Lecture Tuesday, Thursday 12:30 pm - 1:45 pm LOV 301

Contact Information:

Instructor: Ashok Srinivasan
Office hours: Monday 3:30 pm - 4:30 pm, Wednesday 12:30pm - 1:30 pm. I am also usually available in my office, and you can feel free to meet me in the afternoons, except just before class. Alternatively, you may schedule an appointment, either by email or by phone.
Office: 169, Love Building
Phone: 644-0559
Email: asriniva AT cs.fsu.edu

Course Material:

Required Material
Computer Accounts

Course Rationale:

In your programming and data structures courses, you would have learned how to write efficient sequential programs, that is, programs running a single thread. However, all modern processors are multicore, and in order to make effective use of them, you need to run multiple threads. In your operating systems course, you would have learned to write code that uses multiple threads, and how to avoid common errors such as race conditions. This course teaches you how to organize the computations of the threads or processes so that they work together and perform the required computations efficiently, making good use of the available hardware resources.

Course Description:

In a parallel computation, multiple processors work together to solve a given problem. These are exciting times in parallel computing. The largest parallel machine has over ten million cores, and desktops with GPUs can support thousands of simultaneous threads. With all major chip manufacturers producing multicore processors, all computers are now parallel ones. It is, therefore, essential to learn to use parallel machines effectively.

While parallel machines provide enormous raw computational power, it is often not easy to make effective use of all this power. The problems encountered in making effective use of a large number of machines are similar to those encountered in making a group of people work together. (i) People may spend much of their time talking to each other, instead of doing useful work. Communication between nodes of a parallel machine is quite expensive, compared with the CPU speed. So, we need to pay attention to minimizing the amount of communication; otherwise much of the time will be spent on inter-process communication, rather than on useful work. (ii) In a group, a few people may do much of the work, while the others relax. Similarly, in a computation, the work load on different cores may differ. In order to make effective use of the parallel machine, we want to keep the work load balanced on all cores. (iii) It may be difficult to decompose a problem so that people can work on different parts simultaneously. For example, consider someone who want to have dinner cooked, eat it, and then have the dishes washed. It is not easy to speed up this process by hiring someone to cook, and another person to wash the dishes, because the three tasks are sequential; the food needs to be cooked before it is eaten, and the food needs to be eaten before the dishes are washed. Similar problems occur in parallel computations too, and sequential parts of the computation can reduce the effectiveness of parallelization substantially. This course will describe different techniques used to solve the above problems, in order to develop efficient parallel algorithms for a variety of problems. We will also pay much attention to practical aspects of implementing parallel code that actually yields good performance on real parallel machines.

Learning Objectives:

At the end of this course, you should be able to accomplish the objectives given below.

Your Responsibilities:

Deadlines and Instructions

Following the same professional guidelines that you will encounter at work, there are strict deadlines, and instructions that must be followed. Please read instructions carefully, and schedule your activities so that you submit assignments well in time. You should check your FSU email account and the course web page on Blackboard regularly, and note other announcements, on-line and in class. You should also subscribe to the discussion board forums on Blackboard so that you get updated on new posts.

Class Participation

We will ask you questions in class: (i) review questions on the previous lecture and (ii) questions on the material currently being discussed, and also questions that need to be answered on the discussion board, in order for us to obtain feedback on how well you understand the material. You should be prepared to answer these questions, and should also participate by asking questions, suggesting ideas, and performing in-class assignments that we give. Of course, you cannot participate in class unless you attend it! You will be graded on these activities.

Reading Assignments

After each lecture, you will be given a reading assignment pertaining to that lecture. You should read these, and also practice writing code. If you learn only the material discussed during the lecture, then you will likely fail the course. You should learn material from the reading assignment, and also refer to reference material in your programming tasks.

New material builds on the old ones. So, if you have trouble with some material, then please get help through the discussion board on Blackboard or from me, before the next class. You should also peruse the material for the next lecture, and be prepared to answer questions on it, which I will provide in advance. I expect that you will need to spend between one and two hours studying for each lecture. The assignments and exams will consume additional time. The following learning components are important, and you may want to verify if you do satisfactorily on these, after studying the material.

Homework Assignments

You will have several small programming assignments in this course, and you will have around three days to work on each one. The assignments will be announced on the Blackboard course web site under the "Assignments" tab. Assignment submission instructions are available at www.cs.fsu.edu/~asriniva/courses/PC17/HWinstructions.html. Parallel programming is substantially more difficult than sequential programming. So, please start working on the assignments as soon as they are announced, if you wish to complete them on time!

Programming Project

You will have one large programming project for this course, where you will demonstrate your skills in parallel programming and optimization on a large problem. You may either choose a problem that we give, or choose your own problem with approval from me.

Course Calendar:

Week Lecture Chapter Assignments
1 29 Aug Introduction
31 Aug The promises and challenges of parallel computing
2 5 Sep Why parallel computing: chapter 1
7 Sep Parallel hardware and software: section 2.1 - 2.2
3 12 Sep Section 2.3
14 Sep Section 2.4 - 2.6
4 19 Sep Section 2.7 - 2.8
21 Sep Section 2.9 - 2.10
5 26 Sep MPI programming: section 3.1
28 Sep Section 3.2 - 3.3
6 3 Oct Section 3.4
5 Oct Section 3.5 - 3.6
7 10 Oct Section 3.7 - 3.8
12 Oct Midterm review
8 17 Oct Midterm Project topic announced 18 Oct
19 Oct Single core optimization
9 24 Oct Profiling code
26 Oct Pthreads: section 4.1 - 4.2
10 31 Oct Section 4.3 - 4.6
2 Nov Section 4.7 - 4.8
11 7 Nov Section 4.9
9 Nov Section 4.10 - 4.12
12 14 Nov OpenMP: Section 5.1 - 5.3
16 Nov Section 5.4 - 5.5
13 21 Nov Section 5.6 - 5.7
23 Nov Thanksgiving: No class
14 28 Nov Section 5.8
30 Nov Section 5.9 - 5.11
15 5 Dec Parallel program development: section 6.1 Project report and code due Dec 7
9 Dec Final review
17 13 Dec Final Exam: Wednesday 7:30 am - 9:30 am

Grading Criteria:

The overall grade in this course will be based on your performance in (i) exams, (ii) class participation, (iii) programming project, and (iii) assignments, with weights as given in Table 1. Exams consist of a midterm and a final exam. Class participation consists of answering questions correctly in class, on the discussion board, and other positive contributions, discussed in greater detail at www.cs.fsu.edu/~asriniva/courses/PC17/classparticipation.html.

You need to obtain 70% on either the midterm or on the final exam to pass this course. If you meet this constraint, then your final grade will be determined using Table 2.

    Table 1: Course Points
    Item Weight
    Class Participation 10
    Midterm 20
    Final Exam (comprehensive) 20
    Assignments 25
    Programming Project 25
    Table 2: Letter Grades
    Points Grade
    92 - 100 A
    90 - 91 A-
    88 - 89 B+
    82 - 87 B
    80 - 81 B-
    78 - 79 C+
    72 - 77 C
    70 - 71 C-
    68 - 69 D+
    62 - 67 D
    60 - 61 D-
    0 - 59 F

NOTE: You must earn a weighted average of 70% in the exams to be awarded a course grade of C or better. For example, if you obtain a total of 78%, but an exam average of only 65%, then you will not get a C+. Instead, you will get a C-, because that is the highest grade for which you will be eligible without meeting the exam cutoff.

Programming assignment Assessment

You must understand your project work. If you are asked to explain your work, and you are unable to do so, you may be assigned a grade of zero.

Course Policies:

Attendance Policy

The university requires attendance in all classes, and it is also important to your learning. The attendance record may be provided to deans who request it. If your grade is just a little below the cutoff for a higher grade, then your attendance will be one of the factors that we consider in deciding whether to "bump" you up to the higher grade. Missing three or fewer lectures will be considered good attendance.

Excused absences include documented illness, deaths in the immediate family and other documented crises, call to active military duty or jury duty, religious holy days, and official University activities. Accommodations for these excused absences will be made and will do so in a way that does not penalize students who have a valid excuse. Consideration will also be given to students whose dependent children experience serious illness.

You should let me know of absences in advance, when possible, and submit your documentation. You should make up for any materials missed due to absences.

Missed Exam Policy

A missed exam will be recorded as a grade of zero. We will follow the university rules regarding missed final exams (see http://registrar.fsu.edu/registration_guide/spring/exam_schedule), for the midterm too.

Late Assignment Policy

In order to enable us to provide timely solutions to assignments, we have the following policy regarding submission of late assignments.

Grade of 'I' Policy

The grade of 'I' will be assigned only under the following exceptional circumstances:

Professional Ethics

You will gain confidence in your ability to design and implement algorithms only when you write the code yourself. On the other hand, one does learn a lot through discussions with ones peers. In order to balance these two goals, I give below a list of things that you may, and may not, do.

Things you may not do: You should not copy code from others. This includes directly copying the files, replacing variable names in their code with different names, altering indentation, or making other modifications to others' code, and submitting it as your own. (You may also wish to note that many of the modifications that make codes look very different in a higher level language, yield lower level representations that are very close, and are easy to detect.) Furthermore, you should take steps to ensure that others cannot copy code from you -- in particular, you should have all permissions on assignment files and directories unset for others.

Things you may do: You may discuss specific problems related to use of the computer, useful utilities, and some good programming practices, with others. For example, you may ask others about how to submit your homework, or how to use the debugger or text editor. Honor Code: The Florida State University Academic Honor Policy outlines the University's expectations for the integrity of students' academic work, the procedures for resolving alleged violations of those expectations, and the rights and responsibilities of students and faculty members throughout the process. Students are responsible for reading the Academic Honor Policy and for living up to their pledge to be honest and truthful and [to] strive for personal and institutional integrity at Florida State University. (Florida State University Academic Honor Policy can be found at http://fda.fsu.edu/content/download/21140/136629/AHPFinal2014.pdf .)

Plagiarism:

Plagiarism is "representing another's work or any part thereof, be it published or unpublished, as ones own. For example, plagiarism includes failure to use quotation marks or other conventional markings around material quoted from any source" (Florida State University General Bulletin 1998-1999, p. 69). Failure to document material properly, that is, to indicate that the material came from another source, is also considered a form of plagiarism. Copying someone else's program, and turning it in as if it were your own work, is also considered plagiarism.

Class make up plan due to Hurricane Irma:

In order to make up for the missed classes, I will assign some independent reading material and questions related to it. I will have special contact hours in my office Tuesdays, 9/26/2017 and 10/3/2017, 2:30 pm - 3:30 pm, where you may discuss solutions to the questions if you need additional help.

SYLLABUS CHANGE POLICY:

This syllabus is a guide for the course and is subject to change with advanced notice.


Last modified: 25 Sep 2017