Я ищу портировать некоторый код, который разрешает систему уравнений в частных производных (PDE) методом конечных объемов в форме IMPLICIT (для дискретизации по времени).
В результате существует трехдиагональная система уравнений в направлениях x, y, z, которая обрабатывается схемой ADI / TDMA.
Я не могу найти что-то относительно неявного решения PDE с CUDA.
Можно ли реализовать схему ADI / TDMA в CUDA? Есть ли где-нибудь пример, подобный 2D уравнению диффузии тепла?
Все, что я мог найти, - это пример кода CUDA для двумерного уравнения теплопроводности в конечных разностях, но в ЯВНОЙ форме (Университет Кембриджа).
Любая подсказка / ссылка будет принята с благодарностью.
Ответы:
Эта проблема поддается сильно векторизованной форме. Как вы заметили, метод ADI дает несколько шагов трехдиагональных систем. Поскольку он имеет форму линейных уравнений, вы можете использовать CUsolver и CUblas для вызова параллельных версий графических процессоров стандартных процедур линейной алгебры. Используя их, вы должны быть в состоянии взять явный код и просто изменить внутренний цикл на соответствующий вызов CUsolver и решить его так, чтобы код выглядел почти точно так же, как реализация ЦП, но с матричными операциями, выполняемыми на графических процессорах через библиотека звонков.
источник