Possible bug dsyevd_gpu test wrong eigenvectors result

Open discussion for MAGMA

Possible bug dsyevd_gpu test wrong eigenvectors result

Postby luiceur » Mon May 13, 2013 12:09 pm

Hi,

I have made a small test including MKL and MAGMA eigenvectors/eigenvalues calculation. I thought it could be due to my data, but it also gives wrong results using the random double matrix generator. For small values (14 - 32) of N, it gives right results, however it doesn't give the right value for eigenvectors for large values of N (1024 onwards). It always gives right results for eigenvalues though. Is that a bug?
Attachments
test.tar.gz
(2.57 KiB) Downloaded 52 times
luiceur
 
Posts: 26
Joined: Tue Jul 10, 2012 4:38 am

Re: Possible bug dsyevd_gpu test wrong eigenvectors result

Postby luiceur » Wed May 15, 2013 5:46 am

Hi Stan,

Did you have a chance to run my test? I've run the test on the Fermi C2050 cards. I have not tried on the K20s yet, but I guess it will hav ethe same effect.
Have you ever heard anything else from anybody about that?

Thanks for your help.
Luis
luiceur
 
Posts: 26
Joined: Tue Jul 10, 2012 4:38 am

Re: Possible bug dsyevd_gpu test wrong eigenvectors result

Postby Stan Tomov » Wed May 15, 2013 11:23 pm

Hi Luis,
I just ran the test and reproduced your result on a K20c.
I added a check for the factorization though and for the orthogonality and everything looks fine:
Code: Select all
test> ./benchmark_cpu -N 2000
Reading input file
Read succesful
Calculating eigenvalues with MKL
Quering space...
Solving eigenvalues...
Calculating eigenvalues with MAGMA
Quering for workspace
Warming up...
Quering optimal sizes...
Performing MAGMA operation...

Successful calculation of eigenvectors/eigenvalues
Testing the factorization A = U S U' for correctness:
(1)    | A - U S U' | / (|A| N) = 3.670771e-18
(2)    | I -   U'U  | /  N      = 6.732193e-17

Eigenvalues: SUCESS!!!!
Calculating max difference eigenvectors ...
ERROR: max diff = 1.088852

I added the check at the end of calcMAGMA.cc with the following code:
Code: Select all
  double result[3], eps = lapackf77_dlamch( "E" );

  lapackf77_dsyt21( &ione, uplo, &N, &izero,
                    A, &N,
                    w, h_work,
                    Ar, &N,
                    Ar, &N,
                    NULL, h_work, &result[0] );

  printf("Testing the factorization A = U S U' for correctness:\n");
  printf("(1)    | A - U S U' | / (|A| N) = %e\n", result[0]*eps);
  printf("(2)    | I -   U'U  | /  N      = %e\n", result[1]*eps);


Similar check for the LAPACK result gives that the factorization is correct and the eigenvectors are orthogonal:
Code: Select all
Testing the factorization A = U S U' for correctness:
(1)    | A - U S U' | / (|A| N) = 4.021844e-18
(2)    | I -   U'U  | /  N      = 1.075072e-16

I suppose this has to do with the directions of the vectors, or if there are repeated eigenvalues we may have chosen different than LAPACK corresponding eigenvectors. Is it important for you that the result matches the LAPACK results?
Stan
Stan Tomov
 
Posts: 251
Joined: Fri Aug 21, 2009 10:39 pm

Re: Possible bug dsyevd_gpu test wrong eigenvectors result

Postby luiceur » Thu May 16, 2013 4:36 am

I understand...And yes, your are right. Mathematically the result is correct, but for some reason they are different to the ones calculated with LAPACK. It seems that is important that eigenvectors match the LAPACK eigenvectors within my application...
luiceur
 
Posts: 26
Joined: Tue Jul 10, 2012 4:38 am

Re: Possible bug dsyevd_gpu test wrong eigenvectors result

Postby xinwu » Tue May 28, 2013 5:01 pm

Hi, Stan!

I was using the default "testing_dsyevd" and "testing_dsyevd_gpu" in the "testing" directory in MAGMA v1.3.0. If a very small matrix, e.g. 10x10 matrix, was specified, then it gave some error messages.

Could you please help me to fix this problme?

Thank you!

/* the output */

xwu@t2090th1:~/magma/magma-1.3.0/testing> ./testing_dsyevd_gpu -N 10
MAGMA 1.3.0
device 0: Tesla M2090, 1301.0 MHz clock, 5375.4 MB memory, capability 2.0
device 1: Tesla M2090, 1301.0 MHz clock, 5375.4 MB memory, capability 2.0
testing_dsyevd -N 10 [-JV] [-JN]

N CPU Time(s) GPU Time(s)
===================================

MKL ERROR: Parameter 11 was incorrect on entry to magma_dsytrd_gpu.

MKL ERROR: Parameter 11 was incorrect on entry to magma_dsytrd_gpu.
10 0.00 0.00
xwu@t2090th1:~/magma/magma-1.3.0/testing> ./testing_dsyevd -N 10
MAGMA 1.3.0
device 0: Tesla M2090, 1301.0 MHz clock, 5375.4 MB memory, capability 2.0
device 1: Tesla M2090, 1301.0 MHz clock, 5375.4 MB memory, capability 2.0
testing_dsyevd -N 10 [-JV] [-JN]

N CPU Time(s) GPU Time(s)
===================================

MKL ERROR: Parameter 9 was incorrect on entry to magma_dsytrd.

MKL ERROR: Parameter 9 was incorrect on entry to magma_dsytrd.
10 0.00 0.00
xinwu
 
Posts: 8
Joined: Fri Jun 24, 2011 9:22 am


Return to User discussion

Who is online

Users browsing this forum: No registered users and 1 guest