Eigenvalue SoLvers for Petaflop-Applications (ELPA) 2025.01.002
Loading...
Searching...
No Matches
mod_elpa_hermitian_multiply.F90 File Reference
#include "config-f90.h"
#include "../general/precision_macros.h"
#include "elpa_hermitian_multiply_template.F90"

Macros

#define NVTX_RANGE_PUSH(x)
 
#define NVTX_RANGE_POP(x)
 
#define REALCASE   1
 
#define DOUBLE_PRECISION
 
#define REALCASE   1
 
#define SINGLE_PRECISION
 
#define COMPLEXCASE   1
 
#define DOUBLE_PRECISION
 
#define COMPLEXCASE   1
 
#define SINGLE_PRECISION
 

Functions/Subroutines

program __mod_elpa_hermitian_multiply_F90__
 
function elpa_hermitian_multiply_a_h_a_real_double_impl (obj, uplo_a, uplo_c, ncb, a, b, ldb, ldbcols, c, ldc, ldccols)
 elpa_hermitian_multiply_a_h_a_real_double_impl: Performs C : = A**T * B where A is a square matrix (objna,objna) which is optionally upper or lower triangular B is a (objna,ncb) matrix C is a (objna,ncb) matrix where optionally only the upper or lower triangle may be computed
 
function elpa_hermitian_multiply_d_ptr_real_double_impl (obj, uplo_a, uplo_c, ncb, adev, bdev, ldb, ldbcols, cdev, ldc, ldccols)
 elpa_hermitian_multiply_d_ptr_real_double_impl: Performs C : = A**T * B where A is a square matrix (objna,objna) which is optionally upper or lower triangular B is a (objna,ncb) matrix C is a (objna,ncb) matrix where optionally only the upper or lower triangle may be computed
 
function elpa_hermitian_multiply_a_h_a_real_single_impl (obj, uplo_a, uplo_c, ncb, a, b, ldb, ldbcols, c, ldc, ldccols)
 elpa_hermitian_multiply_real_a_h_a_single_impl: Performs C : = A**T * B where A is a square matrix (objna,objna) which is optionally upper or lower triangular B is a (objna,ncb) matrix C is a (objna,ncb) matrix where optionally only the upper or lower triangle may be computed
 
function elpa_hermitian_multiply_d_ptr_real_single_impl (obj, uplo_a, uplo_c, ncb, adev, bdev, ldb, ldbcols, cdev, ldc, ldccols)
 elpa_hermitian_multiply_real_d_ptr_single_impl: Performs C : = A**T * B where A is a square matrix (objna,objna) which is optionally upper or lower triangular B is a (objna,ncb) matrix C is a (objna,ncb) matrix where optionally only the upper or lower triangle may be computed
 
function elpa_hermitian_multiply_a_h_a_complex_double_impl (obj, uplo_a, uplo_c, ncb, a, b, ldb, ldbcols, c, ldc, ldccols)
 elpa_hermitian_multiply_a_h_a_complex_double_impl: Performs C : = A**H * B where A is a square matrix (objna,objna) which is optionally upper or lower triangular B is a (objna,ncb) matrix C is a (objna,ncb) matrix where optionally only the upper or lower triangle may be computed
 
function elpa_hermitian_multiply_d_ptr_complex_double_impl (obj, uplo_a, uplo_c, ncb, adev, bdev, ldb, ldbcols, cdev, ldc, ldccols)
 elpa_hermitian_multiply_a_h_a_complex_double_impl: Performs C : = A**H * B where A is a square matrix (objna,objna) which is optionally upper or lower triangular B is a (objna,ncb) matrix C is a (objna,ncb) matrix where optionally only the upper or lower triangle may be computed
 
function elpa_hermitian_multiply_a_h_a_complex_single_impl (obj, uplo_a, uplo_c, ncb, a, b, ldb, ldbcols, c, ldc, ldccols)
 elpa_hermitian_multiply_a_h_a_complex_single_impl: Performs C : = A**H * B where A is a square matrix (objna,objna) which is optionally upper or lower triangular B is a (objna,ncb) matrix C is a (objna,ncb) matrix where optionally only the upper or lower triangle may be computed
 
