|
SCIP-SDP
3.2.0
|
interface methods for eigenvector computation and matrix multiplication using openblas More...
Go to the source code of this file.
Macros | |
| #define | BMS_CALL(x) |
| #define | SCIP_RealTOINT(x) ((LAPACKINTTYPE) (x + 0.5)) |
Typedefs | |
| typedef int | LAPACKINTTYPE |
Functions | |
Functions | |
| SCIP_RETCODE | SCIPlapackComputeEigenvectorDecomposition (BMS_BUFMEM *bufmem, int n, SCIP_Real *A, SCIP_Real *eigenvalues, SCIP_Real *eigenvectors) |
| SCIP_RETCODE | SCIPlapackMatrixVectorMult (int nrows, int ncols, SCIP_Real *matrix, SCIP_Real *vector, SCIP_Real *result) |
| SCIP_RETCODE | SCIPlapackMatrixMatrixMult (int nrowsA, int ncolsA, SCIP_Real *matrixA, SCIP_Bool transposeA, int nrowsB, int ncolsB, SCIP_Real *matrixB, SCIP_Bool transposeB, SCIP_Real *result) |
| SCIP_RETCODE | SCIPlapackLinearSolve (BMS_BUFMEM *bufmem, int m, int n, SCIP_Real *A, SCIP_Real *b, SCIP_Real *x) |
interface methods for eigenvector computation and matrix multiplication using openblas
This file is used to call the LAPACK routine DSYEVR (double-symmetric-eigenvector computation) and the BLAS routine DGEMV (double-general-matrix-vector multiplication).
If a version of openblas/lapack with 64 bit integers is used in connection with SDPA, then one should define LAPACK_LONGLONGINT. Note that one cannot detect the precision with which openblas/lapack is compiled, so this define is essential for correct functioning (resulting in a segmentation fault otherwise).
Definition in file lapack_interface.c.
| #define BMS_CALL | ( | x | ) |
Checks if a BMSallocMemory-call was successfull, otherwise returns SCIP_NOMEMORY
Definition at line 73 of file lapack_interface.c.
Referenced by SCIPlapackComputeEigenvectorDecomposition(), and SCIPlapackLinearSolve().
| #define SCIP_RealTOINT | ( | x | ) | ((LAPACKINTTYPE) (x + 0.5)) |
transforms a SCIP_Real (that should be integer, but might be off by some numerical error) to an integer by adding an epsilon and rounding down
Definition at line 84 of file lapack_interface.c.
Referenced by SCIPlapackComputeEigenvectorDecomposition(), and SCIPlapackLinearSolve().
| typedef int LAPACKINTTYPE |
Definition at line 68 of file lapack_interface.c.
| SCIP_RETCODE SCIPlapackComputeEigenvectorDecomposition | ( | BMS_BUFMEM * | bufmem, |
| int | n, | ||
| SCIP_Real * | A, | ||
| SCIP_Real * | eigenvalues, | ||
| SCIP_Real * | eigenvectors | ||
| ) |
computes the eigenvector decomposition of a symmetric matrix using LAPACK
| bufmem | buffer memory |
| n | size of matrix |
| A | matrix for which the decomposition should be computed |
| eigenvalues | pointer to store eigenvalues (should be length n) |
| eigenvectors | pointer to store eigenvectors (should be length n*n), eigenvectors are given as rows |
Definition at line 250 of file lapack_interface.c.
References BMS_CALL, F77_FUNC, and SCIP_RealTOINT.
Referenced by calcRelax(), and SCIP_DECL_CONSCHECK().
| SCIP_RETCODE SCIPlapackMatrixVectorMult | ( | int | nrows, |
| int | ncols, | ||
| SCIP_Real * | matrix, | ||
| SCIP_Real * | vector, | ||
| SCIP_Real * | result | ||
| ) |
performs matrix-vector-multiplication using BLAS
| nrows | number of rows in matrix |
| ncols | number of cols in matrix |
| matrix | the matrix we want to multiply |
| vector | vector we want to multiply with the matrix |
| result | pointer to store the resulting vector |
Definition at line 354 of file lapack_interface.c.
References F77_FUNC.
Referenced by cutUsingEigenvector().
| SCIP_RETCODE SCIPlapackMatrixMatrixMult | ( | int | nrowsA, |
| int | ncolsA, | ||
| SCIP_Real * | matrixA, | ||
| SCIP_Bool | transposeA, | ||
| int | nrowsB, | ||
| int | ncolsB, | ||
| SCIP_Real * | matrixB, | ||
| SCIP_Bool | transposeB, | ||
| SCIP_Real * | result | ||
| ) |
performs matrix-matrix-multiplication A*B using BLAS
| nrowsA | number of rows in matrix A |
| ncolsA | number of cols in matrix A |
| matrixA | matrix A given as nrowsA * ncolsA array |
| transposeA | Should matrix A be transposed before multiplication? |
| nrowsB | number of rows in matrix B |
| ncolsB | number of cols in matrix B |
| matrixB | matrix B given as ncolsA * ncolsB array |
| transposeB | Should matrix B be transposed before multiplication? |
| result | pointer to nrowsA * nrowsB array to store the resulting matrix |
Definition at line 393 of file lapack_interface.c.
References F77_FUNC.
Referenced by calcRelax(), and SCIP_DECL_CONSCHECK().
| SCIP_RETCODE SCIPlapackLinearSolve | ( | BMS_BUFMEM * | bufmem, |
| int | m, | ||
| int | n, | ||
| SCIP_Real * | A, | ||
| SCIP_Real * | b, | ||
| SCIP_Real * | x | ||
| ) |
computes the minimum-norm solution to a real linear least squares problem: minimize 2-norm(| b - A*x |) using LAPACK (uses singular value decomposition of A). A is an M-by-N matrix which may be rank-deficient.
| bufmem | buffer memory |
| m | number of rows of A |
| n | number of columns of A |
| A | coefficient matrix of the linear system |
| b | right-hand side of the linear system (should be length max(m,n)) |
| x | pointer to store values for x (should be length n) |
Definition at line 438 of file lapack_interface.c.
References BMS_CALL, F77_FUNC, and SCIP_RealTOINT.
Referenced by SCIP_DECL_CONSCHECK().
1.8.11