About linear solver dgetrs

About linear solver dgetrs

Dear MKL developers and users,

I am learning and coding with MKL linear solver. I went to some tutorials online such as the tutorials for eigensolvers. I am using MSVS 2010 and intel cluster studio. So I think using MKL linear solver dgetrs in a c++ program would like this:

#include <mkl.h>

	#include <iostream>
int _tmain(int argc, _TCHAR* argv[])

	{

	    char trans='N';

	    int n = 3, nrhs = 1, lda = 3, info = 0, ldb = 3;

	    int *ipiv = new int[3]();

	    double a[] = {1.,0.,0.,0.,1.,0.,0.,0.,1.};

	    double b[] = {3.,4.,5.};

	    dgetrs( &trans, &n, &nrhs, a, &lda, ipiv, b, &ldb, &info );

	    std::cout << b[0] << " " << b[1] << " " << b[2] << " " << b[3] << std::endl;
}

But the linear solver doesn't work correctly. Since matrix "a" is Identity matrix (row/column major doesn't matter here), I should be able to get 3, 4, 5 as the solution. However, I got two errors:

1. After executed, the numbers in b are

        [0]    -9.2559631349317831e+061    double
        [1]    3.0000000000000000    double
        [2]    4.0000000000000000    double

2. On exit, there is a run-time error: Run-Time Check Failure #2 - Stack around the variable 'b' was corrupted.

 

How do I fix these errors?

Thanks.

 

publicaciones de 5 / 0 nuevos
Último envío
Para obtener más información sobre las optimizaciones del compilador, consulte el aviso sobre la optimización.

Hello, 

dgetrs solver the  LU-factored square matrix. It needs first call dgetrf to factor the matrix, then call the function. 

Thanks,
Chao 

Hi Chao,

Thanks for the response, dgetrs solved both of them.

Two more questions: 1. does dsytry and dsytrs work in the same way (dsytry goes before dsytrs.)? Does dsytrs take an upper/lower triangle matrix as input or a full matrix? (I tried a bit. But I still cannot make it right.)

 

Hello,

dsytrf and dsytrs work in the same way: dsytrf goes before dsytrs.

dsytrf/dsytrs take ither the upper or the lower triangular part of the matrix A, depends on the 'uplo' settings, not the full matrix.

Thanks,
Chao

Thanks Chao. I'll try it.

Deje un comentario

Por favor inicie sesión para agregar un comentario. ¿No es socio? Únase ya