Использование технологий 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);