Можем ли мы улучшить производительность, вычислив некоторые части блоков CPU parfor
или spmd
с использованием gpuArray
функций GPU? Является ли это рациональным способом повышения производительности или существуют ограничения в этой процедуре? Я где-то читал, что мы можем использовать эту процедуру, когда у нас есть некоторые единицы графического процессора. Это единственный способ, которым мы можем использовать вычисления на GPU, кроме параллельных циклов процессора?Как Matlab реализует вычисления графического процессора в параллельных петлях процессора?
ответ
Вполне возможно, что с помощью gpuArray
в parfor
цикла или spmd
блока может дать вам выигрыш в производительности, но на самом деле это зависит от нескольких факторов:
- Сколько графических процессоров вы имеете в вашей системе
- Что (некоторые из них лучше других при работе с «превышенными подписками»), т. е. когда есть несколько процессов с использованием одного и того же графического процессора)
- Сколько рабочих вы используете
- Сколько GP U памяти, необходимой для вашего алографирования
- Насколько хорошо подходит проблема для GPU в первую очередь.
Итак, если у вас в вашей машине было два мощных GPU, и у вас было два рабочих в параллельном пуле, что могло бы привести к тому, что один GPU полностью занят - вы ожидаете хорошего ускорения. Вы можете получить приличное ускорение, если вы запустили 4 рабочих.
Одна вещь, которую я рекомендовал бы: если это возможно, попытаться избежать передачи gpuArray
данных от клиента к работникам, как это происходит медленнее, чем обычные передачи данных (gpuArray
является первым gather
ред к CPU, а затем восстанавливали на рабочий).
Спасибо за ответ. Итак, как вы сказали, это уместно, когда у нас есть более одного блока графического процессора. Это правда? – user2991243
Да, это так. Каждый рабочий может использовать другой графический процессор. – Edric
Вы можете просто попробовать его, а затем посмотреть, работает ли он или нет? – Trilarion
Да. Но я хочу знать, что делает MATLAB под капотом. – user2991243
Но вы не спрашиваете, что делает Matlab под капотом. Возникает вопрос: «Как Matlab реализует вычисления GPU в параллельных циклах процессора?»? – Trilarion