Page 1 of 1

vl and vu DSYGVDX_2STAGE

Posted: Fri May 17, 2019 2:30 am
by catecb
I'm using Fortran as the programming language of a software which requires to diagonalize a matrix. I've already implemented a function which makes use of magma_dsygvd_m. However, it is not as fast as I would have expected and I would like a speedup.

When trying to implement magma_dsygvdx_2stage, I'm not sure what do the inputs "vl" and "vu" mean, since they're not used in magma_dsygvd_m. I read the documentation but it is still not clear for me.

Can you give me a really simple example of the implementation of magma_dsygvdx_2stage using Fortran?

Re: vl and vu DSYGVDX_2STAGE

Posted: Sat May 18, 2019 4:45 pm
by mgates3
If you want all the eigenvalues, use range = MagmaRangeAll, and you can ignore il, iu, vl, vu by passing in dummy values.

If you want a subset of eigenvalues, use range = MagmaRangeV, and pass in vl, vu as the range of eigenvalues to find, e.g., to find all eigenvalues in half-open range (0.0, 1.0], set vl = 0.0 and vu = 1.0. (Ignore il, iu.)

Another way to specify a subset of eigenvalues, you can also find, say, the 1st to 10th eigenvalue by using range = MagmaRangeI, and passing in il = 1 and iu = 10. (Ignore vl, vu.)

From the docs:

range magma_range_t
- = MagmaRangeAll: all eigenvalues will be found.
- = MagmaRangeV: all eigenvalues in the half-open interval (VL,VU] will be found.
- = MagmaRangeI: the IL-th through IU-th eigenvalues will be found.

Mark