CSCI 3366 (Introduction to Parallel and Distributed Processing), Spring 2002:
Review for Exam 1
The exam will be in class March 5. You will have 75 minutes.
You may use your textbook and any notes or papers you care to bring,
but you may not use other books, a calculator or computer,
or each other's papers.
The following are some kinds of questions that might be on the exam.
It is not necessarily an exhaustive list
of all types of questions on the exam,
but should give you an idea of what to expect.
- Multiple-choice and/or short-answer questions.
- Questions in which you are given a pseudocode algorithm or
some MPI-based code and asked what it does,
whether it works, how to fix it, etc.
- Questions in which you are asked to write a pseudocode algorithm
or some MPI-based code to accomplish a given task.
You may be given some of the code and asked
to ``fill in the blanks'', or you may be given descriptions
of functions to use in your solution.
You are also responsible for material in the assigned reading
(see the
Homeworks and Other Assignments
Web page for a complete list), except as noted below.
- In chapter 1, you may skip sections 1.3.2 and 1.3.3
(and skim 1.4 and the rest of 1.3).
- In chapter 2, you may skip sections 2.2.2, 2.3.4, and 2.4.2
(and skim the rest of 2.3).
- In chapter 4, you may skip section 4.2.2.
- In chapter 5, you may skip sections 5.3.3 and 5.3.4.
- In chapter 6, you may skip sections 6.1.1 through 6.1.4 and
6.3.1.
- You are not responsible for understanding in detail the
mathematics behind the computations (e.g., you do not need to
know, for the program of Homework 2, exactly
what the numbers being computed mean, only how
to compute them in parallel).
- You may skip or skim the textbook's analyses of running time.
You should, however, be aware that the time required to
send a message is usually a function of its length and a
fixed overhead.
You are also responsible for all material covered in class.
Below is a list of topics we have covered;
it is not necessarily exhaustive, but should
give you an idea of what topics I consider most significant.
- Why parallel programming?
- Shared-memory and distributed-memory (message-passing)
paradigms.
- ``Speedup factor'' and Amdahl's law.
- Basics of message-passing programming (processes,
point-to-point communication, how to deal with lack
of shared memory).
- ``Embarrassingly parallel'' computations --
key idea (independent tasks), examples.
- Divide-and-conquer computations -- key idea, examples.
- Pipelined computations -- key idea, examples.
- Synchronous computations -- key idea, examples.
Berna Massingill
2002-02-28