Решить небольшую симметричную положительную определенную точку= B на GPU только

StackOverflow https://stackoverflow.com//questions/11711192

Вопрос

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

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

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

Это было полезно?

Решение

NVIDIA Опубликовано код для дозированного AX= B Solver на зарегистрированный веб-сайт разработчика Последнее падение. Этот код работает для общих матриц, и должен работать достаточно хорошо для ваших нужд при условии, что вы можете расширить симметричные матрицы для полных матриц (которые не должны быть проблемой для 6x6?). Поскольку код выполняет поворот, который не нужен для положительных определенных матриц, он не является оптимальным для вашего случая, но вы можете изменить его для своих целей, поскольку код находится под лицензией BSD.

Стандартный веб-сайт разработчика NVIDIA испытывает некоторые проблемы в данный момент. Вот как вы можете загрузить пакетный код Solver в это время:

(1) Перейти на http://www.nvidia.com/content /cuda/cuda-toolkit.html

(2) Если у вас есть существующая учетная запись NVDeveloper (например, через Partners.nvidia.com) Нажмите на ссылку Green «Войти в NVDeveloper» на правой половине экрана. В противном случае нажмите «Присоединиться к NVDeveloper», чтобы подать заявку на новую учетную запись; Запросы на новые счета обычно утверждаются в течение одного рабочего дня.

(3) Войдите в строку в приглашении с вашим адресом электронной почты и паролем

(4) Есть раздел на правой стороне под названием «Новейшие загрузки». Пятый пункт сверху - «Полуселенный решающий». Нажмите на это, и это приведет вас на страницу загрузки для кода.

(5) Нажмите на ссылку «Загрузить», затем нажмите «Принять», чтобы принять условия лицензии. Ваша загрузка должна начать.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top