Недавно я разработал новый метод. Новый метод отлично работает с CUDA (от 20 до 40FPS), и я уже успешно его тестировал. Проблема возникает, когда я пытаюсь провести сравнение со старым методом. Старый метод был реализован на процессоре. Это делает разложение LU = LU первым, а затем бежит вперед + назад шаги для решения (LU) х = б. Очень хорошая вещь о старом методе заключается в том, что A не изменяется, поэтому разложение LU может выполняться только один раз, а накладные расходы - это просто вперед + назад. A является редкий и симметричный положительный положительный. (Я считаю, что это довольно распространенная практика во многих проблемах, например, в моделировании жидкостей в фиксированном домене.)Как повторить поиск вперед и назад с помощью cuSolver от CUDA?
Чтобы сделать сравнение справедливым, я хочу реализовать старый метод на графическом процессоре. Но я не нашел разреженной LU-разложения в cuSolver или cuSparse. Должен ли я рассчитать его другими библиотеками? Должен ли я использовать cusolverRfSolve() для решения? Если да, то почему л и U не поступают, но Р и Q поступают на вход этой функции? Есть ли какой-нибудь рабочий пример, похожий на то, что я пытаюсь сделать?
Даже если старый метод работает медленнее на графическом процессоре, мне бы очень хотелось его увидеть, что делает мой новый метод действительно полезным.