Решение малых симметричных положительно определенных Ax = b только на графическом процессоре

Я пытаюсь оптимизировать приложение для 3D-моделирования в реальном времени. Вычислительная часть приложения почти полностью выполняется на GPU в CUDA. Приложение требует решения небольшой (6x6 )симметричной положительно определенной линейной системы двойной точности Ax = b 500+ раз в секунду. В настоящее время это делается с помощью эффективной библиотеки линейной алгебры на основе ЦП с использованием Cholesky, но требует копирования данных из ЦП -ГП и обратно в ГП сотни раз в секунду, а также накладных расходов на запуск ядра каждый раз и т. д.

Как я могу рассчитать решение линейной системы исключительно на графическом процессоре, вообще не перенося данные на процессор? Я немного читал о библиотеке MAGMA, но, похоже, она использует гибридные алгоритмы, а не только алгоритмы GPU.

Я готов к тому, что решение отдельной линейной системы на GPU будет намного медленнее, чем с существующей библиотекой на основе CPU, но я хочу посмотреть, можно ли это компенсировать, удалив обмен данными между хост и устройство, а также накладные расходы на запуск ядра и т. д. сотни раз в секунду. Если нет графического процессора, есть только LAPACK -, как альтернатива, как мне реализовать что-то, чтобы решить этот конкретный случай 6x6 только на графическом процессоре? Можно ли это сделать без огромных временных затрат, например, с помощью библиотек GPU BLAS?

8
задан Paul Caheny 29 July 2012 в 17:06
поделиться