Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Polar decomposition QDWH #2

Open
wants to merge 50 commits into
base: master
Choose a base branch
from
Open

Conversation

dsukkari
Copy link
Contributor

The polar decomposition QDWH of a general matrix A = U * H, where U is orthogonal polar factor and H is hermitian polar factor.

QDWH iterations rely on Cholesky based and QR based iterations to compute the orthogonal polar factor U.

For the QR based iterations, new customized geqrf_qdwh_full and unmqr_qdwh_full are included to take advantage of the identity structure of the matrix involved during the QR based iterations.

The 2-norm estimate (norm2est) of the original matrix is required, the norm2est using power iteration is implemented and called in QDWH.

The following figure present the performance of SLATE_QDWH on Summit using various number of nodes.
image

@mgates3
Copy link
Collaborator

mgates3 commented Jan 27, 2023

Check for warnings, i.e., add -Werror to CXXFLAGS in make.inc.

Copy link
Collaborator

@mgates3 mgates3 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

First pass through. Probably more changes later on.

GNUmakefile Outdated Show resolved Hide resolved
src/geqrf_qdwh_full.cc Outdated Show resolved Hide resolved
src/geqrf_qdwh_full.cc Outdated Show resolved Hide resolved
src/geqrf_qdwh_full.cc Outdated Show resolved Hide resolved
src/geqrf_qdwh_full.cc Outdated Show resolved Hide resolved
src/qdwh.cc Outdated Show resolved Hide resolved
src/qdwh.cc Outdated Show resolved Hide resolved
src/unmqr_qdwh_full.cc Outdated Show resolved Hide resolved
src/unmqr_qdwh_full.cc Outdated Show resolved Hide resolved
test/run_tests.py Outdated Show resolved Hide resolved
src/norm2est.cc Outdated Show resolved Hide resolved
src/qdwh.cc Outdated Show resolved Hide resolved
src/unmqr_qdwh_full.cc Outdated Show resolved Hide resolved
@dsukkari
Copy link
Contributor Author

dsukkari commented Feb 8, 2023

All test passed, except one failure for gels using cholqr.

lapack::Gflop<scalar_t>::potrf(m) +
blas::Gflop<scalar_t>::trsm(slate::Side::Left, m, n) );

double gflop_compute_H = blas::Gflop<scalar_t>::her2k(n, m);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Currently, this is really gemm, but eventually it should be herk (i.e., herkx) instead of her2k.

(I'll fix.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants