Вычисления на gpu с помощью matlab.pdf

Upload: anonymous-ox5bkeiada

Post on 07-Jul-2018

266 views

Category:

Documents


0 download

TRANSCRIPT

  • 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/