Parallel Computing Fundamentals (A)
Description: This module is designed to introduce fundamental concepts in parallel computing in a CS I course. Topics include overview of computation on a multicore processor, data dependence and need for synchronization in parallel programs, parallel performance and Amdahls law and energy efficient computing. The concepts are illustrated with no particular binding to any programming language and therefore can be introduced in different varieties of CS I courses
Recommended Length: : 1 lecture (1 hr)
Recommended Course: CS I
Topics and Learning outcomes (per NSF/IEEE-TCPP PDC Curriculum):
- [Architecture] Taxonomy: Flynn's taxonomy, data vs. control parallelism, shared/distributed memory
- [Architecture] Multicore: Describe how cores share resources (cache, memory) and resolve conflicts
- [Programming] Load balancing: Understand the effects of load imbalances on performance, and ways to balance load across threads or processes
- [Programming] Amdahl's law: Know that speedup is limited by the sequential portion of a parallel program, if problem size is kept fixed
- [Algorithm] Scalability in algorithms and architectures: Comprehend via several examples that having access more processors does not guarantee faster execution - the notion of inherent sequentiality
Lecture Material: [ PDF ] [ PPT ]
Pedagogical Notes: available to instructors only
Sample Exam Question: available to instructors only