diff --git a/Makefile.am b/Makefile.am index de6a1149574ec23973d6d56c4e641ae34f929b2c..9220e482634dfa9c59023e22bc20f274af681c79 100644 --- a/Makefile.am +++ b/Makefile.am @@ -94,6 +94,13 @@ elpa_includedir = $(includedir)/elpa@SUFFIX@-@PACKAGE_VERSION@ nobase_elpa_include_HEADERS = $(wildcard modules/*) nobase_elpa_include_HEADERS += elpa/elpa.h elpa/elpa_kernel_constants.h elpa/elpa_generated.h +man_MANS = man/solve_evp_real.3 \ + man/solve_evp_complex.3 \ + man/solve_evp_real_2stage.3 \ + man/solve_evp_complex_2stage.3 \ + man/get_elpa_row_col_comms.3 \ + man/print_available_elpa2_kernels.1 + # other files to distribute filesdir = $(docdir)/examples dist_files_DATA = \ diff --git a/man/get_elpa_row_col_comms.3 b/man/get_elpa_row_col_comms.3 new file mode 100644 index 0000000000000000000000000000000000000000..1ded36d20b4af513db37329841cc75d59912ebb0 --- /dev/null +++ b/man/get_elpa_row_col_comms.3 @@ -0,0 +1,59 @@ +.TH "get_elpa_row_col_comms" 3 "Wed Dec 2 2015" "ELPA" \" -*- nroff -*- +.ad l +.nh +.SH NAME +get_elpa_row_col_comms \- get the MPI row and column communicators needed in ELPA +.br + +.SH SYNOPSIS +.br +.SS FORTRAN INTERFACE +use elpa1 + +.br +.RI "success = \fBget_elpa_row_col_comms\fP (mpi_comm_global, my_prow, my_pcol, mpi_comm_rows, mpi_comm_cols)" + +.br +.br +.RI "integer, intent(in) \fBmpi_comm_global\fP: global communicator for the calculation" +.br +.RI "integer, intent(in) \fBmy_prow\fP: row coordinate of the calling process in the process grid" +.br +.RI "integer, intent(in) \fBmy_pcol\fP: column coordinate of the calling process in the process grid" +.br +.RI "integer, intent(out) \fBmpi_comm_row\fP: communicator for communication within rows of processes" +.br +.RI "integer, intent(out) \fBmpi_comm_row\fP: communicator for communication within columns of processes" +.br + +.RI "integer \fBsuccess\fP: return value indicating success or failure of the underlying MPI_COMM_SPLIT function" + +.SS C INTERFACE +#include "elpa_generated.h" + +.br +.RI "success = \fBelpa_get_communicators\fP (int mpi_comm_world, int my_prow, my_pcol, int *mpi_comm_rows, int *Pmpi_comm_cols);" + +.br +.br +.RI "int \fBmpi_comm_global\fP: global communicator for the calculation" +.br +.RI "int \fBmy_prow\fP: row coordinate of the calling process in the process grid" +.br +.RI "int \fBmy_pcol\fP: column coordinate of the calling process in the process grid" +.br +.RI "int *\fBmpi_comm_row\fP: pointer to the communicator for communication within rows of processes" +.br +.RI "int *\fBmpi_comm_row\fP: pointer to the communicator for communication within columns of processes" +.br + +.RI "int \fBsuccess\fP: return value indicating success or failure of the underlying MPI_COMM_SPLIT function" + + + + +.SH DESCRIPTION +All ELPA routines need MPI communicators for communicating within rows or columns of processes. These communicators are created from the \fBmpi_comm_global\fP communicator. It is assumed that the matrix used in ELPA is distributed with \fBmy_prow\fP rows and \fBmy_pcol\fP columns on the calling process. This function has to be envoked by all involved processes before any other calls to ELPA routines. +.br +.SH "SEE ALSO" +\fBsolve_evp_real\fP(3) \fBsolve_evp_complex\fP(3) \fBsolve_evp_real_2stage\fP(3) \fBsolve_evp_complex_2stage\fP(3) \fBprint_available_elpa2_kernels\fP(1) diff --git a/man/print_available_elpa2_kernels.1 b/man/print_available_elpa2_kernels.1 new file mode 100644 index 0000000000000000000000000000000000000000..e391fb30eee247ebc565d79f8f9262f9c82828a7 --- /dev/null +++ b/man/print_available_elpa2_kernels.1 @@ -0,0 +1,27 @@ +.TH "print_available_elpa2_kernels" 1 "Wed Dec 2 2015" "ELPA" \" -*- nroff -*- +.ad l +.nh +.SH NAME +print_available_elpa2_kernels \- Provide information which ELPA2 kernels are available on this system\&. + +.SH SYNOPSIS +.br +print_available_elpa2_kernels +.br + +.SH "Description" +.PP +Provide information which ELPA2 kernels are available on this system. +.br +It is possible to configure ELPA2 such, that different compute intensive 'ELPA2 kernels' can be choosen at runtime. The service binary print_available_elpa2_kernels will query the library and tell whether ELPA2 has been configured in this way, and if this is the case which kernels can be choosen at runtime. It will furthermore detail whether ELPA has been configured with OpenMP support. +.SH "Options" +.PP +.br +none +.SH "Author" +A. Marek, MPCDF +.SH "Reporting bugs" +Report bugs to the ELPA mail elpa-library@mpcdf.mpg.de +.SH "SEE ALSO" +\fBget_elpa_row_col_comms\fP(3) \fBsolve_evp_real\fP(3) \fBsolve_evp_complex\fP(3) \fBsolve_evp_real_2stage\fP(3) \fBsolve_evp_complex_2stage\fP(3) + diff --git a/man/solve_evp_complex.3 b/man/solve_evp_complex.3 new file mode 100644 index 0000000000000000000000000000000000000000..13c0aa263eb994f370177e506c0138b3a781a9e5 --- /dev/null +++ b/man/solve_evp_complex.3 @@ -0,0 +1,88 @@ +.TH "solve_evp_complex" 3 "Wed Dec 2 2015" "ELPA" \" -*- nroff -*- +.ad l +.nh +.SH NAME +solve_evp_complex \- solve the complex eigenvalue problem with the 1-stage ELPA solver +.br + +.SH SYNOPSIS +.br +.SS FORTRAN INTERFACE +use elpa1 +.br +.br +.RI "success = \fBsolve_evp_complex\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 \fBget_elpa_row_col_comms\fP(3)" +.br +.RI "integer, intent(in) \fBmpi_comm_cols\fP: communicator for communication in colums. Constructed with \fBget_elpa_row_col_comms\fP(3)" +.br + +.RI "logical \fBsuccess\fP: return value indicating success or failure" +.br +.SS C INTERFACE +#include "elpa.h" +.br +#include + +.br +.RI "success = \fBsolve_evp_complex_stage1\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 \fBget_elpa_row_col_comms\fP(3)" +.br +.RI "int \fBmpi_comm_cols\fP: communicator for communication in colums. Constructed with \fBget_elpa_row_col_comms\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 \fBget_elpa_row_col_comms\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 +.SH "SEE ALSO" +\fBget_elpa_row_col_comms\fP(3) \fBsolve_evp_real\fP(3) \fBsolve_evp_real_2stage\fP(3) \fBsolve_evp_complex_2stage\fP(3) \fBprint_available_elpa2_kernels\fP(1) diff --git a/man/solve_evp_complex_2stage.3 b/man/solve_evp_complex_2stage.3 new file mode 100644 index 0000000000000000000000000000000000000000..73198ec316919359332bfe1bf226914f7934ba17 --- /dev/null +++ b/man/solve_evp_complex_2stage.3 @@ -0,0 +1,91 @@ +.TH "solve_evp_complex_2stage" 3 "Wed Dec 2 2015" "ELPA" \" -*- nroff -*- +.ad l +.nh +.SH NAME +solve_evp_complex_2stage \- solve the complex eigenvalue problem with the 2-stage ELPA solver +.br + +.SH SYNOPSIS +.br +.SS FORTRAN INTERFACE +use elpa1 +use elpa2 +.br +.br +.RI "success = \fBsolve_evp_real_2stage\fP (na, nev, a(lda,matrixCols), ev(nev), q(ldq, matrixCols), ldq, nblk, matrixCols, mpi_comm_rows, mpi_comm_cols, mpi_comm_all, THIS_REAL_ELPA_KERNEL)" +.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 \fBget_elpa_row_col_comms\fP(3)" +.br +.RI "integer, intent(in) \fBmpi_comm_cols\fP: communicator for communication in colums. Constructed with \fBget_elpa_row_col_comms\fP(3)" +.br +.RI "integer, intent(in) \fBmpi_comm_all\fP: communicator for all processes in the processor set involved in ELPA" +.br +.RI "logical \fBsuccess\fP: return value indicating success or failure" +.br +.SS C INTERFACE +#include "elpa.h" +.br +#include + +.br +.RI "success = \fBsolve_evp_complex_stage2\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, \fBint\fP mpi_comm_all, \fBint\fP THIS_ELPA_REAL_KERNEL);" +.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 \fBget_elpa_row_col_comms\fP(3)" +.br +.RI "int \fBmpi_comm_cols\fP: communicator for communication in colums. Constructed with \fBget_elpa_row_col_comms\fP(3)" +.br +.RI "int \fBmpi_comm_all\fP: communicator for all processes in the processor set involved in ELPA" +.br +.RI "int \fBsuccess\fP: return value indicating success (1) or failure (0) + +.SH DESCRIPTION +Solve the complex eigenvalue problem with the 2-stage solver. The ELPA communicators \fBmpi_comm_rows\fP and \fBmpi_comm_cols\fP are obtained with the \fBget_elpa_row_col_comms\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 +.SH "SEE ALSO" +\fBget_elpa_row_col_comms\fP(3) \fBsolve_evp_real\fP(3) \fBsolve_evp_complex\fP(3) \fBsolve_evp_real_2stage\fP(3) \fBprint_available_elpa2_kernels\fP(1) diff --git a/man/solve_evp_real.3 b/man/solve_evp_real.3 new file mode 100644 index 0000000000000000000000000000000000000000..61ee69cd5c879ac12c533cf3370b81298c371e55 --- /dev/null +++ b/man/solve_evp_real.3 @@ -0,0 +1,86 @@ +.TH "solve_evp_real" 3 "Wed Dec 2 2015" "ELPA" \" -*- nroff -*- +.ad l +.nh +.SH NAME +solve_evp_real \- solve the real eigenvalue problem with the 1-stage ELPA solver +.br + +.SH SYNOPSIS +.br +.SS FORTRAN INTERFACE +use elpa1 +.br +.br +.RI "success = \fBsolve_evp_real\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 \fBget_elpa_row_col_comms\fP(3)" +.br +.RI "integer, intent(in) \fBmpi_comm_cols\fP: communicator for communication in colums. Constructed with \fBget_elpa_row_col_comms\fP(3)" +.br + +.RI "logical \fBsuccess\fP: return value indicating success or failure" +.br +.SS C INTERFACE +#include "elpa.h" + +.br +.RI "success = \fBsolve_evp_real_stage1\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 \fBget_elpa_row_col_comms\fP(3)" +.br +.RI "int \fBmpi_comm_cols\fP: communicator for communication in colums. Constructed with \fBget_elpa_row_col_comms\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 \fBget_elpa_row_col_comms\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 +.SH "SEE ALSO" +\fBget_elpa_row_col_comms\fP(3) \fBsolve_evp_complex\fP(3) \fBsolve_evp_real_2stage\fP(3) \fBsolve_evp_complex_2stage\fP(3) \fBprint_available_elpa2_kernels\fP(1) diff --git a/man/solve_evp_real_2stage.3 b/man/solve_evp_real_2stage.3 new file mode 100644 index 0000000000000000000000000000000000000000..c0b30eb63d9862925402809420f190a3a228eae0 --- /dev/null +++ b/man/solve_evp_real_2stage.3 @@ -0,0 +1,93 @@ +.TH "solve_evp_real_2stage" 3 "Wed Dec 2 2015" "ELPA" \" -*- nroff -*- +.ad l +.nh +.SH NAME +solve_evp_real_2stage \- solve the real eigenvalue problem with the 2-stage ELPA solver +.br + +.SH SYNOPSIS +.br +.SS FORTRAN INTERFACE +use elpa1 +use elpa2 +.br +.br +.RI "success = \fBsolve_evp_real_2stage\fP (na, nev, a(lda,matrixCols), ev(nev), q(ldq, matrixCols), ldq, nblk, matrixCols, mpi_comm_rows, mpi_comm_cols, mpi_comm_all, THIS_REAL_ELPA_KERNEL, useQr=useQR)" +.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 \fBget_elpa_row_col_comms\fP(3)" +.br +.RI "integer, intent(in) \fBmpi_comm_cols\fP: communicator for communication in colums. Constructed with \fBget_elpa_row_col_comms\fP(3)" +.br +.RI "integer, intent(in) \fBmpi_comm_all\fP: communicator for all processes in the processor set involved in ELPA" +.br +.RI "logical, intent(in), optional: \fBuseQR\fP: optional argument; switches to QR-decomposition if set to .true." + +.RI "logical \fBsuccess\fP: return value indicating success or failure" +.br +.SS C INTERFACE +#include "elpa.h" + +.br +.RI "success = \fBsolve_evp_real_stage2\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, \fBint\fP mpi_comm_all, \fBint\fP THIS_ELPA_REAL_KERNEL, \fBint\fP useQr);" +.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 \fBget_elpa_row_col_comms\fP(3)" +.br +.RI "int \fBmpi_comm_cols\fP: communicator for communication in colums. Constructed with \fBget_elpa_row_col_comms\fP(3)" +.br +.RI "int \fBmpi_comm_all\fP: communicator for all processes in the processor set involved in ELPA" +.br +.RI "int \fBuseQR\fP: if set to 1 switch to QR-decomposition" + +.RI "int \fBsuccess\fP: return value indicating success (1) or failure (0) + +.SH DESCRIPTION +Solve the real eigenvalue problem with the 2-stage solver. The ELPA communicators \fBmpi_comm_rows\fP and \fBmpi_comm_cols\fP are obtained with the \fBget_elpa_row_col_comms\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 +.SH "SEE ALSO" +\fBget_elpa_row_col_comms\fP(3) \fBsolve_evp_real\fP(3) \fBsolve_evp_complex\fP(3) \fBsolve_evp_complex_2stage\fP(3) \fBprint_available_elpa2_kernels\fP(1)