2013-08-05 4 views
1

Или как преобразовать циклы Parfor в операции gpuArray?Matlab - высокая параллельность Задачи в процессорах или графических процессорах

Проблема: операция с колонками на большой матрице данных, распределенная между несколькими процессорами (рабочими) через парформу.

data = 1000 x 200 matrix 
[nrows, ncols] = size(data) 
parfor ix = 1:ncols 
    workerData = data(:,ix); 
    colwiseResult(ix) = function(workerData,params); 
end 

Теперь, как можно эффективно использовать графические процессоры? тем более, что проблема должна масштабироваться до 1000х1000 матриц (& больше)

dataGPU = gpuArray(data); 

Но я не найти более легкий способ сделать колонки мудрыми операций на GPU. Такие функции, как arrayfun или bsxfun, управляются поэтапно, а это не то, что вас интересует. Поскольку это тривиально параллельные задачи, использование нескольких процессоров в графических процессорах может быть идеальным (& избегает проблем с parfor и т. Д.)

(Ну, фактически, я выполняю расчет правдоподобия, который выполняет матричную диагонализацию, экспоненты & продуктов прогрессивно над каждой точкой данных на векторе столбца, используя цикл for внутри Рабочих). Проверили, что все эти операторы имеют перегрузку gpu)

ответ

0

Вы смотрите этот урок?

http://www.mathworks.ch/videos/introduction-to-gpu-computing-with-matlab-68770.html

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

parfor ix = 1:10 
gd=gpuDevice; 
end 

В конце дня, используя один GPU не является большим преимуществом. Для получения дополнительной информации, пожалуйста, дайте более подробную информацию о своей рабочей станции.

+0

Благодарим вас, я добавлю дополнительную информацию. –

+0

Вау, это совсем не ответ на тот конкретный вопрос, который я задал с хорошими подробностями. Конечно, я заглянул в Matlab Intros, помощь и т. Д. Это должно быть очевидно даже из информации, которую я представил в вопросе, прочитав об использовании arrayfun, bsxfun в контексте gpuArray. В любом случае, оцените вашу попытку. 2 Teslas c2050 - это рабочие станции. У меня работает кластер из 144 ядер, где я регулярно выполняю параллельные вычисления. Вопрос очень специфичен для моего случая использования и * НЕ * обсуждать в целом, подходят ли GPU или нет. – nahsivar

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