Вычисления на gpu с...

26
1 Вычисления на GPU с помощью MATLAB Денис Жегалин Технический маркетинг Департамент MathWorks, SoftLine

Upload: others

Post on 03-Jul-2020

13 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Вычисления на GPU с помощьюparallel.uran.ru/sites/default/files/Вычисления на GPU с помощью... · Cloud GPU Эволюция вычислительных

1

Вычисления на GPU с помощью

MATLAB

Денис Жегалин

Технический маркетинг

Департамент MathWorks, SoftLine

Page 2: Вычисления на GPU с помощьюparallel.uran.ru/sites/default/files/Вычисления на GPU с помощью... · Cloud GPU Эволюция вычислительных

2

Data Analysis Tasks

Reporting and

Documentation

Outputs for Design

Deployment

Share

Explore & Discover

Data Analysis

& Modeling

Algorithm

Development

Application

Development

Files

Software

Hardware

Access

Code & Applications

Automate

Page 3: Вычисления на GPU с помощьюparallel.uran.ru/sites/default/files/Вычисления на GPU с помощью... · Cloud GPU Эволюция вычислительных

3

NEWS

MathWorks предоставляет поддержку

GPU в MATLAB

Портирование алгоритмов на графический

процессор NVIDIA

Ускорение вычислений на GPU кластерах

(локальных и распределенных) с помощью

специальных инструментов для

распараллеливания.

Page 4: Вычисления на GPU с помощьюparallel.uran.ru/sites/default/files/Вычисления на GPU с помощью... · Cloud GPU Эволюция вычислительных

4

Спектрограмма показывает 50ти кратное

увеличение скорости вычислений на GPU

кластере

50x

Page 5: Вычисления на GPU с помощьюparallel.uran.ru/sites/default/files/Вычисления на GPU с помощью... · Cloud GPU Эволюция вычислительных

5

Desktop Computer

Parallel Computing Toolbox™

Computer Cluster

MATLAB Distributed Computing Server™

Планировщик

Параллельные вычисления в MATLAB Инструменты и терминология

Page 6: Вычисления на GPU с помощьюparallel.uran.ru/sites/default/files/Вычисления на GPU с помощью... · Cloud GPU Эволюция вычислительных

6

Worker Worker

Worker

Worker

Worker Worker

Worker

Worker TOOLBOXES

BLOCKSETS

MATLAB: Дополнительные работники

Page 7: Вычисления на GPU с помощьюparallel.uran.ru/sites/default/files/Вычисления на GPU с помощью... · Cloud GPU Эволюция вычислительных

7

Parallel Computing позволяет

инженерам …

Larger Compute Pool Larger Memory Pool

11 26 41

12 27 42

13 28 43

14 29 44

15 30 45

16 31 46

17 32 47

17 33 48

19 34 49

20 35 50

21 36 51

22 37 52

Увеличить скорость вычислений Работать с большими объемами данных

Page 8: Вычисления на GPU с помощьюparallel.uran.ru/sites/default/files/Вычисления на GPU с помощью... · Cloud GPU Эволюция вычислительных

8

Возможности

Встроенная поддержка для

расширений MATLAB

Поддержка высокоуровневых

программных конструкций:

parfor, distributed arrays, batch

Низкоуровневый контроль

вычислений:

Jobs/Tasks, spmd, MPI-interface

Пр

осто

та

ис

по

ль

зо

ва

ни

я

Ко

нтр

ол

ь н

ад

пр

оц

ес

со

м

Page 9: Вычисления на GPU с помощьюparallel.uran.ru/sites/default/files/Вычисления на GPU с помощью... · Cloud GPU Эволюция вычислительных

9

Single

processor

Multicore Multiprocessor Cluster

Grid,

Cloud

GPU

Эволюция вычислительных

комплексов

Page 10: Вычисления на GPU с помощьюparallel.uran.ru/sites/default/files/Вычисления на GPU с помощью... · Cloud GPU Эволюция вычислительных

10

Развитие параллельных вычислений в

MATLAB 2005 2006 2007 2008 2009 2010

v1.0 Distributed jobs

Dynamic licensing

На уровне задач

v3.0 Distributed arrays

Parallel math

Упрощение алгоритмов

v2.0 MPI functions

3rd party schedulers

На уровне данных

R2007a Local Workers

Упрощение настройки

оборудования R2008a

Parallel for-loop

Optimization Toolbox

Параллельные вычисления для ВСЕХ

