Какой прирост производительности у GPU с matlab? - PullRequest
5 голосов
/ 07 декабря 2011

Я подумываю о том, чтобы попросить моего босса о хорошем GPU для выполнения вычислений с помощью инструментов параллельной обработки matlab. Однако после нескольких простых тестов на компьютере коллеги, на NVidia Quadro 600. У меня очень плохое увеличение производительности (между 1x и 2x).

Мне особенно интересно делать свертки на n-d массивах.

Кто-нибудь имеет подобный опыт, занимаясь вычислениями с gpuArray и так далее?

Какой прирост производительности можно ожидать?

Какую модель графического процессора я должен купить (менее 1000 $, возможно, менее 400 $)?

Ответы [ 3 ]

2 голосов
/ 08 декабря 2011

Производительность gpuArray в MATLAB определяется несколькими факторами:

  • В первую очередь ли ваша проблема хорошо работает на GPU
  • Сколько ядер CUDA у васВ общем, вы попали в ваше устройство: чем больше, тем лучше
  • Используете ли вы устройство с улучшенной производительностью двойной точности (например, последние устройства Quadro / Tesla с вычислительными возможностями> = 2)
  • Какой выпуск MATLAB вы используете - R2011b значительно лучше, чем R2010b.

Вот пример некоторых тестов в отличном блоге «Ходить случайно»: http://www.walkingrandomly.com/?p=3634.Они показывают виды ускорения, которые можно ожидать в разумных приложениях - т. Е. ~ 5x до 10x вполне вероятно, намного больше, чем редко.

(Если вы хотите увидеть один из этих редких примеров, набор Мандельброта на GPU, запрограммированный с использованием gpuArray s и arrayfun, работает примерно в 1500 раз быстрее, чем CPU: http://www.mathworks.com/products/demos/parallel-computing/paralleldemo_gpu_mandelbrot/paralleldemo_gpu_mandelbrot.html?product=DW)

1 голос
/ 31 октября 2013

Я сейчас исследую эту же тему.Одна вещь, которую я вижу, это то, что видеокарты низкого и среднего уровня предназначены для игр и, следовательно, оптимизированы для производительности FP32.В результате их производительность FP64 значительно отстает и может быть тем, что вы видите.Похоже, GTX Titan за $ 1 тыс. Является отправной точкой для серьезных научных расчетов.

1 голос
/ 08 декабря 2011

Quadro 400 имеет только 48 ядер по сравнению с GeForce 480 с 480 ядрами и GeForce 580 с 512 ядрами.Они также работают и на более высоких тактовых частотах, поэтому вы можете ожидать увеличения производительности более чем в 10 раз, когда доступ к памяти не является ограничивающим фактором.

Я не использовал графические процессоры для ускорения MATLAB, но у меня есть компьютеры, которые я использую для графических процессоров(CUDA) Dev каждый день.У одного есть Quadro FX5800 + GeForce 480, у другого - GeForce 580. Насколько я знаю, вы не получите никакой выгоды от карты рабочей станции по сравнению с GeForce.Так что сэкономьте $$$ и получите GF480 или GF580.

В этом потоке, похоже, есть ускоренная функция CUDA conv, которая, по-видимому, в 50 раз быстрее: http://www.mathworks.com/matlabcentral/fileexchange/20220 Я не уверен, что у MATLAB есть"из коробки" в наши дни.

Надеюсь, это поможет!Графические процессоры могут быть хороши для ускорения многих задач.Но прирост производительности может потребовать некоторой погони.

...