Support for skew-symmetric matrices

108 views
Skip to first unread message

Meiyue Shao

unread,
Aug 29, 2017, 10:27:26 PM8/29/17
to SLATE User
Hi SLATE Team,

In BLAS, LAPACK, etc., skew-symmetric and skew-Hermitian matrices are not
supported.  Recently I encountered some applications where skew-symmetric
eigensolvers are needed.  Modifying existing symmetric eigensolvers is a big
pain, especially when accuracy and performance are important.  It might be a
good idea to take care of these matrices already at the designing stage of the
library so that the users can avoid performing this type of development.

Skew-Hermitian matrices are relatively easy to handle because they can be
directly transformed to Hermitian matrices by multiplying the imaginary unit.
This type of conversion is sufficient for solving both linear systems and
eigenvalue problems.  Providing support for skew-Hermitian matrices is just
some simple additional work on interfacing.  Even if no support is provided,
it is not a big deal.

But skew-symmetric matrices have a different role because the conversion
mentioned above is not sufficient.
In general we do not want to convert a real skew-symmetric matrix to a complex
Hermitian matrix.  In addition, when solving eigenvalue problems, the
eigenvalues of a real skew-symmetric matrix appear in pairs.  Tailored solvers
are required to take care of such a property.
There might exist some applications that complex skew-symmetric matrices are
of interest.  Even in this case there is a special property that the rank is
always even, which is (numerically) lost by scaling to a complex symmetric
matrix and then performing LDL^T type factorizations.

Taking care of a skew-symmetric version of function at the same time of
developing a symmetric version is reasonably easy.  But if skew-symmetric
matrices are never taken into account until the very end stage, the developers
will have to repeat some painful process of debugging because transporting a
complicated symmetric solver (e.g., two-stage tridiagonal reduction) to its
skew-symmetric counterpart is not simple at all.  Therefore, I strongly
recommend adding support for skew-symmetric matrices (preferably, also for
skew-Hermitian matrices) at the early stage of development.

Since I am not aware of applications on solving skew-symmetric linear systems,
I am not sure whether LDL^T decomposition would be useful or not.
Operations that are helpful for real skew-symmetric eigensolvers include:
1. skew-symmetric matrix--matrix/matrix--vector multiplication
2. skew-symmetric tridiagonal reduction
3. skew-symmetric congruence transformation (A -> X^TAX)
(It seems that even symmetric congruence transformation is not supported in
BLAS/LAPACK for a general or triangular X.)

Best,
Meiyue

Vincent Picaud

unread,
Aug 30, 2017, 2:58:02 AM8/30/17
to SLATE User

I have no opinion concerning skew matrix support,
however I think it is important to clarify our goal:

A/ Do a good job for a C++ wrapping of already existing Blas and Lapack libs _without_  extra functionality

or

B/ Defining a C++ API in the spirit of Blas/Lapack but having new functionalities for instance: skew matrix support...

My opinion is:
* it is certainly possible to do A first. Then B reusing A.
* maybe it would be a good idea to create 2 categories/groups A & B in the forum:
      -> to have better focus
      -> do not mix A&B.

Best,
Vincent

Jakub Kurzak

unread,
Aug 30, 2017, 8:32:40 AM8/30/17
to Vincent Picaud, SLATE User
It's definitely A for BLAS and LAPACK.
This is only one deliverable in the SLATE project, which is meant to replace LAPACK and ScaLAPACK.
I don't envision new functionality being developed for the legacy libraries.
For SLATE, tough, we can think of providing all kinds of interfaces and supporting all kinds of matrix layouts.
We are having some heated discussions right now if SLATE should be doing: potrf(&A) or A.potrf().
Input welcome.
Jakub


--
You received this message because you are subscribed to the Google Groups "SLATE User" group.
To unsubscribe from this group and stop receiving emails from it, send an email to slate-user+unsubscribe@icl.utk.edu.
To post to this group, send email to slate...@icl.utk.edu.
To view this discussion on the web visit https://groups.google.com/a/icl.utk.edu/d/msgid/slate-user/15afbebc-4299-41ab-8b02-75d184c87ec9%40icl.utk.edu.

Reply all
Reply to author
Forward
0 new messages