2015-06-06 4 views
1

Я достиг стадии, когда мои массивы стали массивными, и для вычисления одной функции требуется около 2 дней.Использование графического процессора для параллельных вычислений в Matlab

Я работаю с обработкой изображений и использованием kmeans и gmm - fitgmdist.

У меня есть рабочая станция с графическим процессором Nvidia Tesla, которые находятся в поддерживаемом списке, и я бы хотел использовать их вычислительную мощность, чтобы ускорить мою работу.

Заглянув в документацию, я понимаю, что для использования функций графического процессора все, что мне нужно сделать, это передать массив, который передается в функции на GPU первым. то есть

model_feats = get_feats(all_imges); 
kmeans = kmeans(model_feats, gaussians, 'EmptyAction','singleton', 'MaxIter',1000); 
gmm{i} = fitgmdist(model_feats, 128, 'Options',statset('MaxIter',1000), ... 
      'CovType','diagonal', 'SharedCov',false, 'Regularize',0.01, 'Start',cInd); 

Все мое время обработки занято этими двумя функциями. Итак, если я использую ядра GPU, все, что мне нужно сделать, это использовать функцию gpuArray? Например, вышеизложенное станет следующим:

temp_feats = get_feats(all_imges); 
model_feats = gpuArray(temp_feats); 

kmeans = kmeans(model_feats, gaussians, 'EmptyAction','singleton', 'MaxIter',1000); 
gmm{i} = fitgmdist(model_feats, 128, 'Options',statset('MaxIter',1000), ... 
      'CovType','diagonal', 'SharedCov',false, 'Regularize',0.01, 'Start',cInd); 

Будет ли это работать? Будет ли он работать для любой функции, сначала передав массив на gpuArray?

P.S. Извините, я должен спросить здесь, а не просто попробовать, но у меня нет , у меня нет доступа к рабочей станции, но я могу запросить доступ к нему . Прежде чем я запрошу доступ к нему, я хочу убедиться, что мой сценарий будет работать с gpuArray.

ответ

3

К сожалению, вкратце ответ на ваш вопрос: Нет, это не сработает.

Поддержка графического адаптера Matlab почти частично. Поддерживаемые в настоящее время функции, которые принимают входы gpuArray, приведены в: http://de.mathworks.com/help/distcomp/run-built-in-functions-on-a-gpu.html

Итак, в моем понимании, так как kmeans нет в списке, он не должен работать. Кто-то, пожалуйста, поправьте меня, если я ошибаюсь.

Но, с другой стороны, если вы выполняете поиск в Google, вы можете увидеть сторонние реализации matlab для kmeans на графических процессорах. Поскольку я не могу предоставить получателю качество кода, я бы не опубликовал ссылку.

Удачи вам!

Смежные вопросы