and Distributed Systems Programming, 3 hours lecture.
Parallel programming techniques, architectures and algorithms.
You may learn your final exam grades from TA (İlker
Textbook: Barry Wilkinson
& Michael Allen, Parallel Programming Techniques and Applications Using
Networked Workstations and Parallel Computers Second edition, Pren-Hall 2004
- Calvin Lin & Larry
Snyder, Principles of Parallel Programming, Pren-Hall 2009
introduce the theory and implementation of parallel programming techniques.
(Message Passing Interface) on a 15 node Linux Cluster
Prerequisites: Data Structures and Algorithms, Computer Architecture
and C/Java Programming
PART I: BASIC TECHNIQUES
Chapter 1. Parallel Computers
Chapter 2. Message Passing Computing
Chapter 3. Embarrasingly Parallel Computations
Chapter 4. Partitioning and Divide-and-Conquer Strategies
Chapter 5. Pipelined Computations
Chapter 6. Synchronous Computations
Chapter 7. Load Balancing and Termination Detection
Chapter 8. Programming with Shared Memory
Chapter 9. Distributed Shared Memory Systems and Programming
ALGORITHMS and APPLICATIONS
Chapter 10. Sorting Algorithms
Chapter 11. Numerical Algorithms
Chapter 12. Image Processing
- Assignments, 40% (+ 5/10)
- Mid-term Exam, 25% (+/- 5)
- Final Exam, 35% (+/- 5)
Homework #1 (due March 3rd, 2009)
1. Describe Gustafsons Law as related to maximum
speedup and Amdahls law.
Specifically explain how
Gustafson invalidates Amdahls limit.
2. Search top500 list of the supercomputers. Who
is the current champion? Search for the properties of
supercomputer. How much will Sequoia be faster than current fastest
3. Try your linux lab
accounts and play with (get accustomed to) MPI hello program.
Use startup document for MPI UBE_LAM_MPI.doc
makine isimleri örnek olarak linux02 "ubepc-40-102.ege.edu.tr"
biçiminde kayıt edilmiş..
bu ismi kullanmak veya ip'lerini örn: 22.214.171.124 (101-108 arası)
gerekli. mkineler arasında erişim içinse...yani örnek olarak linux01'den
makinelere sadece linuxXX (linux06 gb) biçiminde mümkün..
Homework #2 (due March 10th, 2009)
1. Write an MPI program to send a message
around a ring of processors. That is,
Processor 0 sends it to
processor 1, that sends to processor 2, and so on.
The last processor returns
the message to processor 0. Provide sample output
which allows user to follow
the message along its route. Use MPI_Wtime to measure
the execution time of your
code for p = 4, 8, 16, 32.
2. Noting that the
operation defined in the first problem is in fact a form of broadcast.
Write a second MPI program
that broadcasts the same message as in first problem.
Measure the execution time
and compare it to that of problem 1 then interpret the
3. Search Internet for free
MPI analyzer/profilers. Give a brief (at most one page)
Report on your findings.
Homework #3 (due March 17th, 2009)
an MPI program to distribute MPI source files to all machines in your
file and to compile them automatically. To be more specific your program
take at least two arguments: a source file name and a distribution list.
Correction: When MPI nodes activated (e.g., lamboot) MPI assigns a node id to each
Thus, you can use these node ids instead of taking a distribution list as
input parameter. In summary, you dont actually need a distribution list
Murat Kurt for pointing this out.)
#4 (due March 24th,2009 Sample Homework by Esra Ruzgar)
Write and execute an embarrassingly
First write and test non-MPI sequential
Write an MPI version
Execute on one computer and on more than
Need a host file
Use MPI-Wtime() function
Homework #5 (due March 31st,
N-body simulation details
#6 (due April 7th,2009)
experimentally a fully synchronous parallel MPI implementation
partially synchronous parallel MPI implementation of the
problem described in Section 6.3.2 of the textbook.
different values of s in the convergence condition specified in
6.4. Write a report on your findings that includes the specific
improvements you obtained.
#7 (due May 5th, 2009)
Cellular Automata Problem aircraft and Birds using Java Threads.
problem details see.
#8 (due May 12th, 2009)
Java multithreaded program consisting of two threads in which
reads into a buffer by one thread and written out to another file
thread. Provide sample outputs and clear explanations of the code.
Homework #9 (due May 26th,2009)
10.4 (on MPI platform)
10.22 (using Java threads)
sample outputs and comments on code.
MPI tutorials one, two,three,four, GroupComm
document for MPI UBE_LAM_MPI.doc
Send any comments or suggestions
Last revised in Feb 12,1996