SlideShare a Scribd company logo
CUDA-AWARE MPI
▸ Разделы:
▸ Обзор MPI
▸ Связка MPI & CUDA
▸ Пример программы
2
IBM'S BLUE GENE/P
SUPERCOMPUTER
3
ЧТО ТАКОЕ MPI?
▸Интерфейс передачи сообщений
▸Протокол на уровне софта
▸Кросспалтформенность
▸Принцип компьютерных вычислений SIMD
4
MPI VS CUDA
▸Принцип работы
узлов
▸Структура памяти
5
ВИДЫ КЛАСТЕРОВ
▸1:
▸2:
6
▸MPI_Init: инициализирует окружение MPI
▸MPI_Comm_size: возвращает число узлов
▸MPI_Comm_rank: возвращает номер
текущего узла
▸MPI_Send: отправляет сообщение
▸MPI_Recv: получает сообщение
▸MPI_Finalize: очистка памяти
СТАНДАРТНЫЕ ФУНКЦИИ
7
8
ПРИМЕР ПРОГРАММЫ
▸ 1
▸ 2
▸ 3
▸ 4
▸ 5
▸ 6
▸ 7
▸ 8
▸ 9
▸ 10
▸ 11
▸ 12
▸ 13
▸ 14
▸ 15
▸ 16
▸ 17
▸ 18
▸ 19
▸ 20
▸ 21
▸ 22
КОМПИЛЯЦИЯ И ЗАПУСК
▸Компиляция
▸Запуск четырех узлов с
параметрами <args>
9
ВЗАИМОДЕЙСТВИЕ MPI & CUDA
▸Две возможные схемы
взаимодействия MPI & CUDA:
10
▸Использовать ядра
мультипроцессоров в GPU в
качестве узлов MPI
▸Узлами являются только CPU
или процессы, которые
работают с GPU
РАССМОТРИМ КЛАСТЕР
▸3 узла
▸Каждый узел имеет CPU и GPU
11
СПОСОБЫ ПЕРЕДАЧИ ДАННЫХ
▸1) Device1 -> Host1 -> Host2 -> Device2
(MPI+CUDA)
▸2) Device1-> Device2 (CUDA-Aware MPI)
12
▸Единое пространство виртуальных
адресов, начиная с CUDA 4.0 на
устройствах с Compute Capability 2.0
КАК ЭТОГО ДОБИТЬСЯ? 13
CUDA-AWARE MPI VS MPI+CUDA
14
▸Упрощение исходного кода
▸Оптимизация передачи данных
внутри сети
ПРИНЦИП ПЕРЕДАЧИ ДАННЫХ
HOST -> DEVICE
▸Pageable memory
▸Pinned memory
▸Device memory
15
ВВЕДЕМ ОБОЗНАЧЕНИЯ
▸ Память на GPU
▸ Страничная память
▸ Физическая память
▸ Физическая память
▸ DMA transfer over the PCI
▸ Обычное копирование
▸ RDMA network transfer
16
ПРИНЦИП ПЕРЕДАЧИ ДАННЫХ
МЕЖДУ УЗЛАМИ (СХЕМА)
17
▸ Организация передачи сообщений в сети
ПРИНЦИП ПЕРЕДАЧИ ДАННЫХ МЕЖДУ
УЗЛАМИ (ВЕКТОРИЗАЦИЯ)
18
▸Лишнее копирование в
страничную память на хосте
▸Реализация CUDA-Aware MPI
исключает лишнее копирование
19ПРИНЦИП ПЕРЕДАЧИ ДАННЫХ МЕЖДУ УЗЛАМИ
(CUDA-AWARE MPI)
20
▸Полная векторизация процесса
передачи данных
ПРИНЦИП ПЕРЕДАЧИ ДАННЫХ МЕЖДУ УЗЛАМИ
(CUDA-AWARE MPI)(ВЕКТОРИЗАЦИЯ)
GPUDIRECT SHARED ACCESS
21
▸Исключение всех копирований на
хосте
GPUDIRECT P2P & RDMA 22
23
▸Самый быстрый способ передачи данных
▸Zero-copy — CPU не участвует в передаче
данных
GPUDIRECT P2P & RDMA
СРАВНЕНИЕ РАБОТЫ ПРИ РАЗНЫХ
СХЕМАХ ПЕРЕДАЧИ ДАННЫХ
24
▸Вывод: лучше использовать CUDA-
Aware MPI, нежели просто MPI+CUDA
ПРИМЕР
▸Дан массив данных из N элементов
▸Необходимо посчитать
аппроксимацию производной M-го
порядка в каждой точке
▸Массив очень большой, в одну GPU
не влезает
25
АРХИТЕКТУРА ПРОГРАММЫ
▸Разбиваем массив на несколько
участков (сколько у нас есть GPU)
▸Вычисляем на GPU свой участок
▸Передаем нужные данные между
GPU с помощью CUDA-Aware MPI
ДИАГРАММА 27
28
MAIN
DATA_SERVER 29
COMPUTE_PROCESS 30

