Course Details
Subject {L-T-P / C} : CS4431 : Multi-core Architecture and Programming { 3-0-0 / 3}
Subject Nature : Theory
Coordinator : Bibhudatta Sahoo
Syllabus
Introduction to Multi-core Architecture: Motivation for Concurrency in software, Parallel Computing Platforms, Parallel Computing in Microprocessors, Differentiating Multi-core Architectures from Hyper-Threading Technology, Multi-threading on Single-Core versus Multi-Core Platforms Understanding Performance, Amdahl’s Law, Growing Returns: Gustafson’s Law. System Overview of Threading:Defining Threads, System View of Threads, Threading above the Operating System, Threads inside the OS, Threads inside the Hardware, What Happens When a Thread Is Created, Application Programming Models and Threading, Virtual Environment: VMs and Platforms, Runtime Virtualization, System Virtualization
Fundamental Concepts of Parallel Programming: Designing for Threads, Task Decomposition, Data Decomposition, Data Flow Decomposition, Implications of Different Decompositions, Challenges You’ll Face, Parallel Programming Patterns, A Motivating Problem: Error Diffusion, Analysis of the Error Diffusion Algorithm, An Alternate Approach: Parallel Error Diffusion, Other Alternatives
Threading and Parallel Programming Constructs: Synchronization, Critical Sections, Deadlock, Synchronization Primitives, Semaphores, Locks, Condition Variables, Messages, Flow Control- based Concepts, Fence, Barrier, Implementation-dependent Threading Features. Threading APIs : Threading APls for Microsoft Windows, Win32/MFC Thread APls, Threading APls for Microsoft. NET Framework,Creating Threads, Managing Threads, Thread Pools, Thread Synchronization, POSIX Threads, Creating Threads, Managing Threads, Thread Synchronization, Signaling, Compilation and Linking
OpenMP: A Portable Solution for Threading: Challenges in Threading a Loop, Loop-carried Dependence, Data-race Conditions, Managing Shared and Private Data, Loop Scheduling and Portioning, Effective Use of Reductions, Minimizing Threading Overhead, Work-sharing Sections, Performance oriented Programming, Using Barrier and No wait, Interleaving Single-thread and Multi-thread Execution, Data Copy-in and Copy-out, Protecting Updates of Shared Variables, Intel Task queuing Extension to OpenMP, OpenMP Library Functions, OpenMP Environment Variables, Compilation, Debugging, performance.
Solutions to Common Parallel Programming Problems: Too Many Threads, Data Races, Deadlocks, and Live Locks, Deadlock, Heavily Contended Locks, Priority Inversion, Solutions for Heavily Contended Locks, Non-blocking Algorithms, ABA Problem, Cache Line Ping-ponging, Memory Reclamation Problem, Recommendations, Thread-safe Functions and Libraries, Memory Issues, Bandwidth, Working in the Cache, Memory Contention, Cache-related Issues, False Sharing, Memory Consistency, Current IA-32 Architecture, Itanium Architecture, High-level Languages, Avoiding Pipeline Stalls on IA-32,Data Organization for High Performance
Course Objectives
- To understand the recent trends in the field of Computer Architecture and identify performance related parameters
- To appreciate the need for parallel processing and to expose the students to the problems related to multiprocessing
- To understand the different types of multicore architectures
- To understand the concepts of multi-threading and OPENMP
Course Outcomes
Identify the limitations of ILP and the need for multi-core architectures.
Solve the issues related to multiprocessing and suggest solutions.
Point out the salient features of different multi-core architectures and how they exploit parallelism.
How to program multicore processors
Essential Reading
- Patrick Stakem, Multicore Computer Architectures, xxxx , ISBN-13: 978-1520241371
- Shameem Akhter and Jason Roberts, Multicore Programming, Increased Performance through Software Multi-threading, Intel Press
Supplementary Reading
- Tracey Hughes Cameron Hughes, Professional Multicore Programming Design and Implementation for C++ Developers, Worx Publiction
- Darryl Gove, Multicore Application Programming for Windows, Linux, and Oracle Solaris, Pearson