'Driver Routines' vs. 'Computational Routines' - Eigenvalue Problem

'Driver Routines' vs. 'Computational Routines' - Eigenvalue Problem

I am interested in applying LAPACK to the eigenvalue problem for arbitrary complex-valued matrices (non-symmetric, non-Hermitian). In the past, I have written my own algorithms for this (involving transformations to Hessenberg, then to Schur form, etc.) and I have used other incarnations of LAPACK for this task as well. For various reasons, I'm heading to IMKL now.

Looking over the description of routines included in IMKL for the nonsymmetric eigenproblem, I noticed a 'driver routines' geev and geevx, which consist of a series of calls to several functions which should output eigenvalues and eigenvectors.I also note several 'computational routines' which perform various transformations on complex-valued matrices. All of this leads to some questions:

1) Generically, what is the difference between a computational routine and a driver rountine? Does a driver routine consist of a single function call which activates the various functions listed under it, or do I have to implement the sequence myself? (Other commercializations of LAPACK I have used have sort of an umbrella function, where one call does it all, when you want to perform a sequence of functions that could also be called individually).

2) When I see the term 'arbitrary matrix', does that generally imply arbitrary complex-valued matrix?

Any comments from users about using IMKL for arbitrary matrix eigenproblems are also appreciated.


2 帖子 / 0 全新

Hi Algodude,

Thanks for the question. You can consider the driver routines to be the umbrella functions as you call them. The driver routines will in turn call the necessary computational routines to get the job done. The computational routines are made available so that you can call them individually.

When you see 'arbitrary matrix' that refers to the fact that it has no special properties (e.g., not necessarily symmetry orpositive-definite). As appropriate there will be versions of the function for either real or complex valued matrices. The first letter of the function determines what sort of values are expected: s=single precision real, d=double precision real, c=single precision complex, z=double precision complex.