More Related Content

What's hot (20)

PDF
Использование Time-Stamp Counter для измерения времени выполнения кода на пр...
Mikhail Kurnosov
 
PDF
Лекция 3. Оптимизация доступа к памяти (Memory access optimization, cache opt...
Mikhail Kurnosov
 
PDF
Лекция 1. Основные понятия стандарта MPI. Дифференцированные обмены
Alexey Paznikov
 
PDF
Архитектура и программирование потоковых многоядерных процессоров для научных...
a15464321646213
 
PDF
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...
Mikhail Kurnosov
 
PDF
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
Mikhail Kurnosov
 
ODP
Константин Осипов (Mail.Ru)
Ontico
 
PDF
Hacking PostgreSQL. Локальная память процессов. Контексты памяти.
Anastasia Lubennikova
 
PDF
Расширения для PostgreSQL
Anastasia Lubennikova
 
PDF
Семинар 10. Параллельное программирование на MPI (часть 3)
Mikhail Kurnosov
 
PDF
Семинар 5. Многопоточное программирование на OpenMP (часть 5)
Mikhail Kurnosov
 
PDF
pgday17. How shared memory works in modern PostgreSQL
Dmitry Kremer
 
PDF
Aleksei Milovidov "Let's optimize one aggregate function in ClickHouse"
Fwdays
 
PDF
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Yandex
 
PDF
Hacking PostgreSQL. Разделяемая память и блокировки.
Anastasia Lubennikova
 
PDF
Call of Postgres: Advanced Operations (part 2)
Alexey Lesovsky
 
PDF
Лекция 4. Векторизация кода (Code vectorization: SSE, AVX)
Mikhail Kurnosov
 
PDF
Лекция 4: Оптимизация доступа к памяти (Memory access optimization, caches)
Mikhail Kurnosov
 
PPTX
Чем заняться вечером, если я знаю сколько будет ++i + ++i / Андрей Бородин (Y...
Ontico
 
Использование Time-Stamp Counter для измерения времени выполнения кода на пр...
Mikhail Kurnosov
 
Лекция 3. Оптимизация доступа к памяти (Memory access optimization, cache opt...
Mikhail Kurnosov
 
Лекция 1. Основные понятия стандарта MPI. Дифференцированные обмены
Alexey Paznikov
 
Архитектура и программирование потоковых многоядерных процессоров для научных...
a15464321646213
 
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...
Mikhail Kurnosov
 
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
Mikhail Kurnosov
 
Константин Осипов (Mail.Ru)
Ontico
 
Hacking PostgreSQL. Локальная память процессов. Контексты памяти.
Anastasia Lubennikova
 
Расширения для PostgreSQL
Anastasia Lubennikova
 
Семинар 10. Параллельное программирование на MPI (часть 3)
Mikhail Kurnosov
 
Семинар 5. Многопоточное программирование на OpenMP (часть 5)
Mikhail Kurnosov
 
pgday17. How shared memory works in modern PostgreSQL
Dmitry Kremer
 
Aleksei Milovidov "Let's optimize one aggregate function in ClickHouse"
Fwdays
 
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Yandex
 
Hacking PostgreSQL. Разделяемая память и блокировки.
Anastasia Lubennikova
 
Call of Postgres: Advanced Operations (part 2)
Alexey Lesovsky
 
Лекция 4. Векторизация кода (Code vectorization: SSE, AVX)
Mikhail Kurnosov
 
Лекция 4: Оптимизация доступа к памяти (Memory access optimization, caches)
Mikhail Kurnosov
 
Чем заняться вечером, если я знаю сколько будет ++i + ++i / Андрей Бородин (Y...
Ontico
 

Viewers also liked (20)

PDF
MPI and Distributed Applications
Marcos Gonzalez
 
PDF
Porting an MPI application to hybrid MPI+OpenMP with Reveal tool on Shaheen II
George Markomanolis
 
PDF
Open MPI State of the Union X SC'16 BOF
Jeff Squyres
 
PDF
EuroMPI 2016 Keynote: How Can MPI Fit Into Today's Big Computing
Jonathan Dursi
 
PPTX
MPI Raspberry pi 3 cluster
Arafat Hussain
 
PDF
Ejclase mpi
Fernanda Escobar
 
PPTX
MPI message passing interface
Mohit Raghuvanshi
 
PDF
FDA Focus on Design Controls
April Bright
 
PPTX
Parallel K means clustering using CUDA
prithan
 
PPTX
Applying of the NVIDIA CUDA to the video processing in the task of the roundw...
Ural-PDC
 
PPTX
Schulung: Einführung in das GPU-Computing mit NVIDIA CUDA
Jörn Dinkla
 
PDF
GPU, CUDA, OpenCL and OpenACC for Parallel Applications
Marcos Gonzalez
 
PPTX
Acceleration of Statistical Detection of Zero-day Malware in the Memory Dump ...
Igor Korkin
 
PDF
PL/CUDA - Fusion of HPC Grade Power with In-Database Analytics
Kohei KaiGai
 
PDF
Implementazione di un vincolo table su un CSP solver GPU-based
Tommaso Campari
 
PDF
PL/CUDA - GPU Accelerated In-Database Analytics
Kohei KaiGai
 
PDF
Parallel Implementation of K Means Clustering on CUDA
prithan
 
PDF
ICISA 2010 Conference Presentation
Gonçalo Amador
 
PPTX
GPGPU programming with CUDA
Savith Satheesh
 
DOC
documents of blue gene/L
msramakrishna
 
MPI and Distributed Applications
Marcos Gonzalez
 
Porting an MPI application to hybrid MPI+OpenMP with Reveal tool on Shaheen II
George Markomanolis
 
Open MPI State of the Union X SC'16 BOF
Jeff Squyres
 
EuroMPI 2016 Keynote: How Can MPI Fit Into Today's Big Computing
Jonathan Dursi
 
MPI Raspberry pi 3 cluster
Arafat Hussain
 
Ejclase mpi
Fernanda Escobar
 
MPI message passing interface
Mohit Raghuvanshi
 
FDA Focus on Design Controls
April Bright
 
Parallel K means clustering using CUDA
prithan
 
Applying of the NVIDIA CUDA to the video processing in the task of the roundw...
Ural-PDC
 
Schulung: Einführung in das GPU-Computing mit NVIDIA CUDA
Jörn Dinkla
 
GPU, CUDA, OpenCL and OpenACC for Parallel Applications
Marcos Gonzalez
 
Acceleration of Statistical Detection of Zero-day Malware in the Memory Dump ...
Igor Korkin
 
PL/CUDA - Fusion of HPC Grade Power with In-Database Analytics
Kohei KaiGai
 
Implementazione di un vincolo table su un CSP solver GPU-based
Tommaso Campari
 
PL/CUDA - GPU Accelerated In-Database Analytics
Kohei KaiGai
 
Parallel Implementation of K Means Clustering on CUDA
prithan
 
ICISA 2010 Conference Presentation
Gonçalo Amador
 
GPGPU programming with CUDA
Savith Satheesh
 
documents of blue gene/L
msramakrishna
 
Ad

Similar to CUDA-Aware MPI (15)

PDF
Антон Качалов - Популярно об IPMI и UEFI
Yandex
 
PDF
Контейнеры в OpenStack: простое решение сложных проблем
Yandex
 
PDF
Контейнеры в OpenStack: простое решение сложных проблем
OpenVZ
 
PDF
От Make к Ansible
Ivan Grishaev
 
PDF
Стандарт MPI (Message Passing Interface)
Mikhail Kurnosov
 
PDF
Марина Широчкина "Производительность клиентсайда через тестирование скорости ...
Yandex
 
PDF
Sama5d3: how to run linux on it
Pavel Kurochkin
 
PDF
Уроки нагрузочного тестирования Naumen Contact Center, Андрей Хитрин, Naumen
it-people
 
PDF
High Load 2009 Imdg Presentation
HighLoad2009
 
PPT
Магистрально модульный принцип построения пк
Andrey Dolinin
 
PDF
Hunting for a C++ package manager
corehard_by
 
PDF
Максим Салов - Отладочный монитор
Minsk Linux User Group
 
PDF
Методики и инструменты для самостоятельного решения проблем в сети
Cisco Russia
 
PDF
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...
DrupalCamp MSK
 
PDF
библиотеки с поддержкой Gpu
Anatoliy Sviridenkov
 
Антон Качалов - Популярно об IPMI и UEFI
Yandex
 
Контейнеры в OpenStack: простое решение сложных проблем
Yandex
 
Контейнеры в OpenStack: простое решение сложных проблем
OpenVZ
 
От Make к Ansible
Ivan Grishaev
 
Стандарт MPI (Message Passing Interface)
Mikhail Kurnosov
 
Марина Широчкина "Производительность клиентсайда через тестирование скорости ...
Yandex
 
Sama5d3: how to run linux on it
Pavel Kurochkin
 
Уроки нагрузочного тестирования Naumen Contact Center, Андрей Хитрин, Naumen
it-people
 
High Load 2009 Imdg Presentation
HighLoad2009
 
Магистрально модульный принцип построения пк
Andrey Dolinin
 
Hunting for a C++ package manager
corehard_by
 
Максим Салов - Отладочный монитор
Minsk Linux User Group
 
Методики и инструменты для самостоятельного решения проблем в сети
Cisco Russia
 
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...
DrupalCamp MSK
 
библиотеки с поддержкой Gpu
Anatoliy Sviridenkov
 
Ad

CUDA-Aware MPI