From: Arno G. <arn...@ao...> - 2021-09-10 13:55:36
|
Good afternoon! Maybe you can support me to find out if it would make sense to apply ViennaCL to my problem? Background: . In the context of a reverse engineering problem I need to solve a linear system of equations. The number of unknowns is in the range of n=2000 . 50000 and the system needs to be solved a lot of times within an iteration loop. . The matrix is symmetric, hence only the upper triangle is stored in compressed CSR format . I need to solve this system with multiple right hand side vectors. . At present, I'm using Intel MKL / PARDISO to solve the linear system with mtype = 2 (real and symmetric positive definite) or -2 (in some cases, the matrix is real and symmetric indefinite) which works very well. . Recently, I managed to speed up the whole algorithm by setting up the system on the GPU with CUDA and I'm looking for a suitable library to solve the system on the GPU as well. o I have already tried to solve the system with cusparse (using cusolverSpDcsrlsvchol or cusolverSpDcsrlsvqr) which in principle worked. I have faced the problem that I did not find a possibility to simultaneously solve multiple right hand sides and also the symmetric property is not supported for cusolverSp. So I had to extend the matrix to a full matrix and to solve the system for each rhs which in total was much slower than solving the system on the CPU by means of PARDISO. So, after this lengthy introduction, my question is: Is it possible to apply ViennaCL to such a problem and can I expect a significant speed up compared to mkl? . The perfect solution would be if I directly could transfer the matrix in csr format and the rhs vectors (which are all stored in GPU memory) to a suitable solver that replaces PARDISO, mtype 2,2 (I currently copy these data to the host and pass it to PARDISO) My environment for development is Win10(x64) / Visual Studio 2019 / MKL 2017 / CUDA 11.2 and the code also compiles on Linux where CUDA 7.5 is installed. Thanks for your feedback, Arno Gehrer |