К содержимому
learnspaceYOUR NEXT CHAPTER
ПРОСТРАНСТВО ОБУЧЕНИЯ
ГлавнаяКаталог курсовМоё обучениеCoursera

Знания без границ

Учитесь у лучших университетов и компаний мира.

Открыть Coursera
Интеграция
Пространство университета
Моё пространствоСтраница курса
↵
ЯЛичный кабинетСтудент
© 2026 LearnSpaceКаждый день — возможность узнать больше.Помощь
Multicore and GPGPU Programming · LearnSpace
Назад в каталог
courseraПрограммирование

Multicore and GPGPU Programming

Курс от Birla Institute of Technology & Science, Pilani
Средний≈ 75.2 чАнглийский
О курсеНавыкиПрограммаПреподаватели

О курсе

The course "Multicore and GPGPU Programming" provides a foundational understanding of parallel programming, focusing on developing high-performance, multi-threaded applications in both CPU and GPU environments. Beginning with a review of multicore processor architectures, caching mechanisms, and Non-Uniform Memory Access (NUMA) systems, students will learn the essentials of shared memory programming, synchronisation techniques, and the use of locks to ensure data integrity across threads. The course delves into designing shared memory data structures and introduces advanced synchronisation concepts, including lazy synchronisation, crucial for scalable and efficient concurrent applications. Additionally, students will explore the architecture and programming model of General-Purpose Graphics Processing Units (GPGPUs) and learn CUDA programming to leverage GPU parallelism for compute-intensive tasks. By the end of the course, students will be adept in optimising multi-threaded and many-core applications, balancing workload across CPUs and GPUs to achieve high throughput and efficient resource utilisation. This course is essential for those aiming to develop expertise in high-performance computing and parallel programming for modern multi-core and GPU-based systems.

Навыки, которые вы освоите

Memory ManagementAlgorithmsDistributed ComputingSoftware ArchitectureMicroarchitectureC (Programming Language)Program DevelopmentSystem Design and ImplementationOperating SystemsPerformance Testing

Программа курса

12 модулей · 326 учебных материалов

01Course Introduction6 материалов

Course Introduction

Course OverviewЧтениеCourse Introductory VideoВидеоMeet Your Instructor - Dr. Gargi Prabhu ВидеоMeet Your Instructor - Dr. Kunal KorgaonkarВидео

Учитесь у экспертов

Kunal Kishore Korgaonkar

Преподаватель курса

Prof. Gargi Prabhu

Преподаватель курса

Multicore and GPGPU Programming
В каталоге вашей программы

Инвестируйте в себя

Новые знания — в удобное для вас время.

Начать на Coursera

Обучение откроется на Coursera
в новой вкладке

Обучение на Coursera

≈ 75.2 ч

12 модулей

Язык: Английский

Часть программы вашего университета
Meet Your PeersОбсуждение
Recording of Multicore and GPGPU Programming: Week 1 - Live Session on 25-05-23 18:32:50 [47:25]Видео
02Introduction to Parallel and Multicore Programming27 материалов

Fundamentals of Parallel Computing

Need for Ever-Increasing PerformanceВидеоNeed for Ever-Increasing PerformanceЗаданиеParallel Systems and Parallel ProgramsВидеоParallel Systems and Parallel ProgramsЗаданиеConcurrent, Parallel, Distributed SystemsВидеоConcurrent, Parallel, Distributed SystemsЗаданиеTypes of Parallelism: Data, Task and Pipeline ParallelismВидеоTypes of Parallelism: Data, Task and Pipeline ParallelismЗаданиеRecommended Reading: Fundamentals of Parallel ComputingЧтение

Introduction to Performance Metrics in Parallel Computing

Speedup and EfficiencyВидеоSpeedup and EfficiencyЗаданиеAmdahl’s Law ВидеоAmdahl’s Law ЗаданиеGustafson’s Law ВидеоGustafson’s Law ЗаданиеScalability in Parallel Systems

Summary and Assessment

Why Parallelism? Revisiting the Roots of Multicore ProgrammingОбсуждение
03Multicore Processor Architectures and Caching Mechanisms33 материалов

Architecture Background

The Von Neumann ArchitectureВидеоThe Von Neumann ArchitectureЗаданиеProcesses, Multitasking, and ThreadsВидеоProcesses, Multitasking, and ThreadsЗаданиеThe Basics of CachingВидеоThe Basics of CachingЗаданиеVirtual MemoryВидеоVirtual MemoryЗаданиеInstruction-Level ParallelismВидеоInstruction-Level ParallelismЗаданиеHardware MultithreadingВидеоHardware MultithreadingЗаданиеRecommended Reading: Architecture BackgroundЧтение

Parallel Hardware and Software

Classifications of Parallel ComputersВидеоClassifications of Parallel ComputerЗаданиеSIMD and MIMD SystemsВидеоSIMD and MIMD SystemsЗаданиеInterconnection Networks: Shared Memory SystemsВидеоInterconnection Networks: Shared Memory SystemsЗадание

Summary and Assessment

From Von Neumann to Multicore: Evolving Architectures and Memory RealitiesОбсуждениеGraded Quiz - Modules 1 and 2 ЗаданиеRecording of Multicore and GPGPU Programming: Week 2 - Live Session on 25-05-30 18:35:08 [02:05]Видео
04GPGPU Architecture and Programming Model Overview32 материалов

GPGPU Architecture and CUDA

GPUs and GPGPUВидеоGPUs and GPGPUЗаданиеGPU ArchitectureВидеоGPU ArchitectureЗаданиеHeterogeneous ComputingВидеоHeterogeneous ComputingЗаданиеParadigm of Heterogeneous ComputingВидеоParadigm of Heterogeneous ComputingЗаданиеRecommended Reading: GPGPU Architecture and CUDAЧтение

Programming Model Overview

Introduction to CUDAВидеоIntroduction to CUDAЗаданиеStructure of a CUDA ProgramВидеоStructure of a CUDA ProgramЗаданиеThreads, Blocks, and GridВидеоThreads, Blocks, and GridЗаданиеManaging Memory

Summary and Assessment

Harnessing GPU Power: Exploring CUDA and the Architecture of ParallelismОбсуждениеRecording of Multicore and GPGPU Programming: Week 3 - Live Session on 25-06-06 18:31:21 [44:50]Видео
05Cuda Execution Model33 материалов

Structure of a CUDA Program

Introduction to CUDA Execution ModelВидеоIntroduction to CUDA Execution ModelЗаданиеWarps and Thread BlocksВидеоWarps and Thread Blocks ЗаданиеWarp DivergenceВидеоWarp DivergenceЗаданиеResource PartitioningВидеоResource PartitioningЗаданиеLatency HidingВидеоLatency HidingЗаданиеOccupancyВидеоOccupancyЗаданиеSynchronizationВидеоSynchronizationЗаданиеScalabilityВидеоScalabilityЗаданиеRecommended Reading: Structure of a CUDA ProgramЧтение

Exposing Parallelism and Avoiding Branch Divergence

Exposing ParallelismВидеоExposing ParallelismЗаданиеChecking Active Warps with NvprofВидеоChecking Active Warps with NvprofЗаданиеChecking Memory Operations with NvprofВидеоChecking Memory Operations with NvprofЗадание

Summary and Assessment

Under the Hood: Warps, Divergence, and CUDA Execution DynamicsОбсуждениеGraded Quiz - Modules 3 and 4 ЗаданиеRecording of Multicore and GPGPU Programming: Week 4 - Live Session on 25-06-13 18:32:39 [49:37]Видео
06CUDA Memory Model and Streams and Concurrency 32 материалов

CUDA Memory Model

Introduction to CUDA Memory ModelВидеоIntroduction to CUDA Memory ModelЗаданиеMemory Allocation and DeallocationВидеоMemory Allocation and DeallocationЗаданиеZero Copy MemoryВидеоZero Copy MemoryЗаданиеUnified Virtual Addressing and Unified Memory ВидеоUnified Virtual Addressing and Unified Memory ЗаданиеAligned and Coalesced AccessВидеоAligned and Coalesced AccessЗаданиеCUDA Shared MemoryВидеоCUDA Shared MemoryЗаданиеShared Memory Banks and Access Mode ВидеоShared Memory Banks and Access Mode ЗаданиеConfiguring the Amount of Shared MemoryВидеоConfiguring the Amount of Shared MemoryЗаданиеSynchronisationВидеоSynchronisationЗаданиеRecommended Reading: CUDA Memory ModelЧтение

Streams and Concurrency

CUDA StreamsВидеоCUDA StreamsЗаданиеStream Scheduling and PrioritiesВидеоStream Scheduling and PrioritiesЗаданиеCUDA EventsВидеоCUDA EventsЗаданиеConcurrent Kernel Execution

Summary and Assessment

Hands on lab: Parallel Matrix Addition Using CUDAЛабораторнаяSmart Memory and Seamless Concurrency: CUDA Memory and StreamsОбсуждениеSGA-1: CUDA Programming and Performance OptimisationЗаданиеRecording of Multicore and GPGPU Programming: Week 5 - Live Session on 25-06-20 18:31:59 [47:36]Видео
07Shared-Memory Programming with Pthreads32 материалов

Introduction to Multi-Threading

Processes, Threads and PthreadsВидеоRecommended Reading: Processes, Threads and PthreadsЧтениеProcesses, Threads and PthreadsЗаданиеHello World!!ВидеоRecommended Reading: Hello World!!ЧтениеHello World!!ЗаданиеMatrix-Vector MultiplicationВидеоRecommended Reading: Matrix-Vector MultiplicationЧтениеMatrix-Vector MultiplicationЗаданиеCritical SectionsВидеоRecommended Reading: Critical SectionsЧтениеCritical SectionsЗаданиеBusy WaitingВидеоRecommended Reading: Busy WaitingЧтениеBusy WaitingЗадание

How to write safe parallel code

MutexesВидеоRecommended Reading: MutexesЧтениеMutexesЗаданиеSemaphoresВидеоRecommended Reading: SemaphoresЧтениеSemaphoresЗаданиеBarriers and Condition Variables

Summary and Assessment

Thread Synchronization and Shared Memory: Building Reliable Parallel Programs with PthreadsОбсуждениеGraded Quiz - Modules 5 and 6 ЗаданиеLab Instruction DocumentЧтениеRecording of Multicore and GPGPU Programming: Week 6 - Live Session on 25-06-27 18:38:36 [43:53]Видео
08Distributed Memory Programming with MPI24 материалов

Basics of MPI

Introduction to MPIВидеоRecommended Reading: Introduction to MPIЧтениеIntroduction to MPIЗаданиеMPI Setup and Communicator FunctionsВидеоRecommended Reading: MPI Setup and Communicator FunctionsЧтениеMPI Setup and Communicator FunctionsЗаданиеSPMD and CommunicationВидеоRecommended Reading: SPMD and CommunicationЧтениеSPMD and CommunicationЗаданиеPotential PitfallsВидеоRecommended Reading: Potential PitfallsЧтениеPotential PitfallsЗадание

Simple Algorithms and Safety

Simple Serial Sorting AlgorithmВидеоRecommended Reading: Simple Serial Sorting AlgorithmЧтениеSimple Serial Sorting AlgorithmЗаданиеParallel Odd-Even Transposition SortВидеоRecommended Reading: Parallel Odd-Even Transposition SortЧтениеParallel Odd-Even Transposition SortЗадание

Summary and Assessment

MPI in Action: Understanding Setup, Communication, and Parallel SortingОбсуждениеLab: Practice CodeЧтениеLab: Practice SolutionЧтение
09Shared-Memory Programming with OpenMP38 материалов

Introduction

Introduction to OpenMPВидеоRecommended Reading: Introduction to OpenMPЧтениеIntroduction to OpenMPЗаданиеProgramming in OpenMPВидеоRecommended Reading: Programming in OpenMPЧтениеProgramming in OpenMPЗаданиеTrapezoidal RuleВидеоRecommended Reading: Trapezoidal RuleЧтениеTrapezoidal RuleЗаданиеScope of VariablesВидеоRecommended Reading: Scope of VariablesЧтениеScope of VariablesЗаданиеReduction ClauseВидеоRecommended Reading: Reduction ClauseЧтениеReduction ClauseЗадание

Parallel Loops

Parallel-For Directive and Caveats in ThemВидеоRecommended Reading: Parallel-For Directive and Caveats in ThemЧтениеParallel-For Directive and Caveats in ThemЗаданиеSorting FunctionsВидеоRecommended Reading: Sorting FunctionsЧтениеSorting FunctionsЗадание

Mutual Exclusion Techniques

Producers and ConsumersВидеоRecommended Reading: Producers and ConsumersЧтениеProducers and ConsumersЗаданиеTermination, Startup and Atomic DirectiveВидеоRecommended Reading: Termination, Startup and Atomic DirectiveЧтениеTermination, Startup and Atomic DirectiveЗадание

Summary and Assessment

Mastering OpenMP: From Parallel Patterns to SynchronisationОбсуждениеGraded Quiz - Modules 7 and 8Задание
10Parallel Program Development 140 материалов

Two N-body Solvers

Introduction to N-body ProblemВидеоRecommended Reading: Introduction to N-body ProblemЧтениеIntroduction to N-body ProblemЗаданиеSerial Solutions to the N-body ProblemВидеоRecommended Reading: Serial Solutions to the N-body ProblemЧтениеSerial Solutions to the N-body ProblemЗаданиеParallelising StrategyВидеоRecommended Reading: Parallelising StrategyЧтениеParallelising StrategyЗадание

Using OpenMP to Parallesise

Parallelising Basic Solver Using OpenMPВидеоRecommended Reading: Parallelising Basic Solver Using OpenMPЧтениеParallelising Basic Solver Using OpenMPЗаданиеParallelising Reduced Solver Using OpenMP ВидеоRecommended Reading: Parallelising Reduced Solver Using OpenMPЧтениеParallelising Reduced Solver Using OpenMPЗадание

Using Pthreads to Parallelise

Parallelising Basic Solver Using Pthreads ВидеоRecommended Reading: Parallelising Basic Solver Using PthreadsЧтениеParallelising Basic Solver Using PthreadsЗаданиеParallelising Basic Solver Using MPI ВидеоRecommended Reading: Parallelising Basic Solver Using MPIЧтениеParallelising Basic Solver Using MPIЗадание

Using MPI to Parallelise

Parallelising Reduced Solver Using MPIВидеоRecommended Reading: Parallelising Reduced Solver Using MPIЧтениеParallelising Reduced Solver Using MPIЗаданиеEvaluating MPI PerformanceВидеоRecommended Reading: Evaluating MPI PerformanceЧтениеEvaluating MPI PerformanceЗадание

Using CUDA to Parallelise

Parallelising Basic Solver Using CUDAВидеоRecommended Reading: Parallelising Basic Solver Using CUDAЧтениеParallelising Basic Solver Using CUDAЗаданиеEvaluating CUDA Solver and Improving PerformanceВидеоRecommended Reading: Evaluating CUDA Solver and Improving PerformanceЧтениеEvaluating CUDA Solver and Improving PerformanceЗадание

Shared Memory Approach

Using Shared Memory for SolversВидеоRecommended Reading: Using Shared Memory for SolversЧтениеUsing Shared Memory for SolversЗадание

Summary and Assessment

The N-Body Solver: Exploring Parallelism Across ModelsОбсуждение
11Parallel Program Development 228 материалов

Learn Various Implementations of Sample Sort

Sample Sort and Bucket SortВидеоRecommended Reading: Sample Sort and Bucket SortЧтениеSample Sort and Bucket SortЗаданиеMapВидеоRecommended Reading: MapЧтениеMap (Quiz)ЗаданиеImplementing Sample Sort Using OpenMP: First ImplementationВидеоRecommended Reading: Implementing Sample Sort Using OpenMP: First ImplementationЧтениеImplementing Sample Sort Using OpenMP: First ImplementationЗаданиеImplementing Sample Sort Using OpenMP: Second ImplementationВидеоRecommended Reading: Implementing Sample Sort Using OpenMP: Second ImplementationЧтениеImplementing Sample Sort Using OpenMP: Second ImplementationЗаданиеImplementing Sample Sort Using Pthreads ВидеоRecommended Reading: Implementing Sample Sort Using PthreadsЧтениеImplementing Sample Sort Using PthreadsЗаданиеImplementing Sample Sort Using MPIВидеоRecommended Reading: Implementing Sample Sort Using MPIЧтениеImplementing Sample Sort Using MPIЗаданиеImplementing Sample Sort Using MPI: ExampleВидеоRecommended Reading: Implementing Sample Sort Using MPI: ExampleЧтениеImplementing Sample Sort Using MPI: ExampleЗаданиеImplementing Sample Sort Using CUDA ВидеоRecommended Reading: Implementing Sample Sort Using CUDAЧтениеRecommended Reading: Which API?ЧтениеImplementing Sample Sort Using CUDAЗадание

Summary and Assessment

Parallel Sample Sort Across PlatformsОбсуждениеGraded Quiz - Modules 9 and 10ЗаданиеSGA-2: Odd-Even Transposition Sort Parallelisation Задание
12Final Comprehensive Examination1 материалов
Final Comprehensive Examination Задание
Видео
Scalability in MIMD SystemsЗадание
Cost of ParallelisationВидео
Cost of ParallelisationЗадание
Sources of Overhead in Parallel Programs Видео
Sources of Overhead in Parallel ProgramsЗадание
Timing Parallel Programs: Methods and Best PracticesВидео
Taking Timings of Parallel ProgramsЗадание
GPU PerformanceВидео
GPU PerformanceЗадание
Recommended Reading: Introduction to Performance Metrics in Parallel ComputingЧтение
Interconnection Networks: Distributed Memory SystemsВидео
Interconnection Networks: Distributed Memory SystemsЗадание
Cache CoherenceВидео
Cache CoherenceЗадание
Shared-Memory vs. Distributed-MemoryВидео
Shared-Memory vs. Distributed-MemoryЗадание
Parallel Software: Coordinating Process and ThreadsВидео
Parallel Software: Coordinating Process and ThreadsЗадание
Distributed Memory SoftwareВидео
Distributed Memory SoftwareЗадание
Recommended Reading: Parallel Hardware and SoftwareЧтение
Видео
Managing MemoryЗадание
Writing and Verifying Your KernelВидео
Writing and Verifying Your KernelЗадание
Compiling and Running CUDA ProgramВидео
Compiling and Running CUDA ProgramЗадание
Nvidia Compute Capabilities and Device ArchitectureВидео
Nvidia Compute Capabilities and Device ArchitectureЗадание
Timing Your KernelВидео
Timing Your KernelЗадание
Organising Parallel ThreadsВидео
Organising Parallel ThreadsЗадание
Managing DevicesВидео
Managing DevicesЗадание
Recommended Reading: Programming Model OverviewЧтение
Avoiding Branch DivergenceВидео
Avoiding Branch DivergenceЗадание
The Parallel Reduction Problem and Thread DivergenceВидео
The Parallel Reduction Problem and Thread DivergenceЗадание
Improving Divergence in Parallel ReductionВидео
Improving Divergence in Parallel ReductionЗадание
Recommended Reading: Exposing Parallelism and Avoiding Branch DivergenceЧтение
Видео
Concurrent Kernel ExecutionЗадание
Recommended Reading: Streams and ConcurrencyЧтение
Видео
Recommended Reading: Barriers and Condition VariablesЧтение
Barriers and Condition VariablesЗадание
Recommended Reading: Read-Write LocksЧтение
Caches, Cache-Coherence and False SharingВидео
Recommended Reading: Caches, Cache-Coherence and False SharingЧтение
Caches, Cache-Coherence and False SharingЗадание
Safety in MPI ProgramsВидео
Recommended Reading: Safety in MPI Programs Чтение
Safety in MPI ProgramsЗадание
SchedulingВидео
Recommended Reading: Scheduling Чтение
SchedulingЗадание
Critical Sections and LocksВидео
Recommended Reading: Critical Sections and LocksЧтение
Critical Sections and LocksЗадание
TaskingВидео
Recommended Reading: TaskingЧтение
TaskingЗадание
Evaluating OpenMP PerformanceВидео
Recommended Reading: Evaluating OpenMP performanceЧтение
Evaluating OpenMP PerformanceЗадание