2015-02-13 6 views
0

Можем ли мы улучшить производительность, вычислив некоторые части блоков CPU parfor или spmd с использованием gpuArray функций GPU? Является ли это рациональным способом повышения производительности или существуют ограничения в этой процедуре? Я где-то читал, что мы можем использовать эту процедуру, когда у нас есть некоторые единицы графического процессора. Это единственный способ, которым мы можем использовать вычисления на GPU, кроме параллельных циклов процессора?Как Matlab реализует вычисления графического процессора в параллельных петлях процессора?

+0

Вы можете просто попробовать его, а затем посмотреть, работает ли он или нет? – Trilarion

+0

Да. Но я хочу знать, что делает MATLAB под капотом. – user2991243

+0

Но вы не спрашиваете, что делает Matlab под капотом. Возникает вопрос: «Как Matlab реализует вычисления GPU в параллельных циклах процессора?»? – Trilarion

ответ

1

Вполне возможно, что с помощью gpuArray в parfor цикла или spmd блока может дать вам выигрыш в производительности, но на самом деле это зависит от нескольких факторов:

  1. Сколько графических процессоров вы имеете в вашей системе
  2. Что (некоторые из них лучше других при работе с «превышенными подписками»), т. е. когда есть несколько процессов с использованием одного и того же графического процессора)
  3. Сколько рабочих вы используете
  4. Сколько GP U памяти, необходимой для вашего алографирования
  5. Насколько хорошо подходит проблема для GPU в первую очередь.

Итак, если у вас в вашей машине было два мощных GPU, и у вас было два рабочих в параллельном пуле, что могло бы привести к тому, что один GPU полностью занят - вы ожидаете хорошего ускорения. Вы можете получить приличное ускорение, если вы запустили 4 рабочих.

Одна вещь, которую я рекомендовал бы: если это возможно, попытаться избежать передачи gpuArray данных от клиента к работникам, как это происходит медленнее, чем обычные передачи данных (gpuArray является первым gather ред к CPU, а затем восстанавливали на рабочий).

+0

Спасибо за ответ. Итак, как вы сказали, это уместно, когда у нас есть более одного блока графического процессора. Это правда? – user2991243

+1

Да, это так. Каждый рабочий может использовать другой графический процессор. – Edric