R2008b Compilation

spmd support Возможность создания приложений с

распараллеливанием

R2009b Distributed arrays

Parallelism in toolboxes

Минимальные усилия по

распараллеливанию

GPU Beta

R2010b GPU arrays

GPU math

Использование

GPU

Page 11: Вычисления на GPU с помощьюparallel.uran.ru/sites/default/files/Вычисления на GPU с помощью... · Cloud GPU Эволюция вычислительных

11

Что такое GPU ?

Массив вычислителей

– Сотни ядер на одном графическом

процессоре

– Ядра GPU дополняют ядра CPU

Выделенная высокоскоростная

память

* Parallel Computing Toolbox требует NVIDIA GPU с вычислительной способностью 1.3 ивыше,

включая NVIDIA Tesla 10-серий и 20-серий.

Page 12: Вычисления на GPU с помощьюparallel.uran.ru/sites/default/files/Вычисления на GPU с помощью... · Cloud GPU Эволюция вычислительных

12

История развития GPU

3D Gaming & CAD Scientific Computing

Page 13: Вычисления на GPU с помощьюparallel.uran.ru/sites/default/files/Вычисления на GPU с помощью... · Cloud GPU Эволюция вычислительных

13

Динамика

жидкостей

Вычислительные

финансы

Моделирование

погодных

условий

Решение задачи

N тел

Молекулярное

моделирование

Цифровая

обработка

сигналов

Области применения GPU

Список задач из CUDA Community Showcase:

http://www.nvidia.com/object/cuda_showcase_html.html

Page 14: Вычисления на GPU с помощьюparallel.uran.ru/sites/default/files/Вычисления на GPU с помощью... · Cloud GPU Эволюция вычислительных

14

Почему GPU и почему сейчас?

Вычисления

– С двойной и одинарной точностью (single/double)

Операции соответствуют стандартам IEEE

Кроссплатформенность

Page 15: Вычисления на GPU с помощьюparallel.uran.ru/sites/default/files/Вычисления на GPU с помощью... · Cloud GPU Эволюция вычислительных

15

Расчеты на GPU с помощью MATLAB

1) Использование GPU массивов

и встроенных функций

MATLAB

2) Разработка собственных

алгоритмов на GPU

3) Создание CUDA ядер на базе

написанного С кода

На одном или нескольких GPU:

Пр

осто

та

ис

по

ль

зо

ва

ни

я

Бо

ль

ши

й к

он

тр

ол

ь н

ад

пр

оц

ес

со

м

Page 16: Вычисления на GPU с помощьюparallel.uran.ru/sites/default/files/Вычисления на GPU с помощью... · Cloud GPU Эволюция вычислительных

17

Пример использования:

GPU массив:

>> A = someArray(1000, 1000);

>> G = gpuArray(A); % Push to GPU memory

>> F = fft(G);

>> x = G\b;

>> z = gather(x); % Bring back into MATLAB

Page 17: Вычисления на GPU с помощьюparallel.uran.ru/sites/default/files/Вычисления на GPU с помощью... · Cloud GPU Эволюция вычислительных

18

+100 функций, поддерживающих GPU

массивы

fft, fft2, ifft, ifft2

Умножение матриц (A*B)

Левое деление матриц (A\b)

LU разложение

‘ .’

abs, acos, …, minus, …, plus, …,

sin, …

Page 18: Вычисления на GPU с помощьюparallel.uran.ru/sites/default/files/Вычисления на GPU с помощью... · Cloud GPU Эволюция вычислительных

19

Демонстрация

Page 19: Вычисления на GPU с помощьюparallel.uran.ru/sites/default/files/Вычисления на GPU с помощью... · Cloud GPU Эволюция вычислительных

22

D = data;

iterations = 2000; % # of parallel iterations

stride = iterations*step; %stride of outer loop

M = ceil((numel(x)-W)/stride);%iterations needed

o = cell(M, 1); % preallocate output

for i = 1:M

% What are the start points

thisSP = (i-1)*stride:step: …

(min(numel(x)-W, i*stride)-1);

% Move the data efficiently into a matrix

X = copyAndWindowInput(D, window, thisSP);

% Take lots of fft's down the colmuns

X = abs(fft(X));

% Return only the first part to MATLAB

o{i} = X(1:E, 1:ratio:end);

end

Пример:

CPU:

