Showing results for

- Intel Community
- Software Development SDKs and Libraries
- Intel® oneAPI Math Kernel Library & Intel® Math Kernel Library
- performance: dsyevx versu dsyevr

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Mute
- Printer Friendly Page

Highlighted
##

Dear MKL Team, experts here,

boreas

Beginner

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

01-15-2012
09:45 AM

29 Views

performance: dsyevx versu dsyevr

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.

8 Replies

Highlighted
##

No expert, but ...

Don_Ritchie

Beginner

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

01-19-2012
12:16 PM

29 Views

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!

Highlighted
##

Dear Boreas,

Aleksandr_Z_Intel

Employee

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

01-19-2012
09:30 PM

29 Views

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.

Highlighted
##

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

yuriisig

Beginner

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

01-20-2012
02:02 PM

29 Views

Highlighted
##

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.

boreas

Beginner

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

01-21-2012
05:30 PM

29 Views

Highlighted
##

boreas

Beginner

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

01-21-2012
05:36 PM

29 Views

good to know that rrr only applies to full spectrum case. Thanks

Highlighted
##

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.

Don_Ritchie

Beginner

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

01-22-2012
05:19 AM

29 Views

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.

Highlighted
##

Dear donritchie,

Aleksandr_Z_Intel

Employee

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

01-23-2012
08:09 PM

29 Views

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.

Highlighted
##

Don_Ritchie

Beginner

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

01-24-2012
04:41 AM

29 Views

Aleksandr:

Thank you. I hadn't looked at stemr, but will now.

Thank you. I hadn't looked at stemr, but will now.

For more complete information about compiler optimizations, see our Optimization Notice.