Commit 9e896d59 authored by PRUVOST Florent's avatar PRUVOST Florent

update API with new functions and some bried comment about linear algebra routines

parent 62471d52
...@@ -712,17 +712,100 @@ ...@@ -712,17 +712,100 @@
*MORSE_name[_Tile[_Async]]* (/name/ follows LAPACK naming scheme, see *MORSE_name[_Tile[_Async]]* (/name/ follows LAPACK naming scheme, see
http://www.netlib.org/lapack/lug/node24.html) that can be used http://www.netlib.org/lapack/lug/node24.html) that can be used
with the Chameleon library. For details about these functions with the Chameleon library. For details about these functions
please refer to the doxygen documentation. please refer to the doxygen documentation. /name/ can be one of the
* BLAS 3: geadd, gemm, heevd, hemm, her2k, herk, hetrd, lascal, following:
symm, syr2k, syrk, tradd, trmm, trsm, trsmpl, tradd * geadd: matrix matrix addition
* LAPACK: gelqf, gelqfrh, gelqf_param, gelqs, gelqs_param, gels, * gelqf: LQ factorization
gels_param, geqrf, geqrfrh, geqrf_param, geqrs, geqrs_param, * gelqf_param: gelqf with hqr
gesv_incpiv, gesv_nopiv, gesvd, getrf_incpiv, getrf_nopiv, * gelqs: computes a minimum-norm solution min || A*X - B || using
getrs_incpiv, getrs_nopiv, lacpy, lange, lanhe, lansy, lantr, the LQ factorization
laset2, laset, lauum, plghe, plgsy, plrnt, potrf, potri, * gelqs_param: gelqs with hqr
potrimm, potrs, sysv, sytrf, sytrs, tpqrt, tpgqrt, trtri, * gels: solves overdetermined or underdetermined linear systems
unglq, unglq_param, unglqrh, ungqr, ungqr_param, ungqrrh, using LQ or QR
unmlq, unmlq_param, unmlqrh, unmqr, unmqr_param, unmqrrh * gels_param: gels with hqr
* gemm: matrix matrix multiply and addition
* geqrf: QR factorization
* geqrf_param: geqrf with hqr
* geqrs: computes a minimum-norm solution min || A*X - B || using
the RQ factorization
* geqrs_param: geqrs with hqr
* gesv_incpiv: linear systems solving with LU factorization and
partial pivoting
* gesv_nopiv: linear systems solving with LU factorization and
without pivoting
* gesvd: singular value decomposition
* getrf_incpiv: LU factorization with partial pivoting
* getrf_nopiv: LU factorization without pivoting
* getrs_incpiv: linear systems solving using existing LU
factorization with partial pivoting
* getrs_nopiv: linear systems solving using existing LU
factorization without pivoting
* hemm: gemm with A Hermitian
* herk: rank k operations with A Hermitian
* her2k: rank 2k operations with A Hermitian
* heevd: eigenvalues/eigenvectors computation with A Hermitian
* hetrd: reduces a complex Hermitian matrix A to real symmetric
tridiagonal form S
* lacpy: copy matrix into another
* lange: computes norm of a matrix (Max, One, Inf, Frobenius)
* lanhe: lange with A Hermitian
* lansy: lange with A symmetric
* lantr: lange with A triangular
* lascal: scales a matrix
* laset: copy the triangular part of a matrix into another, set a
value for the diagonal and off-diagonal part
* lauum: computes the product U * U' or L' * L, where the
triangular factor U or L is stored in the upper or lower
triangular part of the array A
* plghe: generates a random Hermitian matrix
* plgsy: generates a random symmetrix matrix
* plrnt: generates a random matrix
* posv: linear systems solving using Cholesky factorization
* potrf: Cholesky factorization
* potri: computes the inverse of a complex Hermitian positive
definite matrix A using the Cholesky factorization A
* potrimm:
* potrs: linear systems solving using existing Cholesky
factorization
* symm: gemm with A symmetric
* syrk: rank k operations with A symmetric
* syr2k: rank 2k with A symmetric
* sysv: linear systems solving using Cholesky decomposition with
A symmetric
* sytrf: Cholesky decomposition with A symmetric
* sytrs: linear systems solving using existing Cholesky
decomposition with A symmetric
* tpgqrt: generates a partial Q matrix formed with a blocked QR
factorization of a "triangular-pentagonal" matrix C, which is
composed of a unused triangular block and a pentagonal block V,
using the compact representation for Q. See tpqrt to
generate V
* tpqrt: computes a blocked QR factorization of a
"triangular-pentagonal" matrix C, which is composed of a
triangular block A and a pentagonal block B, using the compact
representation for Q
* tradd: trapezoidal matrices addition
* trmm: gemm with A triangular
* trsm: computes triangular solve
* trsmpl: performs the forward substitution step of solving a
system of linear equations after the tile LU factorization of
the matrix
* trsmrv:
* trtri: computes the inverse of a complex upper or lower triangular matrix A
* unglq: generates an M-by-N matrix Q with orthonormal rows,
which is defined as the first M rows of a product of the
elementary reflectors returned by MORSE_zgelqf
* unglq_param: unglq with hqr
* ungqr: generates an M-by-N matrix Q with orthonormal columns,
which is defined as the first N columns of a product of the
elementary reflectors returned by MORSE_zgeqrf
* ungqr_param: ungqr with hqr
* unmlq: overwrites C with Q*C or C*Q or equivalent operations
with transposition on conjugate on C (see doxygen
documentation)
* unmlq_param: unmlq with hqr
* unmqr: similar to unmlq (see doxygen documentation)
* unmqr_param: unmqr with hqr
**** Options routines **** Options routines
Enable MORSE feature. Enable MORSE feature.
...@@ -830,9 +913,9 @@ ...@@ -830,9 +913,9 @@
Create matrix descriptor, internal function. Create matrix descriptor, internal function.
#+begin_src #+begin_src
int MORSE_Desc_Create (MORSE_desc_t **desc, void *mat, MORSE_enum dtyp, int MORSE_Desc_Create(MORSE_desc_t **desc, void *mat, MORSE_enum dtyp,
int mb, int nb, int bsiz, int lm, int ln, int mb, int nb, int bsiz, int lm, int ln,
int i, int j, int m, int n, int p, int q); int i, int j, int m, int n, int p, int q);
#+end_src #+end_src
Create matrix descriptor, user function. Create matrix descriptor, user function.
...@@ -845,17 +928,52 @@ ...@@ -845,17 +928,52 @@
int (*get_rankof)( const MORSE_desc_t*, int, int )); int (*get_rankof)( const MORSE_desc_t*, int, int ));
#+end_src #+end_src
Create matrix descriptor for tiled matrix which may not fit
memory.
#+begin_src
int MORSE_Desc_Create_OOC(MORSE_desc_t **descptr, MORSE_enum dtyp, int mb, int nb, int bsiz,
int lm, int ln, int i, int j, int m, int n, int p, int q);
#+end_src
User's function version of MORSE_Desc_Create_OOC.
#+begin_src
int MORSE_Desc_Create_OOC_User(MORSE_desc_t **descptr, MORSE_enum dtyp, int mb, int nb, int bsiz,
int lm, int ln, int i, int j, int m, int n, int p, int q,
int (*get_rankof)( const MORSE_desc_t*, int, int ));
#+end_src
Destroys matrix descriptor. Destroys matrix descriptor.
#+begin_src #+begin_src
int MORSE_Desc_Destroy (MORSE_desc_t **desc); int MORSE_Desc_Destroy (MORSE_desc_t **desc);
#+end_src #+end_src
Ensure that all data are up-to-date in main memory (even if some tasks have Ensures that all data of the descriptor are up-to-date.
been processed on GPUs) #+begin_src
int MORSE_Desc_Acquire (MORSE_desc_t *desc);
#+end_src
Release the data of the descriptor acquired by the
application. Should be called if MORSE_Desc_Acquire has been
called on the descriptor and if you do not need to access to its
data anymore.
#+begin_src
int MORSE_Desc_Release (MORSE_desc_t *desc);
#+end_src
Ensure that all data are up-to-date in main memory (even if some
tasks have been processed on GPUs).
#+begin_src #+begin_src
int MORSE_Desc_Getoncpu(MORSE_desc_t *desc); int MORSE_Desc_Getoncpu(MORSE_desc_t *desc);
#+end_src #+end_src
Set the sizes for the MPI tags. Default value: tag_width=31,
tag_sep=24, meaning that the MPI tag is stored in 31 bits, with
24 bits for the tile tag and 7 for the descriptor. This function
must be called before any descriptor creation.
#+begin_src
void MORSE_user_tag_size(int user_tag_width, int user_tag_sep);
#+end_src
**** Sequences routines **** Sequences routines
Create a sequence. Create a sequence.
......
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