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

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

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

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

Multicore and GPGPU Programming

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

О курсе

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 ManagementDistributed ComputingScalabilityComputer ArchitectureHardware ArchitectureData SharingOS Process ManagementC and C++AlgorithmsProgram DevelopmentPerformance TestingProgramming PrinciplesPerformance TuningMicroarchitectureSystem Programming

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

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

01Introduction to Parallel and Multicore Programming32 материалов

Course Introduction

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

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

BITS Pilani Instructors Group

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

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

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

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

Начать на Coursera

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

Обучение на Coursera

≈ 55.8 ч

10 модулей

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

Часть программы вашего университета
Recording of Multicore and GPGPU Programming: Week 1 - Live Session on 25-12-06 18:36:27 [58:56]Видео

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ЧтениеCopy of Parallel Systems and Parallel ProgramsВидео

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Видео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Чтение
02Multicore Processor Architectures and Caching Mechanisms31 материалов

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

Graded Quiz for Week 1 and 2 Задание
03GPGPU Architecture and Programming Model Overview30 материалов

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
04Cuda Execution Model31 материалов

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

Graded Quiz for Week 3 and 4 Задание
05CUDA Memory Model and Streams and Concurrency29 материалов

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Лабораторная
06Shared-Memory Programming with Pthreads29 материалов

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

Graded Quiz for Week 5 and 6Задание
07Distributed Memory Programming with MPI21 материалов

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Задание
08Shared-Memory Programming with OpenMP37 материалов

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

Graded Quiz for Week 7 and 8Задание
09Parallel Program Development 139 материалов

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Задание
10Parallel Program Development 227 материалов

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

Graded Quiz for Week 9 and 10Задание

Course Wrap-Up

Course SummaryЧтение
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Задание