function elpa_hermitian_multiply_d_ptr_complex_single_impl (obj, uplo_a, uplo_c, ncb, adev, bdev, ldb, ldbcols, cdev, ldc, ldccols)
 elpa_hermitian_multiply_d_ptr_complex_single_impl: Performs C : = A**H * B where A is a square matrix (objna,objna) which is optionally upper or lower triangular B is a (objna,ncb) matrix C is a (objna,ncb) matrix where optionally only the upper or lower triangle may be computed
 

Macro Definition Documentation

◆ COMPLEXCASE [1/2]

#define COMPLEXCASE   1

◆ COMPLEXCASE [2/2]

#define COMPLEXCASE   1

◆ DOUBLE_PRECISION [1/2]

#define DOUBLE_PRECISION

◆ DOUBLE_PRECISION [2/2]

#define DOUBLE_PRECISION

◆ NVTX_RANGE_POP

#define NVTX_RANGE_POP ( x)

◆ NVTX_RANGE_PUSH

#define NVTX_RANGE_PUSH ( x)

◆ REALCASE [1/2]

#define REALCASE   1

◆ REALCASE [2/2]

#define REALCASE   1

◆ SINGLE_PRECISION [1/2]

#define SINGLE_PRECISION

◆ SINGLE_PRECISION [2/2]

#define SINGLE_PRECISION

Function/Subroutine Documentation

◆ __mod_elpa_hermitian_multiply_F90__()

program __mod_elpa_hermitian_multiply_F90__

◆ elpa_hermitian_multiply_a_h_a_complex_double_impl()

function __mod_elpa_hermitian_multiply_F90__::elpa_hermitian_multiply_a_h_a_complex_double_impl ( obj,
uplo_a,
uplo_c,
ncb,
a,
b,
ldb,
ldbcols,
c,
ldc,
ldccols )
private

elpa_hermitian_multiply_a_h_a_complex_double_impl: Performs C : = A**H * B where A is a square matrix (objna,objna) which is optionally upper or lower triangular B is a (objna,ncb) matrix C is a (objna,ncb) matrix where optionally only the upper or lower triangle may be computed

Parameters
uplo_a'U' if A is upper triangular 'L' if A is lower triangular anything else if A is a full matrix Please note: This pertains to the original A (as set in the calling program) whereas the transpose of A is used for calculations If uplo_a is 'U' or 'L', the other triangle is not used at all, i.e. it may contain arbitrary numbers
uplo_c'U' if only the upper diagonal part of C is needed 'L' if only the upper diagonal part of C is needed anything else if the full matrix C is needed Please note: Even when uplo_c is 'U' or 'L', the other triangle may be written to a certain extent, i.e. one shouldn't rely on the content there!
naNumber of rows/columns of A, number of rows of B and C
ncbNumber of columns of B and C
amatrix a
obj%local_ncolsleading dimension of matrix a, set with class method objset("local_nrows",value)
ldaColscolumns of matrix a
bmatrix b
ldbleading dimension of matrix b
ldbColscolumns of matrix b
nblkblocksize of cyclic distribution, must be the same in both directions!
mpi_comm_rowsMPI communicator for rows
mpi_comm_colsMPI communicator for columns
cmatrix c
ldcleading dimension of matrix c
Returns
success

◆ elpa_hermitian_multiply_a_h_a_complex_single_impl()

function __mod_elpa_hermitian_multiply_F90__::elpa_hermitian_multiply_a_h_a_complex_single_impl ( obj,
uplo_a,
uplo_c,
ncb,
a,
b,
ldb,
ldbcols,
c,
ldc,
ldccols )
private

elpa_hermitian_multiply_a_h_a_complex_single_impl: Performs C : = A**H * B where A is a square matrix (objna,objna) which is optionally upper or lower triangular B is a (objna,ncb) matrix C is a (objna,ncb) matrix where optionally only the upper or lower triangle may be computed

