Разреженный алгоритм факторизации Cholesky для GPU [закрыт]

может кто-нибудь предоставить мне с параллельного алгоритма для расчета разреженной матрицы факторизации? Он должен быть пригоден для выполнения на GPU. Любые ответы в CUDA, OpenCL или даже псевдокоде будут высоко оценены.

5 ответов


вообще говоря, прямые разреженные методы не очень подходят для GPU. В то время как лучшие прямые решатели (думая о таких пакетах, как CHOLMOD, SuperLU, MUMPS здесь) используют стратегии для создания плотных субблоков, которые могут быть обработаны с помощью L3 BLAS, размер и форма блоков не имеют тенденцию получать прибыль от использования GPU BLAS для ускорения. Это не означает, что это невозможно сделать, просто улучшение производительности может не стоить усилий.

видя, как вы просите о разреженной матрицы факторизации, я предположил, что матрица является симметричной положительно определенной. В этом случае вы можете рассмотреть возможность использования итеративного решателя-существует ряд хороших реализаций сопряженного градиента и других методов подпространства Крылова с простыми предобусловлениями, которые могут быть полезны. The Cusp библиотека для CUDA может стоить исследовать, поддается ли ваша проблема итерационным методам. The немецкий библиотека предлагает что-то подобное, если вы ищем OpenCL.


алгоритм multi-frontal кажется популярным выбором для параллельной разреженной факторизации. Проверьте , здесь.

как я понимаю, код широко использует Уровень 3 BLAS вызовов (DGEMM и etc) для того чтобы достигнуть высокой эффективности. Я бы исследовал, возможно ли связать с GPU на основе BLAS реализация, например CUDA BLAS или как если вы хотите использовать GPU а не FPU.

В отличие от плотной факторизации, разреженные методы всегда включают в себя несущественное количество целочисленной работы в дополнение к работе с плавающей запятой (хотя плавающая точка по-прежнему доминирует). Я не специалист по GPU's, но CPU лучше подходит для целочисленной работы, чем GPU?? Это может быть аргументом против реализации всего алгоритма для GPU...

надеюсь, что это помогает.


ознакомьтесь с этими статьями, любезно предоставленными ACM (SC'08 и PPoPP '09-отличные конференции).

В. Волков, В. И. Demmel. Бенчмаркинг графических процессоров для настройки плотной линейной алгебры. SC ' 08.

Юнг, Дж., О'Лири, Д. П. Холецкого разложение и Линейное программирование на GPU. Научная Работа, Университет Мэриленд 2006,.

г. Кинтана-Орти, Д. Ф. Игуаль, С. Е. Кинтана-Орти, Р. А. ван де Geijn. Решение плотных линейных систем на платформах c множеством аппаратный ускоритель. PPoPP ' 09.

Если у вас нет доступа к ним через портал ACM/DL, они могут быть где-то в сети. Иначе... Я, вероятно, могу процитировать некоторые из наиболее важных разделов с цитатами, и это будет справедливо.

EDIT:

зацени может быть?

http://www.google.com/url?sa=t&source=web&cd=2&ved=0CB0QFjAB&url=http%3A%2F%2Fwww.netlib.org%2Flapack%2Flawnspdf%2Flawn223.pdf&rct=j&q=linpack%20gpu%20cholesky&ei=5nZOTtzCOYHAtgesmdSzBw&usg=AFQjCNGfQECpU6YJQhMRQYktlxpFKLFPjQ&cad=rja

EDIT2: пропустил часть о "разреженном".

глядя в интернете и на ACM / IEEE, я не вижу много, что выскакивает на меня. То, что я вижу, не звучит многообещающе... этого не может быть вычисление, где вы видите много пользы от использования GPU.


разреженной матрицы факторизации на GPU является открытой проблемой. Даже Линейное Программирование статьи упомянутый ранее использует плотный алгоритм, в то время как большинство проблем разрежены. Коммерческий рынок LP solver очень конкурентоспособен, но ни у кого нет продукта, который использует GPU.


посмотреть хм - Unassembled Hyper Matrix solver. Он может вычисляет разреженную факторизацию Cholesky, используя несколько GPU на одном хосте.