Community
cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Beginner
29 Views

performance: dsyevx versu dsyevr

Dear MKL Team, experts here,
How do I expect the performance between dsyevx and dsyevr, for example, on a 10000by10000 full rank matrix, to get about 6000 eigenvalue and eigenvectors? As far as I known, dsyevr is the implementation of famous mrrr algorithm? however, I only see near the even performance.
Any ideas? thanks so much.
0 Kudos
8 Replies
Highlighted
Beginner
29 Views

No expert, but ...

Since no one has yet replied to your post, the following might, at least, show you that others are seeing the same thing that you do. I'm running Visual Fortran Composer XE 2011 SP1 with Visual Studio 2010 using Windows 7 64-bit on a machine with the i7 Core 860 and 8 Gb RAM.

For random double precision matrices, all eigenvalues and all eigenvectors, times are: (averages for 3 runs)

2111 X 2111 matrix; Syevd 2.4 secs, Syevr 2.5 secs

5103 X 5103 matrix; Syevd 28.5 secs, Syevr 28.5 secs

10003 X 10003 matrix; Syevd 207 secs, Syevr 197 secs

It may be worth noting that tridiagonalization, using Sytrd+Orgtr, takes 1.5 secs for the 2111x2111, 22.4 secs for the 5103x5103, and 165 secs for the 10003x10003 random matrices. Also, the eigenvectors obtained from Syevd are the same, to ~1.0D-11, as those from Syevr.

I get essentially the same times, within ~10%, when I use these routines in a C# 'wrapper'.

My own parallel implementations, from scratch, of the MRRR algorithm runs more than twice as fast as my own implementation of the 'Divide and Conquer' algorithm. Both of those, and my own implementation of tridiagonalization, are, at best, a factor of 3 SLOWER than the corresponding MKL routines.

I too find it surprising that Syevd is as fast as Syevr ... but, with performance like that, I'm not complaining!

0 Kudos
Highlighted
29 Views

Dear Boreas,
Following the documentation for dsyevr,the routine callsrrr routineonly if the full spectrum is requested on machines that conform to the IEEE-754 floating point standard. In other cases (yours including)dsyevrcalls dstebz(bisection)and dstein. You can find corresponding note just above "Input parameters"paragraph in dsyevr routine description.
0 Kudos
Highlighted
Beginner
29 Views

The Relatively Robust Representations algorithm has shortages: low accuracy of eigenvectors, the big association of a velocity of algorithm on matrix structure, possible malfunctions in work. See also: http://software.intel.com/en-us/forums/showthread.php?t=73653&o=d&s=lr

0 Kudos
Highlighted
Beginner
29 Views

thank you so much for your info. Have you tried dsyevx? Also what I need is not full spectrum, which makes me not trying divide and conquer.
0 Kudos
Highlighted
Beginner
29 Views

good to know that rrr only applies to full spectrum case. Thanks
0 Kudos
Highlighted
Beginner
29 Views

Times for Syevx, all eigenvalues and eigenvectors, are
2111 x 2111: 4.29 sec
5103 x 5103: 57.6 sec
10003 x 10003: 399.6 sec
so, about 2x slower than Syevr or Syevd.

I'd appreciate it if one of the MKL experts could tell me why Syevr and Syevd give essentially the same performances, and why the MRRR algorithm is not preferred when only some eigenvalues and/or eigenvectors are needed.
0 Kudos
Highlighted
29 Views

Dear donritchie,
Performance strongly depends on the matrix. In your case both algorithms show the same performance. But for an arbitrary matrix one could be faster or another.



0 Kudos
Highlighted
Beginner
29 Views

Aleksandr:
Thank you. I hadn't looked at stemr, but will now.
0 Kudos