737.68K
Category: programmingprogramming

Особенности программирования на GPU

1.

ОСОБЕННОСТИ ПРОГРАММИРОВАНИЯ НА GPU

2.

ЗАЧЕМ ЧТО -ТО СЧИТАТЬ НА GPU?
Performance, GFlops
16 310
12 150
9 526
GPU
CPU
6 691
5 600
4 700
2 289
1 244
256
2010
2011
2012
640
768
1 152
1 200
2013
2014
2015
2016
1 250
2017
2 100
2018
На графике изображены рост флопсов с течением времени для процессоров и
для видеокарт.

3.

АРХИТЕКТУРА GPU И ЕЕ СРАВНЕНИЕ С CPU
Fetch/Decode
Register
Fetch/Decode
Register
Register
ALU (Execute)
Branch
predictor
Out-of-order
control logic
Memory
pre-fetcher
Data cache
Execution context
CPU Core
ALU ALU ALU ALU
ALU ALU ALU ALU
Execution context
GPU Core

4.

ОГРАНИЧЕНИЯ И ВОЗМОЖНОСТИ ПРИ РАБОТЕ С
Ограничения на выполняемые алгоритмы при работе с GPU:
• Если мы выполняем расчет на GPU, то не можем выделить
только одно ядро, выделен будет целый блок ядер.
• Все ядра выполняют одни и те же инструкции, но с разными
данными, такие вычисления называются Single-InstructionMultiple-Data или SIMD.
• Из-за относительно простого набора логических блоков и
общих регистров, GPU очень не любит ветвлений.
Возможности:
• Ускорение SIMD-вычислений

5.

ПРИВЕДЕНИЕ КЛАССИЧЕСКИХ АЛГОРИТМОВ
К SIMD -ПРЕДСТАВЛЕНИЮ

6.

РЕЗУЛЬТАТЫ ВЫПОЛНЕНИЯ АЛГОРИТМОВ НА GPU
Latency, ms
413,1
112,8
41,3
4,1
1,7
8 MB
12,1
800 MB
80 MB
GPU Time
CPU Time
Время выполнения агрегации на GPU и CPU в мс
•4992 CUDA ядра
•24 GB памяти
•480 Gb/s — пропускная способность памяти

7.

ОВЕРХЕД НА ПЕРЕСЫЛКУ ДАННЫХ
Memory
bandwidth,
или
пропускная
способность
памяти,
определяет
теоретическую
пропускную
способность карты
HtoD — передаем данные на
видеокарту
GPU Execution — сортировка
на видеокарте
DtoH — копирование данных
из видеокарты в оперативную
память
Latency, ms
1,5
0,9
0,9
0,4
0,2
0,2
0,1
0,1
0,018
8B
HtoD Time
0,2
0,2
0,018
800 B
0,02
8 KB
GPU Execution
0,233
0,039
80 KB
800 KB
DtoH
Тест видеокарты Tesla k80 в облаке Amazon

8.

МНОГОПОТОЧНОСТЬ
120
avg GPU
100
Latency, ms
avg CPU4
80
avg CPU32
60
40
20
1
3
5
7
9
11
13
15
17
19
21 23 25 27 29 31 33 35 39 41 43 45 47 49 51 53 55 57 59 61 63
Threads Count
Время выполнения математических расчетов на GPU и CPU c матрицами
размером 1000 x 60 в мс

9.

МНОГОПОТОЧНОСТЬ
Latency, ms
10
9
avg GPU
8
avg CPU4
7
avg CPU32
6
5
4
3
2
1
1
3
5
7
9
11
13
15
17
19
21 23 25 27 29 31 33 35 39 41 43 45 47 49 51 53 55 57 59 61 63
Threads Count
Время выполнения математических расчетов на GPU и CPU c матрицами 10 000 x 60 в
мс

10.

РЕКОМЕНДАЦИИ
Если вы размышляете об использовании GPU в
своих проектах, то GPU, скорее всего, вам подойдет
если:
• Вашу задачу можно привести к SIMD-виду
• Есть возможность загрузить большую часть
данных на карту до вычислений (закешировать)
• Задача подразумевает интенсивные вычисления
Заранее также стоит задаться вопросами:
• Сколько будет параллельных запросов
• На какое latency вы рассчитываете
• Достаточно ли вам одной карты для вашей
нагрузки, нужен сервер с несколькими картами
или кластер GPU-серверов
English     Русский Rules