Download - Вычисления на GPU с помощью MATLAB.pdf
-
8/18/2019 Вычисления на GPU с помощью MATLAB.pdf
1/26
1
Вычисления на GPU с помощью
MATLAB
Денис Жегалин
Технический маркетинг
Департамент MathWorks, SoftLine
-
8/18/2019 Вычисления на GPU с помощью MATLAB.pdf
2/26
-
8/18/2019 Вычисления на GPU с помощью MATLAB.pdf
3/26
3
NEWS
MathWorks предоставляет поддержку
GPU в MATLAB
Портирование алгоритмов на графический
процессор NVIDIA
Ускорение вычислений на GPU кластерах
(локальных и распределенных) с помощьюспециальных инструментов для
распараллеливания.
-
8/18/2019 Вычисления на GPU с помощью MATLAB.pdf
4/26
4
Спектрограмма показывает 50ти кратное
увеличение скорости вычислений на GPUкластере
50x
-
8/18/2019 Вычисления на GPU с помощью MATLAB.pdf
5/26
5
Desktop Computer
Parallel Computing Toolbox™
Computer Cluster
MATLAB Distributed Computing Server ™
Планировщик
Параллельные вычисления в MATLAB
Инструменты и терминология
-
8/18/2019 Вычисления на GPU с помощью MATLAB.pdf
6/26
6
Worker Worker
Worker
Worker
WorkerWorker
Worker
WorkerTOOLBOXES
BLOCKSETS
MATLAB: Дополнительные работники
-
8/18/2019 Вычисления на GPU с помощью MATLAB.pdf
7/267
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
Увеличить скорость вычислений Работать с большими объемами данных
-
8/18/2019 Вычисления на GPU с помощью MATLAB.pdf
8/268
Возможности
Встроенная поддержка для
расширений MATLAB
Поддержка высокоуровневых
программных конструкций:
parfor, distributed arrays, batch
Низкоуровневый контроль
вычислений:
Jobs/Tasks, spmd, MPI-interface
П р о с т о т а
и с п
о л ь з о в а н и я
К онт р о льн а д
п р о ц е с с ом
-
8/18/2019 Вычисления на GPU с помощью MATLAB.pdf
9/269
Single
processor
Multicore Multiprocessor Cluster
Grid,Cloud
GPU
Эволюция вычислительных
комплексов
-
8/18/2019 Вычисления на GPU с помощью MATLAB.pdf
10/2610
Развитие параллельных вычислений в
MATLAB2005 2006 2007 2008 2009 2010
v1.0
Distr ibuted jobs
Dynamic l icensing
На уровне задач
v3.0
Distr ibuted arrays
Parallel mathУпрощение алгоритмов
v2.0
MPI functio ns
3rd party schedulers
На уровне данных
R2007a
Local Workers
Упрощение настройки
оборудования R2008a
Paral le l fo r- loop
Optimization Toolbo x
Параллельные вычисления для ВСЕХ
R2008b
Compilat ion
spmd supportВозможность создания приложений с распараллеливанием
R2009b
Distr ibuted arrays
Paral le l ism in toolbo xes
Минимальные усилия по
распараллеливанию
GPU Beta
R2010b
GPU arrays
GPU math
ИспользованиеGPU
-
8/18/2019 Вычисления на GPU с помощью MATLAB.pdf
11/2611
Что такое GPU ?
Массив вычислителей
– Сотни ядер на одном графическом
процессоре – Ядра GPU дополняют ядра CPU
Выделенная высокоскоростная
память
* Parallel Computing Toolbox требует NVIDIA GPU с вычислительной способностью 1.3 ивыше,
включая NVIDIA Tesla 10-серий и 20-серий.
-
8/18/2019 Вычисления на GPU с помощью MATLAB.pdf
12/2612
История развития GPU
3D Gaming & CAD Scientific Computing
-
8/18/2019 Вычисления на GPU с помощью MATLAB.pdf
13/2613
Динамика
жидкостей
Вычислительные
финансы
Моделирование
погодных
условий
Решение задачи
N тел
Молекулярное
моделирование
Цифроваяобработка
сигналов
Области применения GPU
Список задач из CUDA Community Showcase:
http://www.nvidia.com/object/cuda_showcase_html.html
-
8/18/2019 Вычисления на GPU с помощью MATLAB.pdf
14/2614
Почему GPU и почему сейчас?
Вычисления
– С двойной и одинарной точностью (single/double)
Операции соответствуют стандартам IEEE
Кроссплатформенность
-
8/18/2019 Вычисления на GPU с помощью MATLAB.pdf
15/2615
Расчеты на GPU с помощью MATLAB
1) Использование GPU массивов
и встроенных функций
MATLAB
2) Разработка собственных
алгоритмов на GPU
3) Создание CUDA ядер на базе
написанного С кода
На одном или нескольких GPU:
П р о с т о т а
и с п
о л ь з о в а н и я
Б о ль
ший к онт р о л
ьн а д
п р о ц е с с ом
-
8/18/2019 Вычисления на GPU с помощью MATLAB.pdf
16/2617
Пример использования:
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
-
8/18/2019 Вычисления на GPU с помощью MATLAB.pdf
17/26
18
+100 функций, поддерживающих GPU
массивы fft, fft2, ifft, ifft2
Умножение матриц (A*B)
Левое деление матриц (A\b) LU разложение
‘ .’
abs, acos, …, minus, …, plus, …,sin, …
-
8/18/2019 Вычисления на GPU с помощью MATLAB.pdf
18/26
19
Демонстрация
-
8/18/2019 Вычисления на GPU с помощью MATLAB.pdf
19/26
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:
-
8/18/2019 Вычисления на GPU с помощью MATLAB.pdf
20/26
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
-
8/18/2019 Вычисления на GPU с помощью MATLAB.pdf
21/26
24
Worker Worker
Worker
Worker
WorkerWorker
Worker
WorkerTOOLBOXES
BLOCKSETS
MATLAB: Дополнительные работники
-
8/18/2019 Вычисления на GPU с помощью MATLAB.pdf
22/26
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
-
8/18/2019 Вычисления на GPU с помощью MATLAB.pdf
23/26
26
Тест- Драйв
-
8/18/2019 Вычисления на GPU с помощью MATLAB.pdf
24/26
27
Спектрограмма показывает 50и кратное
увеличение скорости вычислений на GPU
кластере
50x
-
8/18/2019 Вычисления на GPU с помощью MATLAB.pdf
25/26
37
Какое оборудование поддерживается?
GPU NVIDIA соответствующие
спецификации CUDA 1.3
Список оборудования:http://www.nvidia.com/object/cuda_gpus.html
http://www.nvidia.com/object/cuda_gpus.htmlhttp://www.nvidia.com/object/cuda_gpus.htmlhttp://www.nvidia.com/object/cuda_gpus.htmlhttp://www.nvidia.com/object/cuda_gpus.html
-
8/18/2019 Вычисления на GPU с помощью MATLAB.pdf
26/26
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
http://www.sl-matlab.ru/http://www.matlab.exponenta.ru/http://www.mathworks.com/mailto:[email protected]:[email protected]://www.mathworks.com/http://www.matlab.exponenta.ru/http://www.sl-matlab.ru/http://www.sl-matlab.ru/http://www.sl-matlab.ru/