Преимущества распараллеливания на CPU и GPU в MATLAB

advertisement
Преимущества
распараллеливания на CPU и GPU
в MATLAB
Михаил Шпак
Инженер MathWorks
1
Доступные высокопроизводительные
устройства
Один
Много
процессор ядер
Много
процессоров
Кластер
Грид,
Облако
Графический процессор
2
Parallel Computing Toolbox

Parallel
Computing
Toolbox



Легко попробовать параллелизм
на многоядерных компьютерах
Быстро разрабатывать
параллельный приложения на
локальном компьютере
Воспользоваться всеми
преимуществами настольного
ПК
Отдельный расчетный кластер
не требуется
3
Масштабирование на кластер без изменения
кода
Computer Cluster
Parallel
Computing
Toolbox
MATLAB Distributed Computing Server
CPU
Worker
CPU
Worker
rd Party
3
Scheduler
Scheduler
CPU
Worker
CPU
Worker
4
Создание параллельных приложений
Уровень контроля
Требуемые усилия
Минимальный
Никаких
усилий
Средний
Обширный
Средние
Значительные
Поддержка встроена в
тулбоксы
Высокоуровневые
конструкции:
(напр. parfor, batch,
distributed)
Низкоуровневые
конструкции:
(напр. Jobs/Tasks, MPI-based)
5
Расширения MATLAB и Simulink со встроенной
поддержкой для параллельных вычислений











Optimization Toolbox
Global Optimization Toolbox
Statistics Toolbox
Bioinformatics Toolbox
Neural Network Toolbox
Communications System Toolbox
Model-Based Calibration Toolbox
Simulink
Simulink Design Optimization
Simulink Code \ Embedded Coder
И многие другие…
Worker
Worker
TOOLBOXES
Worker
Worker
Worker
BLOCKSETS
Worker
Worker
6
Механизм цикла parfor
1 2
1 23 34 4 55 66 7 88 9 910 10
Worker
a(i) = i;
a = zeros(10, 1)
parfor i = 1:10
a(i) = i;
end
a
Worker
a(i) = i;
Worker
a(i) = i;
Worker
a(i) = i;
Объединение MATLAB Workers
7
Использование планировщика
Задача
Worker
Результат
Задача
Worker
Результат
Задание
TOOLBOXES
Задача
Результаты
Планировщик
BLOCKSETS
Результат
Worker
Задача
Результат
Worker
8
Распараллеливание позволяет
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
9
Возможности увеличения
производительности
Использование больше ядер (CPUs)
Core 1
Core 2
Core 3
Core 4
Использование GPUs
Device Memory
Cache
10
Поддержка GPU в Parallel Computing
Toolbox

NVIDIA GPUs с вычислительной
способностью 1.3 или выше
– включая Tesla 10-серий
и 20-серий
(напр., NVIDIA Tesla C2075 GPU:
448 процессоров, 6 Гб памяти)
– http://www.nvidia.com/object/cuda_gpus.html

Почему требуется вычислительная способность 1.3
– Поддерживает doubles (базовый тип данных в MATLAB)
– Операции соответствуют стандарту IEEE
– Поддержка кроссплатформенности
11
Использование интерфейса GPU
array со встроенными функциями
MATLAB
Запуск пользовательских функций
над элементами GPU array
Больше контроля
Проще в использовании
Возможности при использовании GPUs
Создание ядер из существующего
кода CUDA и PTX файлов
12
Пример использования:
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
13
Тест: решение 2D волнового уравнения
CPU против GPU
Grid Size
CPU
(s)
GPU
(s)
Ускорение
64 x 64
0.1004
0.3553
0.28
128 x 128
0.1931
0.3368
0.57
256 x 256
0.5888
0.4217
1.4
512 x 512
2.8163
0.8243
3.4
1024 x 1024
13.4797
2.4979
5.4
2048 x 2048
74.9904
9.9567
7.5
Intel Xeon Processor X5650, NVIDIA Tesla C2050 GPU
14
Масштабирование на несколько GPU
Worker
Worker
Worker
TOOLBOXES
BLOCKSETS
Worker
Worker
Worker
Worker
Worker
15
Работа с несколькими GPU
Single GPU
N = 1000;
% Number of iterations
A = gpuArray(A); % transfer data to GPU
for ix = 1:M
% Do the GPU-based calculation
X = myGPUFunction(ix,A);
% Gather data
Xtotal(ix,:)= gather(X);
end
Multiple GPUs
N = 1000;
% Number of iterations
spmd
% Assign each worker a different GPU
gpuDevice(labindex);
A = gpuArray(A); % transfer data
end
parfor ix = 1:M
% Do the GPU-based calculation
X = myGPUFunction(ix,A);
% Gather data
Xtotal(ix,:)= gather(X);
end
http://blogs.mathworks.com/loren/2013/06/24/running-monte-carlo-simulations-on-multiple-gpus/
16
Контактная информация
Web: www.matlab.ru
E-mail:
matlab@sl-matlab.ru
W: www.matlab.ru
Тел.: +7 (495) 232 00 23 доб. 0609
E : matlab@sl-matlab.ru
Т : +7 (495) 232 00 23 доб. 0609
Дополнительная информация: www.mathworks.com
17
Download