CS735/CS835
Introduction to Parallel and Distributed Programming
Course Outline
- Introduction
[Andrews,
Chapter 1]
- hardware architectures
- applications and programming styles
- Programming with Java threads
[Andrews,
Section 5.4; The
Java Language Specification]
- Thread class
- monitors
- numerical integration using Java threads: code and performance
- Shared-variable programming fundamentals
[Andrews,
Chapters 2-5]
- atomic actions and locks
- barrier synchronization
- semaphores
- monitors
- case study: POSIX threads
- Programming with Java RMI
[Andrews,
Section 8.5; The
Java Tutorial: RMI;
Java RMI
documentation]
- java.rmi package
- remote method invocation
- registry service
- numerical integration using Java RMI: code and performance
- Message-passing programming
[Andrews,
Chapter 7]
- asynchronous message passing
- synchronous message passing
- collective communication: hypercube-based algorithms
- case study: MPI
- Distributed-programming paradigms
[Andrews,
Chapter 9]
- manager/workers
- heartbeat
- client/server
- pipelines
- Scientific computing applications
[Andrews,
Chapter 11]
- Combinatorial search
[Quinn,
Chapter 13]
- parallel branch-and-bound
- load balancing
- Combining threads and message passing
[PM2 webpage]
- Java: threads and RMI
- PM2: threads and RPC
- Message-passing implementation issues
[Active Messages
paper;
SBP paper;
LFC
paper;]
- active messages
- eliminating O.S. overhead
- integrating message passing and thread scheduling
- Data-parallel programming
[Andrews,
Section 3.5]
- SIMD hardware
- parallel prefix
- data-parallel programming on MIMD hardware
- Communication via tuple spaces
[Andrews,
Section 7.7;
JavaSpaces
spec]]
- Distributed shared memory
[Andrews,
Section 10.4;
Pugh's webpage;
Hyperion
paper]
- consistency protocols
- Java memory model
- UNH Hyperion project
- Is Java a high-performance programming language?
[October 2001 CACM]
Last modified on August 30, 2001.
Comments and questions should be directed to
pjh@cs.unh.edu