Parameters
uplo_a'U' if A is upper triangular 'L' if A is lower triangular anything else if A is a full matrix Please note: This pertains to the original A (as set in the calling program) whereas the transpose of A is used for calculations If uplo_a is 'U' or 'L', the other triangle is not used at all, i.e. it may contain arbitrary numbers
uplo_c'U' if only the upper diagonal part of C is needed 'L' if only the upper diagonal part of C is needed anything else if the full matrix C is needed Please note: Even when uplo_c is 'U' or 'L', the other triangle may be written to a certain extent, i.e. one shouldn't rely on the content there!
naNumber of rows/columns of A, number of rows of B and C
ncbNumber of columns of B and C
amatrix a
obj%local_ncolsleading dimension of matrix a, set with class method objset("local_nrows",value)
ldaColscolumns of matrix a
bmatrix b
ldbleading dimension of matrix b
ldbColscolumns of matrix b
nblkblocksize of cyclic distribution, must be the same in both directions!
mpi_comm_rowsMPI communicator for rows
mpi_comm_colsMPI communicator for columns
cmatrix c
ldcleading dimension of matrix c
Returns
success

◆ elpa_hermitian_multiply_a_h_a_real_double_impl()

function __mod_elpa_hermitian_multiply_F90__::elpa_hermitian_multiply_a_h_a_real_double_impl ( obj,
uplo_a,
uplo_c,
ncb,
a,
b,
ldb,
ldbcols,
c,
ldc,
ldccols )

elpa_hermitian_multiply_a_h_a_real_double_impl: Performs C : = A**T * B where A is a square matrix (objna,objna) which is optionally upper or lower triangular B is a (objna,ncb) matrix C is a (objna,ncb) matrix where optionally only the upper or lower triangle may be computed

Parameters
uplo_a'U' if A is upper triangular 'L' if A is lower triangular anything else if A is a full matrix Please note: This pertains to the original A (as set in the calling program) whereas the transpose of A is used for calculations If uplo_a is 'U' or 'L', the other triangle is not used at all, i.e. it may contain arbitrary numbers
uplo_c'U' if only the upper diagonal part of C is needed 'L' if only the upper diagonal part of C is needed anything else if the full matrix C is needed Please note: Even when uplo_c is 'U' or 'L', the other triangle may be written to a certain extent, i.e. one shouldn't rely on the content there!
naNumber of rows/columns of A, number of rows of B and C
ncbNumber of columns of B and C
amatrix a
obj%local_nrowsleading dimension of matrix a, set with class method objset("local_nrows",value)
bmatrix b
ldbleading dimension of matrix b
nblkblocksize of cyclic distribution, must be the same in both directions!
mpi_comm_rowsMPI communicator for rows
mpi_comm_colsMPI communicator for columns
cmatrix c
ldcleading dimension of matrix c
Returns
success

◆ elpa_hermitian_multiply_a_h_a_real_single_impl()

function __mod_elpa_hermitian_multiply_F90__::elpa_hermitian_multiply_a_h_a_real_single_impl ( obj,
uplo_a,
uplo_c,
ncb,
a,
b,
ldb,
ldbcols,
c,
ldc,
ldccols )
private

elpa_hermitian_multiply_real_a_h_a_single_impl: Performs C : = A**T * B where A is a square matrix (objna,objna) which is optionally upper or lower triangular B is a (objna,ncb) matrix C is a (objna,ncb) matrix where optionally only the upper or lower triangle may be computed

