Использование технологий NVIDIA для решения задач глубокого обучения

Материал из MachineLearning.

(Различия между версиями)
Перейти к: навигация, поиск
Строка 3: Строка 3:
Ниже приведен обзор методов построения сетей глубокого обучения на графических акселераторах. Решаются задачи машинного обучения: распознавания образов, речи, классификация сигналов. Для решения задач используются программные пакеты Torch, Theano, Caffe, cuDNN, предназначенные для работы с графическими ускорителями NVIDIA. Сравнивается работа ускорителей, Tesla X и [наш], на серверах mvr.jmlda.org и Amazon S3.
Ниже приведен обзор методов построения сетей глубокого обучения на графических акселераторах. Решаются задачи машинного обучения: распознавания образов, речи, классификация сигналов. Для решения задач используются программные пакеты Torch, Theano, Caffe, cuDNN, предназначенные для работы с графическими ускорителями NVIDIA. Сравнивается работа ускорителей, Tesla X и [наш], на серверах mvr.jmlda.org и Amazon S3.
 +
== Matlab Parallel Computing Toolbox ==
 +
 +
=== Запуск функций CUDA в Matlab ===
 +
Parallel Computing Toolbox в Matlab предоставляет фреймворк для вычислений на GPU.
 +
 +
Для того, чтобы разместить структуру данных Matlab (массив или матрицу численного типа) в памяти GPU, используется функция gpuArray(). Вызов этой функции создает объект Matlab в памяти GPU:
 +
<source lang="matlab">
 +
N = 6;
 +
M = magic(N);
 +
G = gpuArray(M);
 +
</source>
 +
 +
Для того, чтобы вернуть массив из памяти GPU в Matlab workspace, используется функция gather():
 +
<source lang="matlab">
 +
G = gpuArray(ones(100,'uint32'));
 +
D = gather(G);
 +
</source>
 +
 +
Для работы со структурами данных gpuArray в Matlab предусмотрено несколько вариантов. Одним из вариантов (наиболее низкоуровневом) является запуск предварительно скомпилированной функции ядра CUDA с расширением .cu. Для запуска функции в Matlab необходимо создать объект CUDAKernel и выполнить следующую последовательность действий:
 +
 +
1. Скомпилировать файл с расширением .ptx для функции ядра myfun.cu с помощью, например, компилятора nvcc в NVIDIA CUDA Toolkit:
 +
<source lang="bash">
 +
nvcc -ptx myfun.cu
 +
</source>
 +
2. Создать объект CUDAKernel с аргументами .ptx, .cu:
 +
<source lang="matlab">
 +
k = parallel.gpu.CUDAKernel('myfun.ptx','myfun.cu');
 +
</source>
 +
3. Присвоить объекту CUDAKernel параметры, необходимые для выполнения на GPU:
 +
<source lang="matlab">
 +
k.GridSize = [8 1];
 +
k.ThreadBlockSize = [16 1];
 +
</source>
 +
4. Вызвать функцию feval для выполнения CUDAKernel:
 +
<source lang="matlab">
 +
g1 = gpuArray(in1); % Input gpuArray.
 +
g2 = gpuArray(in2); % Input gpuArray.
 +
 +
result = feval(k,g1,g2);
 +
</source>
[[Категория:Инструменты и технологии]]
[[Категория:Инструменты и технологии]]

Версия 13:33, 20 апреля 2015

Статья, посвященная использованию графических ускорителей NVIDIA для решения задач глубокого обучения будет размещена в течение мая. Категория: Инструменты и технологии. --Strijov 15:57, 20 апреля 2015 (MSD)


Ниже приведен обзор методов построения сетей глубокого обучения на графических акселераторах. Решаются задачи машинного обучения: распознавания образов, речи, классификация сигналов. Для решения задач используются программные пакеты Torch, Theano, Caffe, cuDNN, предназначенные для работы с графическими ускорителями NVIDIA. Сравнивается работа ускорителей, Tesla X и [наш], на серверах mvr.jmlda.org и Amazon S3.

Matlab Parallel Computing Toolbox

Запуск функций CUDA в Matlab

Parallel Computing Toolbox в Matlab предоставляет фреймворк для вычислений на GPU.

Для того, чтобы разместить структуру данных Matlab (массив или матрицу численного типа) в памяти GPU, используется функция gpuArray(). Вызов этой функции создает объект Matlab в памяти GPU:

N = 6;
M = magic(N);
G = gpuArray(M);

Для того, чтобы вернуть массив из памяти GPU в Matlab workspace, используется функция gather():

G = gpuArray(ones(100,'uint32'));
D = gather(G);

Для работы со структурами данных gpuArray в Matlab предусмотрено несколько вариантов. Одним из вариантов (наиболее низкоуровневом) является запуск предварительно скомпилированной функции ядра CUDA с расширением .cu. Для запуска функции в Matlab необходимо создать объект CUDAKernel и выполнить следующую последовательность действий:

1. Скомпилировать файл с расширением .ptx для функции ядра myfun.cu с помощью, например, компилятора nvcc в NVIDIA CUDA Toolkit:

nvcc -ptx myfun.cu

2. Создать объект CUDAKernel с аргументами .ptx, .cu:

k = parallel.gpu.CUDAKernel('myfun.ptx','myfun.cu');

3. Присвоить объекту CUDAKernel параметры, необходимые для выполнения на GPU:

k.GridSize = [8 1];
k.ThreadBlockSize = [16 1];

4. Вызвать функцию feval для выполнения CUDAKernel:

g1 = gpuArray(in1); % Input gpuArray.
g2 = gpuArray(in2); % Input gpuArray.
 
result = feval(k,g1,g2);
Личные инструменты