EigenvalueSoLversforPetaflop-Applications(ELPA)  2016.05.003
elpa_generated.h
Go to the documentation of this file.
1  #include <complex.h>
10  int elpa_get_communicators(int mpi_comm_world, int my_prow, int my_pcol, int *mpi_comm_rows, int *mpi_comm_cols);
11  #include <complex.h>
20  int get_elpa_communicators(int mpi_comm_world, int my_prow, int my_pcol, int *mpi_comm_rows, int *mpi_comm_cols);
43  int elpa_solve_evp_real_1stage(int na, int nev, double *a, int lda, double *ev, double *q, int ldq, int nblk, int matrixCols, int mpi_comm_rows, int mpi_comm_cols);
66  int elpa_solve_evp_complex_1stage(int na, int nev, double complex *a, int lda, double *ev, double complex *q, int ldq, int nblk, int matrixCols, int mpi_comm_rows, int mpi_comm_cols);
92  int elpa_solve_evp_real_2stage(int na, int nev, double *a, int lda, double *ev, double *q, int ldq, int nblk, int matrixCols, int mpi_comm_rows, int mpi_comm_cols, int mpi_comm_all, int THIS_REAL_ELPA_KERNEL_API, int useQR);
118  int elpa_solve_evp_complex_2stage(int na, int nev, double complex *a, int lda, double *ev, double complex *q, int ldq, int nblk, int matrixCols, int mpi_comm_rows, int mpi_comm_cols, int mpi_comm_all, int THIS_COMPLEX_ELPA_KERNEL_API);
119  /*
120  \brief C interface to solve tridiagonal eigensystem with divide and conquer method
121  \details
122 
123  \param na Matrix dimension
124  \param nev number of eigenvalues/vectors to be computed
125  \param d array d(na) on input diagonal elements of tridiagonal matrix, on
126  output the eigenvalues in ascending order
127  \param e array e(na) on input subdiagonal elements of matrix, on exit destroyed
128  \param q on exit : matrix q(ldq,matrixCols) contains the eigenvectors
129  \param ldq leading dimension of matrix q
130  \param nblk blocksize of cyclic distribution, must be the same in both directions!
131  \param matrixCols columns of matrix q
132  \param mpi_comm_rows MPI communicator for rows
133  \param mpi_comm_cols MPI communicator for columns
134  \param wantDebug give more debug information if 1, else 0
135  \result success int 1 on success, else 0
136  */
137  int elpa_solve_tridi(int na, int nev, double *d, double *e, double *q, int ldq, int nblk, int matrixCols, int mpi_comm_rows, int mpi_comm_cols, int wantDebug);
138  /*
139  \brief C interface for elpa_mult_at_b_real: Performs C : = A**T * B
140  where A is a square matrix (na,na) which is optionally upper or lower triangular
141  B is a (na,ncb) matrix
142  C is a (na,ncb) matrix where optionally only the upper or lower
143  triangle may be computed
144  \details
145  \param uplo_a 'U' if A is upper triangular
146  'L' if A is lower triangular
147  anything else if A is a full matrix
148  Please note: This pertains to the original A (as set in the calling program)
149  whereas the transpose of A is used for calculations
150  If uplo_a is 'U' or 'L', the other triangle is not used at all,
151  i.e. it may contain arbitrary numbers
152  \param uplo_c 'U' if only the upper diagonal part of C is needed
153  'L' if only the upper diagonal part of C is needed
154  anything else if the full matrix C is needed
155  Please note: Even when uplo_c is 'U' or 'L', the other triangle may be
156  written to a certain extent, i.e. one shouldn't rely on the content there!
157  \param na Number of rows/columns of A, number of rows of B and C
158  \param ncb Number of columns of B and C
159  \param a matrix a
160  \param lda leading dimension of matrix a
161  \param b matrix b
162  \param ldb leading dimension of matrix b
163  \param nblk blocksize of cyclic distribution, must be the same in both directions!
164  \param mpi_comm_rows MPI communicator for rows
165  \param mpi_comm_cols MPI communicator for columns
166  \param c matrix c
167  \param ldc leading dimension of matrix c
168  \result success int report success (1) or failure (0)
169  */
170  int elpa_mult_at_b_real(char uplo_a, char uplo_c, int na, int ncb, double *a, int lda, double *b, int ldb, int nlbk, int mpi_comm_rows, int mpi_comm_cols, double *c, int ldc);
171  /*
172  \brief C interface for elpa_mult_ah_b_complex: Performs C : = A**H * B
173  where A is a square matrix (na,na) which is optionally upper or lower triangular
174  B is a (na,ncb) matrix
175  C is a (na,ncb) matrix where optionally only the upper or lower
176  triangle may be computed
177  \details
178 
179  \param uplo_a 'U' if A is upper triangular
180  'L' if A is lower triangular
181  anything else if A is a full matrix
182  Please note: This pertains to the original A (as set in the calling program)
183  whereas the transpose of A is used for calculations
184  If uplo_a is 'U' or 'L', the other triangle is not used at all,
185  i.e. it may contain arbitrary numbers
186  \param uplo_c 'U' if only the upper diagonal part of C is needed
187  'L' if only the upper diagonal part of C is needed
188  anything else if the full matrix C is needed
189  Please note: Even when uplo_c is 'U' or 'L', the other triangle may be
190  written to a certain extent, i.e. one shouldn't rely on the content there!
191  \param na Number of rows/columns of A, number of rows of B and C
192  \param ncb Number of columns of B and C
193  \param a matrix a
194  \param lda leading dimension of matrix a
195  \param b matrix b
196  \param ldb leading dimension of matrix b
197  \param nblk blocksize of cyclic distribution, must be the same in both directions!
198  \param mpi_comm_rows MPI communicator for rows
199  \param mpi_comm_cols MPI communicator for columns
200  \param c matrix c
201  \param ldc leading dimension of matrix c
202  \result success int reports success (1) or failure (0)
203  */
204  int elpa_mult_ah_b_complex(char uplo_a, char uplo_c, int na, int ncb, double complex *a, int lda, double complex *b, int ldb, int nblk, int mpi_comm_rows, int mpi_comm_cols, double complex *c, int ldc);
205  /*
206  \brief C interface to elpa_invert_trm_real: Inverts a upper triangular matrix
207  \details
208  \param na Order of matrix
209  \param a(lda,matrixCols) Distributed matrix which should be inverted
210  Distribution is like in Scalapack.
211  Only upper triangle is needs to be set.
212  The lower triangle is not referenced.
213  \param lda Leading dimension of a
214  \param matrixCols local columns of matrix a
215  \param nblk blocksize of cyclic distribution, must be the same in both directions!
216  \param mpi_comm_rows MPI communicator for rows
217  \param mpi_comm_cols MPI communicator for columns
218  \param wantDebug int more debug information on failure if 1, else 0
219  \result succes int reports success (1) or failure (0)
220  */
221  int elpa_invert_trm_real(int na, double *a, int lda, int nblk, int matrixCols, int mpi_comm_rows, int mpi_comm_cols, int wantDebug);
222  /*
223  \brief C interface to elpa_invert_trm_complex: Inverts a complex upper triangular matrix
224  \details
225  \param na Order of matrix
226  \param a(lda,matrixCols) Distributed matrix which should be inverted
227  Distribution is like in Scalapack.
228  Only upper triangle is needs to be set.
229  The lower triangle is not referenced.
230  \param lda Leading dimension of a
231  \param matrixCols local columns of matrix a
232  \param nblk blocksize of cyclic distribution, must be the same in both directions!
233  \param mpi_comm_rows MPI communicator for rows
234  \param mpi_comm_cols MPI communicator for columns
235  \param wantDebug int more debug information on failure if 1, else 0
236  \result succes int reports success (1) or failure (0)
237  */
238  int elpa_invert_trm_complex(int na, double complex *a, int lda, int nblk, int matrixCols, int mpi_comm_rows, int mpi_comm_cols, int wantDebug);
239  /*
240  \brief elpa_cholesky_real: Cholesky factorization of a real symmetric matrix
241  \details
242 
243  \param na Order of matrix
244  \param a(lda,matrixCols) Distributed matrix which should be factorized.
245  Distribution is like in Scalapack.
246  Only upper triangle is needs to be set.
247  On return, the upper triangle contains the Cholesky factor
248  and the lower triangle is set to 0.
249  \param lda Leading dimension of a
250  \param matrixCols local columns of matrix a
251  \param nblk blocksize of cyclic distribution, must be the same in both directions!
252  \param mpi_comm_rows MPI communicator for rows
253  \param mpi_comm_cols MPI communicator for columns
254  \param wantDebug int more debug information on failure if 1, else 0
255  \result succes int reports success (1) or failure (0)
256  */
257  int elpa_cholesky_real(int na, double *a, int lda, int nblk, int matrixCols, int mpi_comm_rows, int mpi_comm_cols, int wantDebug);
258  /*
259  \brief C interface elpa_cholesky_complex: Cholesky factorization of a complex hermitian matrix
260  \details
261  \param na Order of matrix
262  \param a(lda,matrixCols) Distributed matrix which should be factorized.
263  Distribution is like in Scalapack.
264  Only upper triangle is needs to be set.
265  On return, the upper triangle contains the Cholesky factor
266  and the lower triangle is set to 0.
267  \param lda Leading dimension of a
268  \param matrixCols local columns of matrix a
269  \param nblk blocksize of cyclic distribution, must be the same in both directions!
270  \param mpi_comm_rows MPI communicator for rows
271  \param mpi_comm_cols MPI communicator for columns
272  \param wantDebug int more debug information on failure, if 1, else 0
273  \result succes int reports success (1) or failure (0)
274  */
275  int elpa_cholesky_complex(int na, double complex *a, int lda, int nblk, int matrixCols, int mpi_comm_rows, int mpi_comm_cols, int wantDebug);
int elpa_cholesky_complex(int na, double complex *a, int lda, int nblk, int matrixCols, int mpi_comm_rows, int mpi_comm_cols, int wantDebug)
int elpa_cholesky_real(int na, double *a, int lda, int nblk, int matrixCols, int mpi_comm_rows, int mpi_comm_cols, int wantDebug)
int elpa_invert_trm_real(int na, double *a, int lda, int nblk, int matrixCols, int mpi_comm_rows, int mpi_comm_cols, int wantDebug)
int elpa_mult_at_b_real(char uplo_a, char uplo_c, int na, int ncb, double *a, int lda, double *b, int ldb, int nlbk, int mpi_comm_rows, int mpi_comm_cols, double *c, int ldc)
int elpa_solve_evp_complex_2stage(int na, int nev, double complex *a, int lda, double *ev, double complex *q, int ldq, int nblk, int matrixCols, int mpi_comm_rows, int mpi_comm_cols, int mpi_comm_all, int THIS_COMPLEX_ELPA_KERNEL_API)
C interface to solve the complex eigenvalue problem with 2-stage solver.
int elpa_get_communicators(int mpi_comm_world, int my_prow, int my_pcol, int *mpi_comm_rows, int *mpi_comm_cols)
C old, deprecated interface to create the MPI communicators for ELPA.
int elpa_solve_tridi(int na, int nev, double *d, double *e, double *q, int ldq, int nblk, int matrixCols, int mpi_comm_rows, int mpi_comm_cols, int wantDebug)
int elpa_solve_evp_complex_1stage(int na, int nev, double complex *a, int lda, double *ev, double complex *q, int ldq, int nblk, int matrixCols, int mpi_comm_rows, int mpi_comm_cols)
C interface to solve the complex eigenvalue problem with 1-stage solver.
int elpa_mult_ah_b_complex(char uplo_a, char uplo_c, int na, int ncb, double complex *a, int lda, double complex *b, int ldb, int nblk, int mpi_comm_rows, int mpi_comm_cols, double complex *c, int ldc)
int get_elpa_communicators(int mpi_comm_world, int my_prow, int my_pcol, int *mpi_comm_rows, int *mpi_comm_cols)
C interface to create the MPI communicators for ELPA.
int elpa_solve_evp_real_2stage(int na, int nev, double *a, int lda, double *ev, double *q, int ldq, int nblk, int matrixCols, int mpi_comm_rows, int mpi_comm_cols, int mpi_comm_all, int THIS_REAL_ELPA_KERNEL_API, int useQR)
C interface to solve the real eigenvalue problem with 2-stage solver.
int elpa_solve_evp_real_1stage(int na, int nev, double *a, int lda, double *ev, double *q, int ldq, int nblk, int matrixCols, int mpi_comm_rows, int mpi_comm_cols)
C interface to solve the real eigenvalue problem with 1-stage solver.
int elpa_invert_trm_complex(int na, double complex *a, int lda, int nblk, int matrixCols, int mpi_comm_rows, int mpi_comm_cols, int wantDebug)