Запрос производительности GPU, какое решение лучше? - PullRequest
2 голосов
/ 10 июня 2011

Я работаю над проектом обработки звука, который должен выполнить множество базовых вычислений (+, -, *), например, FFT (быстрое преобразование Фурье).

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

Мы используем программирование Matlab, и у нас есть приобретение звуковой карты, которое необходимо подключить к системе.знаете решение, отличное от видеокарты + материнской платы, чтобы сделать много исчисления?

Ответы [ 2 ]

5 голосов
/ 10 июня 2011

Вы можете использовать бесплатную библиотеку Matlab CUDA для выполнения вычислений на графическом процессоре.500 долларов дадут вам очень приличную графическую карту NVIDIA .Помните, что графические процессоры имеют ограниченную видеопамять и будут исчерпывать память с большими объемами данных даже быстрее, чем Matlab.

Я сравнил 8-ядерный процессор Intel с 8800 Nvidia GPU (128 потоков) с GPUMat, для наборов данных 512KbGPU вращался с той же скоростью, что и 8-ядерный Intel с частотой 2 ГГц, включая время передачи в память GPU.Для серьезной работы с графическим процессором я рекомендую выделенную карту по сравнению с той, которую вы используете для управления монитором.Воспользуйтесь дешевым видео с Intel для управления монитором и передачи вычислений массива на Nvidia.

4 голосов
/ 10 июня 2011

Parallel Computing Toolbox от MathWorks теперь включает поддержку GPU.В частности, поддерживаются поэлементные операции и арифметика, а также 1- и 2-мерные БПФ (наряду с целым рядом других вещей для поддержки рукописного кода CUDA, если он у вас есть).Если вы заинтересованы в выполнении вычислений с двойной точностью, последние фирменные карты Tesla и Quadro обеспечат вам наилучшую производительность.

Вот тривиальный пример, показывающий, как вы можете использовать GPU в MATLAB с помощью Parallel Computing Toolbox:

gA = gpuArray( rand(1000) );
gB = fft( 1 + gA * 3 );
...