Parameters
uplo_a'U' if A is upper triangular 'L' if A is lower triangular anything else if A is a full matrix Please note: This pertains to the original A (as set in the calling program) whereas the transpose of A is used for calculations If uplo_a is 'U' or 'L', the other triangle is not used at all, i.e. it may contain arbitrary numbers
uplo_c'U' if only the upper diagonal part of C is needed 'L' if only the upper diagonal part of C is needed anything else if the full matrix C is needed Please note: Even when uplo_c is 'U' or 'L', the other triangle may be written to a certain extent, i.e. one shouldn't rely on the content there!
naNumber of rows/columns of A, number of rows of B and C
ncbNumber of columns of B and C
amatrix a
obj%local_nrowsleading dimension of matrix a, set with class method objset("local_nrows",value)
bmatrix b
ldbleading dimension of matrix b
nblkblocksize of cyclic distribution, must be the same in both directions!
mpi_comm_rowsMPI communicator for rows
mpi_comm_colsMPI communicator for columns
cmatrix c
ldcleading dimension of matrix c
Returns
success

◆ elpa_hermitian_multiply_d_ptr_complex_double_impl()

function __mod_elpa_hermitian_multiply_F90__::elpa_hermitian_multiply_d_ptr_complex_double_impl ( obj,
uplo_a,
uplo_c,
ncb,
adev,
bdev,
ldb,
ldbcols,
cdev,
ldc,
ldccols )
private

elpa_hermitian_multiply_a_h_a_complex_double_impl: Performs C : = A**H * B where A is a square matrix (objna,objna) which is optionally upper or lower triangular B is a (objna,ncb) matrix C is a (objna,ncb) matrix where optionally only the upper or lower triangle may be computed

Parameters
uplo_a'U' if A is upper triangular 'L' if A is lower triangular anything else if A is a full matrix Please note: This pertains to the original A (as set in the calling program) whereas the transpose of A is used for calculations If uplo_a is 'U' or 'L', the other triangle is not used at all, i.e. it may contain arbitrary numbers
uplo_c'U' if only the upper diagonal part of C is needed 'L' if only the upper diagonal part of C is needed anything else if the full matrix C is needed Please note: Even when uplo_c is 'U' or 'L', the other triangle may be written to a certain extent, i.e. one shouldn't rely on the content there!
naNumber of rows/columns of A, number of rows of B and C
ncbNumber of columns of B and C
amatrix a, as a device pointer of type(c_ptr)
obj%local_ncolsleading dimension of matrix a, set with class method objset("local_nrows",value)
ldaColscolumns of matrix a
bmatrix b, as a device pointer of type(c_ptr)
ldbleading dimension of matrix b
ldbColscolumns of matrix b
nblkblocksize of cyclic distribution, must be the same in both directions!
mpi_comm_rowsMPI communicator for rows
mpi_comm_colsMPI communicator for columns
cmatrix c, as a device_pointer of type(c_ptr)
ldcleading dimension of matrix c
Returns
success

◆ elpa_hermitian_multiply_d_ptr_complex_single_impl()

function __mod_elpa_hermitian_multiply_F90__::elpa_hermitian_multiply_d_ptr_complex_single_impl ( obj,
uplo_a,
uplo_c,
ncb,
adev,
bdev,
ldb,
ldbcols,
cdev,
ldc,
ldccols )
private

elpa_hermitian_multiply_d_ptr_complex_single_impl: Performs C : = A**H * B where A is a square matrix (objna,objna) which is optionally upper or lower triangular B is a (objna,ncb) matrix C is a (objna,ncb) matrix where optionally only the upper or lower triangle may be computed

Parameters
uplo_a'U' if A is upper triangular 'L' if A is lower triangular anything else if A is a full matrix Please note: This pertains to the original A (as set in the calling program) whereas the transpose of A is used for calculations If uplo_a is 'U' or 'L', the other triangle is not used at all, i.e. it may contain arbitrary numbers
uplo_c'U' if only the upper diagonal part of C is needed 'L' if only the upper diagonal part of C is needed anything else if the full matrix C is needed Please note: Even when uplo_c is 'U' or 'L', the other triangle may be written to a certain extent, i.e. one shouldn't rely on the content there!
naNumber of rows/columns of A, number of rows of B and C
ncbNumber of columns of B and C
amatrix a, as a device pointer of type(c_ptr)
obj%local_ncolsleading dimension of matrix a, set with class method objset("local_nrows",value)
ldaColscolumns of matrix a
bmatrix b, as a device pointer of type(c_ptr)
ldbleading dimension of matrix b
ldbColscolumns of matrix b
nblkblocksize of cyclic distribution, must be the same in both directions!
mpi_comm_rowsMPI communicator for rows
mpi_comm_colsMPI communicator for columns
cmatrix c, as a device pointer of type(c_ptr)
ldcleading dimension of matrix c
Returns
success

