Низкая производительность для вычисления собственных значений и собственных векторов на графическом процессоре - PullRequest
6 голосов
/ 16 марта 2012

В некотором коде нам нужно получить авто-векторы и авто-значения для обобщенной задачи на собственные значения с симметричными вещественными матрицами (Ax = lamba Bx). Этот код использует DSPGVX из LACPACK. Мы хотели ускорить его на GPU, используя функцию MAGMA. Мы спросили на этом форуме и получили ответ об этом

http://icl.cs.utk.edu/magma/docs/zhegvx_8cpp.html

Размер наших матриц (N) варьируется от 100 до 50000 и даже больше, связанных с количеством атомов в молекуле. Мы наблюдаем:

а) для N больше 2500 (приблизительно) MAGMA просто не работает; ошибка сегментации б) MAGMA работает всегда медленнее, чем последовательный LAPACK, примерно в 10 раз медленнее

Нормально ли это поведение и можем ли мы его преодолеть? Кто-нибудь может сообщить, что кто-нибудь, работающий над подобными проблемами, получает приличное ускорение?

Спасибо

Ответы [ 2 ]

4 голосов
/ 20 марта 2012

По моему опыту, вы можете получить больше преимуществ в производительности, переключившись на лучший eigensolver. Лучший решатель, о котором я знаю, это ARPACK . Вы получите наибольшую выгоду, если ваши матрицы имеют некоторую структуру, например, если они разреженные. Этот решатель также наиболее эффективен, если вам нужно извлечь лишь небольшую часть от общего числа собственных пар.

Я бы начал с того, что попробую этот решатель на ваших проблемах, работающих только на процессоре. Вы можете обнаружить, что это само по себе дает достаточную производительность для ваших нужд. Если нет, то относительно легко переместить ядро ​​вычисления для ARPACK в графический процессор. Или доступны параллельные версии ARPACK.

2 голосов
/ 22 марта 2012

Вы пробовали CULA http://www.culatools.com/? CULA - это преобразование Лапака для CUDA от NVIDIA, поэтому, по крайней мере, теоретически он должен иметь одну из лучших реализаций для обобщенной задачи на собственные значения. Я думаю, что версия с одинарной точностью бесплатна, так что вы можете попробовать.

...