Midterm Topic Outline¶
Because midterm is a take-home quiz, nothing to prepare really. You can use this document as a guide to the reviewing of the book content. You may also use use this outline as a quick reference to find where to locate the book sections when working with on the midterm.
Types of Questions¶
Terminology - Show your knowledge of common terminology Example: network topologies, SIMD, etc.
Understanding and application Example: Computing performance metrics
Design Example: design a cache aware algorithm
Parallel software * Compiling with OpenMP * Write a complete OpenMP program * Running parallel program
Performance Model¶
Calculations of key performance metrics. Know some terms.
Communication cost model
Parallel time complexity
Speedup
Efficiency
Strong scaling vs Weak scaling
Amdahl’s law
Parallel Hardware¶
SISD, SIMD, and MIMD
Interconnection networks: ring, toroidal mesh, hypercube, fat tree
Shared memory vs distributed memory vs distributed shared memory
Non-uniform memory access
Cache coherence and false sharing
Race conditions
Parallel Algorithms¶
Integration – trapezoid example
Matrix operations * Matrix multiplication * Matrix addition * Matrix-vector multiplication
Broadcast
Optimizing for Cache¶
Ideal cache model and cache complexity
Improving cache complexity through loop reordering
Row major vs column major ordering
Single Core Optimization¶
Using -O3 as an optimization flag
Using memcpy and memset
OpenMP Programming¶
Directives: parallel, for, critical
Clauses: private, reduction, schedule
Library functions: omp_get_max_threads, omp_get_thread_num, omp_get_num_procs, omp_set_num_threads
Header file: omp.h
Compilation command:
-fopenomp
Running parallel code