◆ elpa_hermitian_multiply_d_ptr_real_double_impl()

function __mod_elpa_hermitian_multiply_F90__::elpa_hermitian_multiply_d_ptr_real_double_impl ( obj,
uplo_a,
uplo_c,
ncb,
adev,
bdev,
ldb,
ldbcols,
cdev,
ldc,
ldccols )
private

elpa_hermitian_multiply_d_ptr_real_double_impl: Performs C : = A**T * B where A is a square matrix (objna,objna) which is optionally upper or lower triangular B is a (objna,ncb) matrix C is a (objna,ncb) matrix where optionally only the upper or lower triangle may be computed

Parameters
uplo_a'U' if A is upper triangular 'L' if A is lower triangular anything else if A is a full matrix Please note: This pertains to the original A (as set in the calling program) whereas the transpose of A is used for calculations If uplo_a is 'U' or 'L', the other triangle is not used at all, i.e. it may contain arbitrary numbers
uplo_c'U' if only the upper diagonal part of C is needed 'L' if only the upper diagonal part of C is needed anything else if the full matrix C is needed Please note: Even when uplo_c is 'U' or 'L', the other triangle may be written to a certain extent, i.e. one shouldn't rely on the content there!
naNumber of rows/columns of A, number of rows of B and C
ncbNumber of columns of B and C
amatrix a, as a device pointer of type(c_ptr)
obj%local_nrowsleading dimension of matrix a, set with class method objset("local_nrows",value)
bmatrix b, as a device pointer of type(c_ptr)
ldbleading dimension of matrix b
nblkblocksize of cyclic distribution, must be the same in both directions!
mpi_comm_rowsMPI communicator for rows
mpi_comm_colsMPI communicator for columns
cmatrix c, as a device pointer of type(c_ptr)
ldcleading dimension of matrix c
Returns
success

◆ elpa_hermitian_multiply_d_ptr_real_single_impl()

function __mod_elpa_hermitian_multiply_F90__::elpa_hermitian_multiply_d_ptr_real_single_impl ( obj,
uplo_a,
uplo_c,
ncb,
adev,
bdev,
ldb,
ldbcols,
cdev,
ldc,
ldccols )
private

elpa_hermitian_multiply_real_d_ptr_single_impl: Performs C : = A**T * B where A is a square matrix (objna,objna) which is optionally upper or lower triangular B is a (objna,ncb) matrix C is a (objna,ncb) matrix where optionally only the upper or lower triangle may be computed

Parameters
uplo_a'U' if A is upper triangular 'L' if A is lower triangular anything else if A is a full matrix Please note: This pertains to the original A (as set in the calling program) whereas the transpose of A is used for calculations If uplo_a is 'U' or 'L', the other triangle is not used at all, i.e. it may contain arbitrary numbers
uplo_c'U' if only the upper diagonal part of C is needed 'L' if only the upper diagonal part of C is needed anything else if the full matrix C is needed Please note: Even when uplo_c is 'U' or 'L', the other triangle may be written to a certain extent, i.e. one shouldn't rely on the content there!
naNumber of rows/columns of A, number of rows of B and C
ncbNumber of columns of B and C
amatrix a, as a device pointer of type(c_ptr)
obj%local_nrowsleading dimension of matrix a, set with class method objset("local_nrows",value)
bmatrix b, as a device pointer of type(c_ptr)
ldbleading dimension of matrix b
nblkblocksize of cyclic distribution, must be the same in both directions!
mpi_comm_rowsMPI communicator for rows
mpi_comm_colsMPI communicator for columns
cmatrix c, as a device pointer of type(c_ptr)
ldcleading dimension of matrix c
Returns
success