CS61V Parallel Computing
Lecturer Dr. James Evans
Incoming Skills Knowledge of a programming language (preferably Java or C)
Description: This course is an introduction to the field of High Performance Computing and Parallel Programming Architectures. Cutting-edge technologies for both software and hardware will be studied which are used in solving some of the most important and difficult scientific problems of our age.
Course Outline

1. Introduction to High Performance Computing

  • Motivating Applications
  • Simulations
  • Technology Trends
  • The Sequential Bottleneck
  • High Performance Computers

2. Bit Level Parallelism

  • 64-bit Computing

3. Instruction Level Parallelism

  • Pipelining and Multithreading

3. Parallel Architectures

  • Data Parallel
  • Shared Memory
  • Distributed Memory
  • UMA versus NUMA

3. Parallel Programming Models

  • Programming Models
  • Parallel Performance

4. Memory Hierarchy and Cache

  • Memory Models
  • Unified and Split Caches
  • Cache Mapping Strategies

5. Message Passing

  • MPI
  • OpenMP

6. Grid Computing

  • Grand-Challenge Problems
  • Computational Grids

7. Concurrency

  • The Concurrency Programming Model
  • The Mutual-Exclusion Problem
  • Monitors and Semaphores
Course Textbook

Parallel Computer Architecture: A Hardware/Software Approach
Culler, J Pal Singh

Slides
Lecture 1

Lecture 2

Lecture 3

Lecture 4

Lecture 5

Lecture 6

Lecture 7

Lecture 8

Lecture 9

Lecture 10

Lecture 11

Assignments
Coursework Marks
Java OMP Compiler