Page 20: Вычисления на GPU с помощьюparallel.uran.ru/sites/default/files/Вычисления на GPU с помощью... · Cloud GPU Эволюция вычислительных

23

D = data;

iterations = 2000; % # of parallel iterations

stride = iterations*step; %stride of outer loop

M = ceil((numel(x)-W)/stride);%iterations needed

o = cell(M, 1); % preallocate output

for i = 1:M

% What are the start points

thisSP = (i-1)*stride:step: …

(min(numel(x)-W, i*stride)-1);

% Move the data efficiently into a matrix

X = copyAndWindowInput(D, window, thisSP);

% Take lots of fft's down the colmuns

X = abs(fft(X));

% Return only the first part to MATLAB

o{i} = X(1:E, 1:ratio:end);

end

D = gpuArray(data);

iterations = 2000; % # of parallel iterations

stride = iterations*step; %stride of outer loop

M = ceil((numel(x)-W)/stride);%iterations needed

o = cell(M, 1); % preallocate output

for i = 1:M

% What are the start points

thisSP = (i-1)*stride:step: ...

(min(numel(D)-W, i*stride)-1);

% Move the data efficiently into a matrix

X = copyAndWindowInput(D, window, thisSP);

% Take lots of fft's down the colmuns

X = gather(abs(fft(X)));

% Return only the first part to MATLAB

o{i} = X(1:E, 1:ratio:end);

end

Пример:

CPU GPU

Page 21: Вычисления на GPU с помощьюparallel.uran.ru/sites/default/files/Вычисления на GPU с помощью... · Cloud GPU Эволюция вычислительных

24

Worker Worker

Worker

Worker

Worker Worker

Worker

Worker TOOLBOXES

BLOCKSETS

MATLAB: Дополнительные работники

Page 22: Вычисления на GPU с помощьюparallel.uran.ru/sites/default/files/Вычисления на GPU с помощью... · Cloud GPU Эволюция вычислительных

25

D = gpuArray(data);

iterations = 2000; % # of parallel iterations

stride = iterations*step; %stride of outer loop

M = ceil((numel(x)-W)/stride);%iterations needed

o = cell(M, 1); % preallocate output

for i = 1:M

% What are the start points

thisSP = (i-1)*stride:step: ...

(min(numel(D)-W, i*stride)-1);

% Move the data efficiently into a matrix

X = copyAndWindowInput(D, window, thisSP);

% Take lots of fft's down the colmuns

X = gather(abs(fft(X)));

% Return only the first part to MATLAB

o{i} = X(1:E, 1:ratio:end);

end

D = gpuArray(data);

iterations = 2000; % # of parallel iterations

stride = iterations*step; %stride of outer loop

M = ceil((numel(x)-W)/stride);%iterations needed

o = cell(M, 1); % preallocate output

parfor i = 1:M

% What are the start points

thisSP = (i-1)*stride:step: ...

(min(numel(D)-W, i*stride)-1);

% Move the data efficiently into a matrix

X = copyAndWindowInput(D, window, thisSP);

% Take lots of fft's down the colmuns

X = gather(abs(fft(X)));

% Return only the first part to MATLAB

o{i} = X(1:E, 1:ratio:end);

end

Пример:

CPU GPU несколько GPU

Page 23: Вычисления на GPU с помощьюparallel.uran.ru/sites/default/files/Вычисления на GPU с помощью... · Cloud GPU Эволюция вычислительных

26

Тест-Драйв

Page 24: Вычисления на GPU с помощьюparallel.uran.ru/sites/default/files/Вычисления на GPU с помощью... · Cloud GPU Эволюция вычислительных

27

Спектрограмма показывает 50и кратное

увеличение скорости вычислений на GPU

кластере

50x

Page 25: Вычисления на GPU с помощьюparallel.uran.ru/sites/default/files/Вычисления на GPU с помощью... · Cloud GPU Эволюция вычислительных

37

Какое оборудование поддерживается?

GPU NVIDIA соответствующие

спецификации CUDA 1.3

Список оборудования:

http://www.nvidia.com/object/cuda_gpus.html

Page 26: Вычисления на GPU с помощьюparallel.uran.ru/sites/default/files/Вычисления на GPU с помощью... · Cloud GPU Эволюция вычислительных

38

® ®

Контактная информация департамента

Mathworks

Softline: www.sl-matlab.ru

matlab.exponenta.ru

Mathworks: www.mathworks.com

E-mail: [email protected]

Phone: +7 (495) 232 00 23 доб. 0609