Direct sparse solver on GPU #1637
Replies: 1 comment 1 reply
-
We don't expose precisely the symbolic factorization without numerical component right now, but you can generate the first factorization explicitly using auto factors = gko::experimental::factorization::Lu< double, int >::build().on(exec)->generate(matrix);
auto factor_matrix = factors->get_combined(); and then specify the symbolic factorization later on auto gk_solver = gko::experimental::solver::Direct< double, int >::build()
.with_factorization( gko::experimental::factorization::Lu< double, int >::build().with_symbolic_factorization(factor_matrix) )
.on( exec )
->generate( gko_A );
Currently every executor executes on a single stream, and the generation and triangular solve have some host interaction which makes it impossible to use them concurrently in a single thread, but (without any safety guarantees, see #996 for a deeper discussion), you could try creating two executors with custom streams (one of the CudaExecutor::create arguments) in two separate threads and overlap factorization and triangular solve that way. But I am not sure if that can give you any performance benefit, and it is rather complicated to set up. |
Beta Was this translation helpful? Give feedback.
-
Hi everyone,
recentyl I have read the following paper about direct solver fro sparse linear systems on GPUs -- https://arxiv.org/pdf/2306.14337 . With a help of Marcel Koch I created the following code
This seems to work well on CUDA GPUs. I have two questions now:
explicitly numerical factorization and triangular solve. Is it possible? I could not find such methods in the source code.
Thanks a lot, Tomas.
Beta Was this translation helpful? Give feedback.
All reactions