ECS 158 PROGRAMMING ON PARALLEL ARCHITECTURES
(4) III
Lecture: 3 hours
Prerequisites: Course ECS
150; ECS 154B recommended
Grading: Letter; two midterms (20% each), final exam
(40%) and programming work (20%)
Catalog Description:
Techniques for software development using the shared-memory and
message-passing paradigms, on parallel architectures and networks of workstations.
Locks, barriers and other techniques for synchronization. Introduction
to parallel algorithms.
Expanded Course Description:
- Programming Paradigms
- Shared-memory
- Message-passing
- Bulletin-board (tuple space)
- Distributed shared memory (DSM)
- Software packages: MPI, PVM, Linda, p4, Adsmith, pthreads
- Overview of Parallel Architectures
- Shared-memory and message-passing hardware
- Interconnect structures, e.g. bus, crossbar,Omega-net, mesh
- Cache coherency
- Interprocess Synchronization
- Review of operating systems material: Processes, timesharing, OS-based
interprocess synchronization
- Synchronization hardware, e.g. test-and-set and fetch-and-add instructions
- Locks, barriers
-
Latency Problems
- Memory/network delays
- Latency hiding, e.g. using nonblocking messages
Collective Communication
- Broadcast, scatter/gather, all-scatter/all-gather
Overview of Parallel Applications
- Sorting, database
- Graph algorithms
- Scientific computing
Textbook:
Instructor's class notes.
Computer Usage:
Extensive programming assignments on our CSIF networked machines.
The shared-memory work is done using Adsmith and the MulSim simulator,
and the message-passing component using MPI.
Engineering Design Statement:
Students in the course write sophisticated, systems-level programs
according to their own design. Many of the programs involve analysis of
tradeoffs between efficient use of the hardware and ease of programming.
ABET Category Content:
Engineering Science: 2 units
Engineering Design: 2 units
Goals:
Student will:
- learn techniques of software development using the shared-memory and
message-passing paradigms on parallel architectures and networks of workstations
- be introduced to parallel algorithms
-
Program Educational Outcomes:
- The ability to work independently
- The ability to work on a team
- The ability to apply knowledge of basic science, mathematics, and engineering
principles to solve computing and information processing problems
- The ability to write correct and good programs
- The ability to understand the relationship between hardware and software
- The ability to understand the tradeoffs in the design of hardware systems,
software systems, processes and components
- The ability to construct appropriate abstractions to manage complexity
and to think creatively about new problems
- The ability to use experimental methods on software systems by gathering
data to improve the systems
- The ability to acquire the foundations to do well in graduate school
- The ability to acquire the foundations to be a life-ling learner
Instructors: M.
Farrens, N. Matloff , R.
Pandey, K. Ma
Prepared By: N. Matloff (November 2003)
Overlap Statement:
Comparison of this course with other existing courses does not indicate
any significant overlap.
5/06