Commit 8d832b9f authored by Andreas Marek's avatar Andreas Marek

Unify namespace: add interfaces elpa_solve_evp_{real|complex}_1stage

parent 26aea09e
...@@ -3,13 +3,15 @@ Thus these features are considered as deprecated and will be removed at some poi ...@@ -3,13 +3,15 @@ Thus these features are considered as deprecated and will be removed at some poi
from the ELPA library. from the ELPA library.
A) Deprecated interfaces: A) Deprecated interfaces:
Deprecated interface Replacement Deprecated interface Replacement
=================================================== ===================================================
get_elpa_row_col_coms elpa_get_communicators get_elpa_row_col_coms elpa_get_communicators
get_elpa_communicators elpa_get_communicators get_elpa_communicators elpa_get_communicators
solve_evp_real solve_evp_real_1stage solve_evp_real elpa_solve_evp_real_1stage
solve_evp_complex solve_evp_complex_1stage solve_evp_complex elpa_solve_evp_complex_1stage
solve_evp_real_1stage elpa_solve_evp_real_1stage
solve_evp_complex_1stage elpa_solve_evp_complex_1stage
mult_at_b_real elpa_mult_at_b_real mult_at_b_real elpa_mult_at_b_real
mult_ah_b_complex elpa_mult_ah_b_complex mult_ah_b_complex elpa_mult_ah_b_complex
invert_trm_real elpa_invert_trm_real invert_trm_real elpa_invert_trm_real
......
...@@ -178,6 +178,8 @@ dist_man_MANS = \ ...@@ -178,6 +178,8 @@ dist_man_MANS = \
man/solve_evp_complex_1stage.3 \ man/solve_evp_complex_1stage.3 \
man/solve_evp_real_2stage.3 \ man/solve_evp_real_2stage.3 \
man/solve_evp_complex_2stage.3 \ man/solve_evp_complex_2stage.3 \
man/elpa_solve_evp_real_1stage.3 \
man/elpa_solve_evp_complex_1stage.3 \
man/get_elpa_row_col_comms.3 \ man/get_elpa_row_col_comms.3 \
man/get_elpa_communicators.3 \ man/get_elpa_communicators.3 \
man/elpa_mult_at_b_real.3 \ man/elpa_mult_at_b_real.3 \
......
.TH "elpa_solve_evp_complex_1stage" 3 "Tue Oct 18 2016" "ELPA" \" -*- nroff -*-
.ad l
.nh
.SH NAME
elpa_solve_evp_complex_1stage \- solve the complex eigenvalue problem with the 1-stage ELPA solver
.br
.SH SYNOPSIS
.br
.SS FORTRAN INTERFACE
use elpa1
.br
.br
.RI "success = \fBelpa_solve_evp_complex_1stage\fP (na, nev, a(lda,matrixCols), ev(nev), q(ldq, matrixCols), ldq, nblk, matrixCols, mpi_comm_rows, mpi_comm_cols)"
.br
.RI " "
.br
.RI "With the definintions of the input and output variables:"
.br
.RI "integer, intent(in) \fBna\fP: global dimension of quadratic matrix \fBa\fP to solve"
.br
.RI "integer, intent(in) \fBnev\fP: number of eigenvalues to be computed; the first \fBnev\fP eigenvalules are calculated"
.br
.RI "complex*16, intent(inout) \fBa\fP: locally distributed part of the matrix \fBa\fP. The local dimensions are \fBlda\fP x \fBmatrixCols\fP"
.br
.RI "integer, intent(in) \fBlda\fP: leading dimension of locally distributed matrix \fBa\fP"
.br
.RI "real*8, intent(inout) \fBev\fP: on output the first \fBnev\fP computed eigenvalues"
.br
.RI "complex*16, intent(inout) \fBq\fP: on output the first \fBnev\fP computed eigenvectors"
.br
.RI "integer, intent(in) \fBldq\fP: leading dimension of matrix \fBq\fP which stores the eigenvectors"
.br
.RI "integer, intent(in) \fBnblk\fP: blocksize of block cyclic distributin, must be the same in both directions"
.br
.RI "integer, intent(in) \fBmatrixCols\fP: number of columns of locally distributed matrices \fBa\fP and \fBq\fP"
.br
.RI "integer, intent(in) \fBmpi_comm_rows\fP: communicator for communication in rows. Constructed with \fBelpa_get_communicators\fP(3)"
.br
.RI "integer, intent(in) \fBmpi_comm_cols\fP: communicator for communication in colums. Constructed with \fBelpa_get_communicators\fP(3)"
.br
.RI "logical \fBsuccess\fP: return value indicating success or failure"
.br
.SS C INTERFACE
#include "elpa.h"
.br
#include <complex.h>
.br
.RI "success = \fBelpa_solve_evp_complex_1stage\fP (\fBint\fP na, \fBint\fP nev, \fB double complex *\fPa, \fBint\fP lda, \fB double *\fPev, \fBdouble complex*\fPq, \fBint\fP ldq, \fBint\fP nblk, \fBint\fP matrixCols, \fBint\fP mpi_comm_rows, \fBint\fP mpi_comm_cols);"
.br
.RI " "
.br
.RI "With the definintions of the input and output variables:"
.br
.RI "int \fBna\fP: global dimension of quadratic matrix \fBa\fP to solve"
.br
.RI "int \fBnev\fP: number of eigenvalues to be computed; the first \fBnev\fP eigenvalules are calculated"
.br
.RI "double complex *\fBa\fP: pointer to locally distributed part of the matrix \fBa\fP. The local dimensions are \fBlda\fP x \fBmatrixCols\fP"
.br
.RI "int \fBlda\fP: leading dimension of locally distributed matrix \fBa\fP"
.br
.RI "double *\fBev\fP: pointer to memory containing on output the first \fBnev\fP computed eigenvalues"
.br
.RI "double complex *\fBq\fP: pointer to memory containing on output the first \fBnev\fP computed eigenvectors"
.br
.RI "int \fBldq\fP: leading dimension of matrix \fBq\fP which stores the eigenvectors"
.br
.RI "int \fBnblk\fP: blocksize of block cyclic distributin, must be the same in both directions"
.br
.RI "int \fBmatrixCols\fP: number of columns of locally distributed matrices \fBa\fP and \fBq\fP"
.br
.RI "int \fBmpi_comm_rows\fP: communicator for communication in rows. Constructed with \fBelpa_get_communicators\fP(3)"
.br
.RI "int \fBmpi_comm_cols\fP: communicator for communication in colums. Constructed with \fBelpa_get_communicators\fP(3)"
.br
.RI "int \fBsuccess\fP: return value indicating success (1) or failure (0)
.SH DESCRIPTION
Solve the complex eigenvalue problem with the 1-stage solver. The ELPA communicators \fBmpi_comm_rows\fP and \fBmpi_comm_cols\fP are obtained with the \fBelpa_get_communicators\fP(3) function. The distributed quadratic marix \fBa\fP has global dimensions \fBna\fP x \fBna\fP, and a local size \fBlda\fP x \fBmatrixCols\fP. The solver will compute the first \fBnev\fP eigenvalues, which will be stored on exit in \fBev\fP. The eigenvectors corresponding to the eigenvalues will be stored in \fBq\fP. All memory of the arguments must be allocated outside the call to the solver.
.br
The interface \fBelpa_solve_evp_complex\fP(3) is a more flexible alternative.
.br
.SH "SEE ALSO"
\fBelpa_get_communicators\fP(3) \fBelpa_solve_evp_real\fP(3) \fBelpa_solve_evp_complex\fP(3) \fBelpa_solve_evp_real_1stage\fP(3) \fBsolve_evp_real_2stage\fP(3) \fBsolve_evp_complex_2stage\fP(3) \fBelpa2_print_kernels\fP(1)
.TH "elpa_solve_evp_real_1stage" 3 "Tue Oct 18 2016" "ELPA" \" -*- nroff -*-
.ad l
.nh
.SH NAME
elpa_solve_evp_real_1stage \- solve the real eigenvalue problem with the 1-stage ELPA solver
.br
.SH SYNOPSIS
.br
.SS FORTRAN INTERFACE
use elpa1
.br
.br
.RI "success = \fBelpa_solve_evp_real_1stage\fP (na, nev, a(lda,matrixCols), ev(nev), q(ldq, matrixCols), ldq, nblk, matrixCols, mpi_comm_rows, mpi_comm_cols)"
.br
.RI " "
.br
.RI "With the definintions of the input and output variables:"
.br
.RI "integer, intent(in) \fBna\fP: global dimension of quadratic matrix \fBa\fP to solve"
.br
.RI "integer, intent(in) \fBnev\fP: number of eigenvalues to be computed; the first \fBnev\fP eigenvalules are calculated"
.br
.RI "real*8, intent(inout) \fBa\fP: locally distributed part of the matrix \fBa\fP. The local dimensions are \fBlda\fP x \fBmatrixCols\fP"
.br
.RI "integer, intent(in) \fBlda\fP: leading dimension of locally distributed matrix \fBa\fP"
.br
.RI "real*8, intent(inout) \fBev\fP: on output the first \fBnev\fP computed eigenvalues"
.br
.RI "real*8, intent(inout) \fBq\fP: on output the first \fBnev\fP computed eigenvectors"
.br
.RI "integer, intent(in) \fBldq\fP: leading dimension of matrix \fBq\fP which stores the eigenvectors"
.br
.RI "integer, intent(in) \fBnblk\fP: blocksize of block cyclic distributin, must be the same in both directions"
.br
.RI "integer, intent(in) \fBmatrixCols\fP: number of columns of locally distributed matrices \fBa\fP and \fBq\fP"
.br
.RI "integer, intent(in) \fBmpi_comm_rows\fP: communicator for communication in rows. Constructed with \fBelpa_get_communicators\fP(3)"
.br
.RI "integer, intent(in) \fBmpi_comm_cols\fP: communicator for communication in colums. Constructed with \fBelpa_get_communicators\fP(3)"
.br
.RI "logical \fBsuccess\fP: return value indicating success or failure"
.br
.SS C INTERFACE
#include "elpa.h"
.br
.RI "success = \fBelpa_solve_evp_real_1stage\fP (\fBint\fP na, \fBint\fP nev, \fB double *\fPa, \fBint\fP lda, \fB double *\fPev, \fBdouble *\fPq, \fBint\fP ldq, \fBint\fP nblk, \fBint\fP matrixCols, \fBint\fP mpi_comm_rows, \fBint\fP mpi_comm_cols);"
.br
.RI " "
.br
.RI "With the definintions of the input and output variables:"
.br
.RI "int \fBna\fP: global dimension of quadratic matrix \fBa\fP to solve"
.br
.RI "int \fBnev\fP: number of eigenvalues to be computed; the first \fBnev\fP eigenvalules are calculated"
.br
.RI "double *\fBa\fP: pointer to locally distributed part of the matrix \fBa\fP. The local dimensions are \fBlda\fP x \fBmatrixCols\fP"
.br
.RI "int \fBlda\fP: leading dimension of locally distributed matrix \fBa\fP"
.br
.RI "double *\fBev\fP: pointer to memory containing on output the first \fBnev\fP computed eigenvalues"
.br
.RI "double *\fBq\fP: pointer to memory containing on output the first \fBnev\fP computed eigenvectors"
.br
.RI "int \fBldq\fP: leading dimension of matrix \fBq\fP which stores the eigenvectors"
.br
.RI "int \fBnblk\fP: blocksize of block cyclic distributin, must be the same in both directions"
.br
.RI "int \fBmatrixCols\fP: number of columns of locally distributed matrices \fBa\fP and \fBq\fP"
.br
.RI "int \fBmpi_comm_rows\fP: communicator for communication in rows. Constructed with \fBelpa_get_communicators\fP(3)"
.br
.RI "int \fBmpi_comm_cols\fP: communicator for communication in colums. Constructed with \fBelpa_get_communicators\fP(3)"
.br
.RI "int \fBsuccess\fP: return value indicating success (1) or failure (0)
.SH DESCRIPTION
Solve the real eigenvalue problem with the 1-stage solver. The ELPA communicators \fBmpi_comm_rows\fP and \fBmpi_comm_cols\fP are obtained with the \fBelpa_get_communicators\fP(3) function. The distributed quadratic marix \fBa\fP has global dimensions \fBna\fP x \fBna\fP, and a local size \fBlda\fP x \fBmatrixCols\fP. The solver will compute the first \fBnev\fP eigenvalues, which will be stored on exit in \fBev\fP. The eigenvectors corresponding to the eigenvalues will be stored in \fBq\fP. All memory of the arguments must be allocated outside the call to the solver.
.br
The interface \fBelpa_solve_evp_real\fP(3) is a more flexible alternative.
.br
.SH "SEE ALSO"
\fBelpa_get_communicators\fP(3) \fBelpa_solve_evp_real\fP(3) \fBelpa_solve_evp_complex\fP(3) \fBelpa_solve_evp_complex_1stage\fP(3) \fBsolve_evp_real_2stage\fP(3) \fBsolve_evp_complex_2stage\fP(3) \fBelpa2_print_kernels\fP(1)
.TH "solve_evp_complex" 3 "Wed Dec 2 2015" "ELPA" \" -*- nroff -*- .TH "solve_evp_complex" 3 "Tue Oct 18 2016" "ELPA" \" -*- nroff -*-
.ad l .ad l
.nh .nh
.SH NAME .SH NAME
solve_evp_complex \- solve the complex eigenvalue problem with the 1-stage ELPA solver. solve_evp_complex \- solve the complex eigenvalue problem with the 1-stage ELPA solver.
This interface is old and deprecated. It is recommended to use \fBsolve_evp_complex_1stage\fP(3) This interface is old and deprecated. It is recommended to use \fBelpa_solve_evp_complex_1stage\fP(3)
.br .br
.SH SYNOPSIS .SH SYNOPSIS
...@@ -49,4 +49,4 @@ Old, deprecated interface, which will be deleted at some point. Use \fBsolve_evp ...@@ -49,4 +49,4 @@ Old, deprecated interface, which will be deleted at some point. Use \fBsolve_evp
Solve the complex eigenvalue problem with the 1-stage solver. The ELPA communicators \fBmpi_comm_rows\fP and \fBmpi_comm_cols\fP are obtained with the \fBelpa_get_communicators\fP(3) function. The distributed quadratic marix \fBa\fP has global dimensions \fBna\fP x \fBna\fP, and a local size \fBlda\fP x \fBmatrixCols\fP. The solver will compute the first \fBnev\fP eigenvalues, which will be stored on exit in \fBev\fP. The eigenvectors corresponding to the eigenvalues will be stored in \fBq\fP. All memory of the arguments must be allocated outside the call to the solver. Solve the complex eigenvalue problem with the 1-stage solver. The ELPA communicators \fBmpi_comm_rows\fP and \fBmpi_comm_cols\fP are obtained with the \fBelpa_get_communicators\fP(3) function. The distributed quadratic marix \fBa\fP has global dimensions \fBna\fP x \fBna\fP, and a local size \fBlda\fP x \fBmatrixCols\fP. The solver will compute the first \fBnev\fP eigenvalues, which will be stored on exit in \fBev\fP. The eigenvectors corresponding to the eigenvalues will be stored in \fBq\fP. All memory of the arguments must be allocated outside the call to the solver.
.br .br
.SH "SEE ALSO" .SH "SEE ALSO"
\fBelpa_get_communicators\fP(3) \fBelpa_solve_evp_real\fP(3) \fBelpa_solve_evp_complex\fP(3) \fBsolve_evp_real_1stage\fP(3) \fBsolve_evp_real_2stage\fP(3) \fBsolve_evp_complex_1stage\fP(3) \fBsolve_evp_complex_2stage\fP(3) \fBelpa2_print_kernels\fP(1) \fBelpa_get_communicators\fP(3) \fBelpa_solve_evp_real\fP(3) \fBelpa_solve_evp_complex\fP(3) \fBelpa_solve_evp_real_1stage\fP(3) \fBsolve_evp_real_2stage\fP(3) \fBelpa_solve_evp_complex_1stage\fP(3) \fBsolve_evp_complex_2stage\fP(3) \fBelpa2_print_kernels\fP(1)
.TH "solve_evp_complex_1stage" 3 "Wed Dec 2 2015" "ELPA" \" -*- nroff -*- .TH "solve_evp_complex_1stage" 3 "Tue Oct 18 2016" "ELPA" \" -*- nroff -*-
.ad l .ad l
.nh .nh
.SH NAME .SH NAME
solve_evp_complex_1stage \- solve the complex eigenvalue problem with the 1-stage ELPA solver solve_evp_complex_1stage \- solve the complex eigenvalue problem with the 1-stage ELPA solver
This interface is old and deprecated. It is recommended to use \fBelpa_solve_evp_complex_1stage\fP(3)
.br .br
.SH SYNOPSIS .SH SYNOPSIS
...@@ -87,4 +88,4 @@ Solve the complex eigenvalue problem with the 1-stage solver. The ELPA communica ...@@ -87,4 +88,4 @@ Solve the complex eigenvalue problem with the 1-stage solver. The ELPA communica
The interface \fBelpa_solve_evp_complex\fP(3) is a more flexible alternative. The interface \fBelpa_solve_evp_complex\fP(3) is a more flexible alternative.
.br .br
.SH "SEE ALSO" .SH "SEE ALSO"
\fBelpa_get_communicators\fP(3) \fBelpa_solve_evp_real\fP(3) \fBelpa_solve_evp_complex\fP(3) \fBsolve_evp_real_1stage\fP(3) \fBsolve_evp_real_2stage\fP(3) \fBsolve_evp_complex_2stage\fP(3) \fBelpa2_print_kernels\fP(1) \fBelpa_get_communicators\fP(3) \fBelpa_solve_evp_real\fP(3) \fBelpa_solve_evp_complex\fP(3) \fBelpa_solve_evp_real_1stage\fP(3) \fBsolve_evp_real_2stage\fP(3) \fBsolve_evp_complex_2stage\fP(3) \fBelpa2_print_kernels\fP(1)
.TH "solve_evp_complex_2stage" 3 "Wed Dec 2 2015" "ELPA" \" -*- nroff -*- .TH "solve_evp_complex_2stage" 3 "Tue Oct 18 2016" "ELPA" \" -*- nroff -*-
.ad l .ad l
.nh .nh
.SH NAME .SH NAME
...@@ -96,4 +96,4 @@ Solve the complex eigenvalue problem with the 2-stage solver. The ELPA communica ...@@ -96,4 +96,4 @@ Solve the complex eigenvalue problem with the 2-stage solver. The ELPA communica
The interface \fBelpa_solve_evp_complex\fP(3) is a more flexible alternative. The interface \fBelpa_solve_evp_complex\fP(3) is a more flexible alternative.
.br .br
.SH "SEE ALSO" .SH "SEE ALSO"
\fBelpa_get_communicators\fP(3) \fBelpa_solve_evp_real\fP(3) \fBelpa_solve_evp_complex\fP(3) \fBsolve_evp_real_1stage\fP(3) \fBsolve_evp_complex_1stage\fP(3) \fBsolve_evp_real_2stage\fP(3) \fBelpa2_print_kernels\fP(1) \fBelpa_get_communicators\fP(3) \fBelpa_solve_evp_real\fP(3) \fBelpa_solve_evp_complex\fP(3) \fBelpa_solve_evp_real_1stage\fP(3) \fBelpa_solve_evp_complex_1stage\fP(3) \fBsolve_evp_real_2stage\fP(3) \fBelpa2_print_kernels\fP(1)
.TH "solve_evp_real" 3 "Wed Dec 2 2015" "ELPA" \" -*- nroff -*- .TH "solve_evp_real" 3 "Tue Oct 2 2016" "ELPA" \" -*- nroff -*-
.ad l .ad l
.nh .nh
.SH NAME .SH NAME
solve_evp_real \- solve the real eigenvalue problem with the 1-stage ELPA solver. solve_evp_real \- solve the real eigenvalue problem with the 1-stage ELPA solver.
This is an old and deprecated interface. It is recommendet to use \fBsolve_evp_real_1stage\fP(3) This is an old and deprecated interface. It is recommendet to use \fBelpa_solve_evp_real_1stage\fP(3)
.br .br
.SH SYNOPSIS .SH SYNOPSIS
...@@ -49,4 +49,4 @@ Old, deprecated interface, which will be deleted at some point. Use \fBsolve_evp ...@@ -49,4 +49,4 @@ Old, deprecated interface, which will be deleted at some point. Use \fBsolve_evp
Solve the real eigenvalue problem with the 1-stage solver. The ELPA communicators \fBmpi_comm_rows\fP and \fBmpi_comm_cols\fP are obtained with the \fBelpa_get_communicators\fP(3) function. The distributed quadratic marix \fBa\fP has global dimensions \fBna\fP x \fBna\fP, and a local size \fBlda\fP x \fBmatrixCols\fP. The solver will compute the first \fBnev\fP eigenvalues, which will be stored on exit in \fBev\fP. The eigenvectors corresponding to the eigenvalues will be stored in \fBq\fP. All memory of the arguments must be allocated outside the call to the solver. Solve the real eigenvalue problem with the 1-stage solver. The ELPA communicators \fBmpi_comm_rows\fP and \fBmpi_comm_cols\fP are obtained with the \fBelpa_get_communicators\fP(3) function. The distributed quadratic marix \fBa\fP has global dimensions \fBna\fP x \fBna\fP, and a local size \fBlda\fP x \fBmatrixCols\fP. The solver will compute the first \fBnev\fP eigenvalues, which will be stored on exit in \fBev\fP. The eigenvectors corresponding to the eigenvalues will be stored in \fBq\fP. All memory of the arguments must be allocated outside the call to the solver.
.br .br
.SH "SEE ALSO" .SH "SEE ALSO"
\fBelpa_get_communicators\fP(3) \fBelpa_solve_evp_real\fP(3) \fBelpa_solve_evp_complex\fP(3) \fBsolve_evp_complex_1stage\fP(3) \fBsolve_evp_real_2stage\fP(3) \fBsolve_evp_complex_2stage\fP(3) \fBelpa2_print_kernels\fP(1) \fBelpa_get_communicators\fP(3) \fBelpa_solve_evp_real\fP(3) \fBelpa_solve_evp_complex\fP(3) \fBelpa_solve_evp_complex_1stage\fP(3) \fBsolve_evp_real_2stage\fP(3) \fBsolve_evp_complex_2stage\fP(3) \fBelpa2_print_kernels\fP(1)
.TH "solve_evp_real_1stage" 3 "Wed Dec 2 2015" "ELPA" \" -*- nroff -*- .TH "solve_evp_real_1stage" 3 "Tue Oct 18 2016" "ELPA" \" -*- nroff -*-
.ad l .ad l
.nh .nh
.SH NAME .SH NAME
solve_evp_real_1stage \- solve the real eigenvalue problem with the 1-stage ELPA solver solve_evp_real_1stage \- solve the real eigenvalue problem with the 1-stage ELPA solver
This interface is old and deprecated. It is recommended to use \fBelpa_solve_evp_real_1stage\fP(3)
.br .br
.SH SYNOPSIS .SH SYNOPSIS
...@@ -85,4 +86,4 @@ Solve the real eigenvalue problem with the 1-stage solver. The ELPA communicator ...@@ -85,4 +86,4 @@ Solve the real eigenvalue problem with the 1-stage solver. The ELPA communicator
The interface \fBelpa_solve_evp_real\fP(3) is a more flexible alternative. The interface \fBelpa_solve_evp_real\fP(3) is a more flexible alternative.
.br .br
.SH "SEE ALSO" .SH "SEE ALSO"
\fBelpa_get_communicators\fP(3) \fBelpa_solve_evp_real\fP(3) \fBelpa_solve_evp_complex\fP(3) \fBsolve_evp_complex_1stage\fP(3) \fBsolve_evp_real_2stage\fP(3) \fBsolve_evp_complex_2stage\fP(3) \fBelpa2_print_kernels\fP(1) \fBelpa_get_communicators\fP(3) \fBelpa_solve_evp_real\fP(3) \fBelpa_solve_evp_complex\fP(3) \fBelpa_solve_evp_complex_1stage\fP(3) \fBsolve_evp_real_2stage\fP(3) \fBsolve_evp_complex_2stage\fP(3) \fBelpa2_print_kernels\fP(1)
.TH "solve_evp_real_2stage" 3 "Wed Dec 2 2015" "ELPA" \" -*- nroff -*- .TH "solve_evp_real_2stage" 3 "Tue Oct 18 2016" "ELPA" \" -*- nroff -*-
.ad l .ad l
.nh .nh
.SH NAME .SH NAME
...@@ -96,4 +96,4 @@ Solve the real eigenvalue problem with the 2-stage solver. The ELPA communicator ...@@ -96,4 +96,4 @@ Solve the real eigenvalue problem with the 2-stage solver. The ELPA communicator
The interface \fBelpa_solve_evp_real\fP(3) is a more flexible alternative. The interface \fBelpa_solve_evp_real\fP(3) is a more flexible alternative.
.br .br
.SH "SEE ALSO" .SH "SEE ALSO"
\fBelpa_get_communicators\fP(3) \fBelpa_solve_evp_real\fP(3) \fBelpa_solve_evp_complex\fP(3) \fBsolve_evp_real_1stage\fP(3) \fBsolve_evp_complex_1stage\fP(3) \fBsolve_evp_complex_2stage\fP(3) \fBelpa2_print_kernels\fP(1) \fBelpa_get_communicators\fP(3) \fBelpa_solve_evp_real\fP(3) \fBelpa_solve_evp_complex\fP(3) \fBelpa_solve_evp_real_1stage\fP(3) \fBelpa_solve_evp_complex_1stage\fP(3) \fBsolve_evp_complex_2stage\fP(3) \fBelpa2_print_kernels\fP(1)
...@@ -90,14 +90,16 @@ module ELPA1 ...@@ -90,14 +90,16 @@ module ELPA1
! The following routines are public: ! The following routines are public:
private private
public :: get_elpa_row_col_comms !< old, deprecated interface, will be deleted. Use elpa_get_communicators instead public :: get_elpa_row_col_comms !< old, deprecated interface, will be deleted. Use elpa_get_communicators instead
public :: get_elpa_communicators !< Sets MPI row/col communicators; OLD and deprecated interface, will be deleted. Use elpa_get_communicators instead public :: get_elpa_communicators !< Sets MPI row/col communicators; OLD and deprecated interface, will be deleted. Use elpa_get_communicators instead
public :: elpa_get_communicators !< Sets MPI row/col communicators as needed by ELPA public :: elpa_get_communicators !< Sets MPI row/col communicators as needed by ELPA
public :: solve_evp_real !< old, deprecated interface: Driver routine for real eigenvalue problem. will be deleted at some point public :: solve_evp_real !< old, deprecated interface: Driver routine for real eigenvalue problem. will be deleted at some point
public :: solve_evp_real_1stage !< Driver routine for real 1-stage eigenvalue problem public :: elpa_solve_evp_real_1stage !< Driver routine for real 1-stage eigenvalue problem
public :: solve_evp_complex !< old, deprecated interface: Driver routine for complex eigenvalue problem will be deleted at some point public :: solve_evp_real_1stage !< old, deprecated interface: Driver routine for real eigenvalue problem. will be deleted at some point
public :: solve_evp_complex_1stage !< Driver routine for complex 1-stage eigenvalue problem public :: solve_evp_complex !< old, deprecated interface: Driver routine for complex eigenvalue problem will be deleted at some point
public :: elpa_solve_evp_complex_1stage !< Driver routine for complex 1-stage eigenvalue problem
public :: solve_evp_complex_1stage !< old, deprecated interface: Driver routine for complex eigenvalue problem will be deleted at some point
! imported from elpa1_auxilliary ! imported from elpa1_auxilliary
...@@ -207,6 +209,44 @@ module ELPA1 ...@@ -207,6 +209,44 @@ module ELPA1
module procedure solve_evp_real_1stage module procedure solve_evp_real_1stage
end interface end interface
!> \brief elpa_solve_evp_real_1stage: Fortran function to solve the real eigenvalue problem with 1-stage solver. This is called by "elpa_solve_evp_real"
!>
! Parameters
!
!> \param na Order of matrix a
!>
!> \param nev Number of eigenvalues needed.
!> The smallest nev eigenvalues/eigenvectors are calculated.
!>
!> \param a(lda,matrixCols) Distributed matrix for which eigenvalues are to be computed.
!> Distribution is like in Scalapack.
!> The full matrix must be set (not only one half like in scalapack).
!> Destroyed on exit (upper and lower half).
!>
!> \param lda Leading dimension of a
!>
!> \param ev(na) On output: eigenvalues of a, every processor gets the complete set
!>
!> \param q(ldq,matrixCols) On output: Eigenvectors of a
!> Distribution is like in Scalapack.
!> Must be always dimensioned to the full size (corresponding to (na,na))
!> even if only a part of the eigenvalues is needed.
!>
!> \param ldq Leading dimension of q
!>
!> \param nblk blocksize of cyclic distribution, must be the same in both directions!
!>
!> \param matrixCols distributed number of matrix columns
!>
!> \param mpi_comm_rows MPI-Communicator for rows
!> \param mpi_comm_cols MPI-Communicator for columns
!>
!> \result success
interface elpa_solve_evp_real_1stage
module procedure solve_evp_real_1stage
end interface
!> \brief solve_evp_complex: old, deprecated Fortran function to solve the complex eigenvalue problem with 1-stage solver. will be deleted at some point. Better use "solve_evp_complex_1stage" or "elpa_solve_evp_complex" !> \brief solve_evp_complex: old, deprecated Fortran function to solve the complex eigenvalue problem with 1-stage solver. will be deleted at some point. Better use "solve_evp_complex_1stage" or "elpa_solve_evp_complex"
!> !>
!> \details !> \details
...@@ -242,12 +282,48 @@ module ELPA1 ...@@ -242,12 +282,48 @@ module ELPA1
!> \param mpi_comm_cols MPI-Communicator for columns !> \param mpi_comm_cols MPI-Communicator for columns
!> !>
!> \result success !> \result success
interface solve_evp_complex interface solve_evp_complex
module procedure solve_evp_complex_1stage module procedure solve_evp_complex_1stage
end interface end interface
!> \brief elpa_solve_evp_complex_1stage: Fortran function to solve the complex eigenvalue problem with 1-stage solver. This is called by "elpa_solve_evp_complex"
!>
! Parameters
!
!> \param na Order of matrix a
!>
!> \param nev Number of eigenvalues needed.
!> The smallest nev eigenvalues/eigenvectors are calculated.
!>
!> \param a(lda,matrixCols) Distributed matrix for which eigenvalues are to be computed.
!> Distribution is like in Scalapack.
!> The full matrix must be set (not only one half like in scalapack).
!> Destroyed on exit (upper and lower half).
!>
!> \param lda Leading dimension of a
!>
!> \param ev(na) On output: eigenvalues of a, every processor gets the complete set
!>
!> \param q(ldq,matrixCols) On output: Eigenvectors of a
!> Distribution is like in Scalapack.
!> Must be always dimensioned to the full size (corresponding to (na,na))
!> even if only a part of the eigenvalues is needed.
!>
!> \param ldq Leading dimension of q
!>
!> \param nblk blocksize of cyclic distribution, must be the same in both directions!
!>
!> \param matrixCols distributed number of matrix columns
!>
!> \param mpi_comm_rows MPI-Communicator for rows
!> \param mpi_comm_cols MPI-Communicator for columns
!>
!> \result success
interface elpa_solve_evp_complex_1stage
module procedure solve_evp_complex_1stage
end interface
contains contains
!------------------------------------------------------------------------------- !-------------------------------------------------------------------------------
...@@ -293,7 +369,7 @@ function get_elpa_communicators(mpi_comm_global, my_prow, my_pcol, mpi_comm_rows ...@@ -293,7 +369,7 @@ function get_elpa_communicators(mpi_comm_global, my_prow, my_pcol, mpi_comm_rows
end function get_elpa_communicators end function get_elpa_communicators
!> \brief solve_evp_real_1stage: Fortran function to solve the real eigenvalue problem with 1-stage solver. This is called by "elpa_solve_evp_real" !> \brief solve_evp_real_1stage: Old, deprecated interface better use "elpa_solve_evp_real_1stage"
!> !>
! Parameters ! Parameters
! !
...@@ -402,7 +478,7 @@ function solve_evp_real_1stage(na, nev, a, lda, ev, q, ldq, nblk, matrixCols, mp ...@@ -402,7 +478,7 @@ function solve_evp_real_1stage(na, nev, a, lda, ev, q, ldq, nblk, matrixCols, mp
end function solve_evp_real_1stage end function solve_evp_real_1stage
!> \brief solve_evp_complex_1stage: Fortran function to solve the complex eigenvalue problem with 1-stage solver. This is called by "elpa_solve_evp_complex" !> \brief solve_evp_complex_1stage: Old, deprecated interface. Better use "elpa_solve_evp_complex_1stage"
!> !>
! Parameters ! Parameters
! !
......
...@@ -150,7 +150,7 @@ ...@@ -150,7 +150,7 @@
result(success) bind(C,name="elpa_solve_evp_real_1stage") result(success) bind(C,name="elpa_solve_evp_real_1stage")
use, intrinsic :: iso_c_binding use, intrinsic :: iso_c_binding
use elpa1, only : solve_evp_real use elpa1, only : elpa_solve_evp_real_1stage
implicit none implicit none
integer(kind=c_int) :: success integer(kind=c_int) :: success
...@@ -163,7 +163,7 @@ ...@@ -163,7 +163,7 @@
#endif #endif
logical :: successFortran logical :: successFortran
successFortran = solve_evp_real(na, nev, a, lda, ev, q, ldq, nblk, matrixCols, mpi_comm_rows, mpi_comm_cols) successFortran = elpa_solve_evp_real_1stage(na, nev, a, lda, ev, q, ldq, nblk, matrixCols, mpi_comm_rows, mpi_comm_cols)
if (successFortran) then if (successFortran) then
success = 1 success = 1
...@@ -202,7 +202,7 @@ ...@@ -202,7 +202,7 @@
result(success) bind(C,name="elpa_solve_evp_complex_1stage") result(success) bind(C,name="elpa_solve_evp_complex_1stage")
use, intrinsic :: iso_c_binding use, intrinsic :: iso_c_binding
use elpa1, only : solve_evp_complex use elpa1, only : elpa_solve_evp_complex_1stage
implicit none implicit none
integer(kind=c_int) :: success integer(kind=c_int) :: success
...@@ -216,7 +216,7 @@ ...@@ -216,7 +216,7 @@
logical :: successFortran logical :: successFortran
successFortran = solve_evp_complex(na, nev, a, lda, ev, q, ldq, nblk, matrixCols, mpi_comm_rows, mpi_comm_cols) successFortran = elpa_solve_evp_complex_1stage(na, nev, a, lda, ev, q, ldq, nblk, matrixCols, mpi_comm_rows, mpi_comm_cols)
if (successFortran) then if (successFortran) then
success = 1 success = 1
......
...@@ -285,8 +285,8 @@ program read_real ...@@ -285,8 +285,8 @@ program read_real
! Calculate eigenvalues/eigenvectors ! Calculate eigenvalues/eigenvectors
call mpi_barrier(mpi_comm_world, mpierr) ! for correct timings only call mpi_barrier(mpi_comm_world, mpierr) ! for correct timings only
call solve_evp_real_1stage(na, nev, a, na_rows, ev, z, na_rows, nblk, & call elpa_solve_evp_real_1stage(na, nev, a, na_rows, ev, z, na_rows, nblk, &
mpi_comm_rows, mpi_comm_cols) mpi_comm_rows, mpi_comm_cols)
if(myid == 0) print *,'Time tridiag_real :',time_evp_fwd if(myid == 0) print *,'Time tridiag_real :',time_evp_fwd
if(myid == 0) print *,'Time solve_tridi :',time_evp_solve if(myid == 0) print *,'Time solve_tridi :',time_evp_solve
......
...@@ -256,7 +256,7 @@ program test_complex ...@@ -256,7 +256,7 @@ program test_complex
#ifdef WITH_MPI #ifdef WITH_MPI
call mpi_barrier(mpi_comm_world, mpierr) ! for correct timings only call mpi_barrier(mpi_comm_world, mpierr) ! for correct timings only
#endif #endif
success = solve_evp_complex_1stage(na, nev, a, na_rows, ev, z, na_rows, nblk, & success = elpa_solve_evp_complex_1stage(na, nev, a, na_rows, ev, z, na_rows, nblk, &
na_cols, mpi_comm_rows, mpi_comm_cols) na_cols, mpi_comm_rows, mpi_comm_cols)
if (.not.(success)) then if (.not.(success)) then
......
...@@ -247,7 +247,7 @@ program test_real ...@@ -247,7 +247,7 @@ program test_real
#ifdef WITH_MPI #ifdef WITH_MPI
call mpi_barrier(mpi_comm_world, mpierr) ! for correct timings only call mpi_barrier(mpi_comm_world, mpierr) ! for correct timings only
#endif #endif
success = solve_evp_real_1stage(na, nev, a, na_rows, ev, z, na_rows, nblk, & success = elpa_solve_evp_real_1stage(na, nev, a, na_rows, ev, z, na_rows, nblk, &
na_cols, mpi_comm_rows, mpi_comm_cols) na_cols, mpi_comm_rows, mpi_comm_cols)
if (.not.(success)) then if (.not.(success)) then
......
...@@ -304,7 +304,7 @@ program test_real ...@@ -304,7 +304,7 @@ program test_real
#ifdef WITH_MPI #ifdef WITH_MPI
call mpi_barrier(mpi_comm_world, mpierr) ! for correct timings only call mpi_barrier(mpi_comm_world, mpierr) ! for correct timings only
#endif #endif
success = solve_evp_real_1stage(na, nev, a, na_rows, ev, z, na_rows, nblk, & success = elpa_solve_evp_real_1stage(na, nev, a, na_rows, ev, z, na_rows, nblk, &
na_cols, mpi_comm_rows, mpi_comm_cols) na_cols, mpi_comm_rows, mpi_comm_cols)
if (.not.(success)) then if (.not.(success)) then
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment