Developer Reference for Intel® oneAPI Math Kernel Library for C
p?atrmv
Computes a distributed matrix-vector product using absolute values for a triangular matrix.
Syntax
void psatrmv ( const char*uplo , const char*trans , const char*diag , const MKL_INT*n , const float*alpha , const float*a , const MKL_INT*ia , const MKL_INT*ja , const MKL_INT*desca , const float*x , const MKL_INT*ix , const MKL_INT*jx , const MKL_INT*descx , const MKL_INT*incx , const float*beta , float*y , const MKL_INT*iy , const MKL_INT*jy , const MKL_INT*descy , const MKL_INT*incy );
void pdatrmv ( const char*uplo , const char*trans , const char*diag , const MKL_INT*n , const double*alpha , const double*a , const MKL_INT*ia , const MKL_INT*ja , const MKL_INT*desca , const double*x , const MKL_INT*ix , const MKL_INT*jx , const MKL_INT*descx , const MKL_INT*incx , const double*beta , double*y , const MKL_INT*iy , const MKL_INT*jy , const MKL_INT*descy , const MKL_INT*incy );
void pcatrmv ( const char*uplo , const char*trans , const char*diag , const MKL_INT*n , const MKL_Complex8*alpha , const MKL_Complex8*a , const MKL_INT*ia , const MKL_INT*ja , const MKL_INT*desca , const MKL_Complex8*x , const MKL_INT*ix , const MKL_INT*jx , const MKL_INT*descx , const MKL_INT*incx , const MKL_Complex8*beta , MKL_Complex8*y , const MKL_INT*iy , const MKL_INT*jy , const MKL_INT*descy , const MKL_INT*incy );
void pzatrmv ( const char*uplo , const char*trans , const char*diag , const MKL_INT*n , const MKL_Complex16*alpha , const MKL_Complex16*a , const MKL_INT*ia , const MKL_INT*ja , const MKL_INT*desca , const MKL_Complex16*x , const MKL_INT*ix , const MKL_INT*jx , const MKL_INT*descx , const MKL_INT*incx , const MKL_Complex16*beta , MKL_Complex16*y , const MKL_INT*iy , const MKL_INT*jy , const MKL_INT*descy , const MKL_INT*incy );
Include Files
mkl_pblas.h
Description
The p?atrmv routines perform one of the following distributed matrix-vector operations defined as
sub(y) := abs(alpha)*abs(sub(A))*abs(sub(x))+ abs(beta*sub(y)) , or
sub(y) := abs(alpha)*abs(sub( A)')*abs(sub(x))+ abs(beta*sub(y)) , or
sub(y) := abs(alpha)*abs(conjg(sub(A)'))*abs(sub(x))+ abs(beta*sub(y)) ,
where:
alpha and beta are scalars,
sub(A) is a n -by- n unit, or non-unit, upper or lower triangular distributed matrix, sub(A) = A(ia:ia+n-1, ja:ja+n-1) ,
sub(x) is an n -element distributed vector.
sub(x) denotes X(ix, jx:jx+n-1) if incx = m_x , and X(ix: ix+n-1, jx) if incx = 1 .
Input Parameters
- uplo
-
(global) CHARACTER*1 . Specifies whether the distributed matrix sub(A) is upper or lower triangular:
if uplo = 'U' or ‘u’ , then the matrix is upper triangular;
if uplo = 'L' or ‘l’ , then the matrix is low triangular.
- trans
-
(global) CHARACTER*1 . Specifies the form of op(sub(A)) used in the matrix equation:
if trans = 'N' or 'n' , then \(sub(y):=|\alpha||sub(A)||sub(x)|+|\beta\cdot sub(y)|\);
if trans = 'T' or 't' , then \(sub(y):=|\alpha||sub(A)'||sub(x)|+|\beta\cdot sub(y)|\);
if trans = 'C' or 'c' , then \(sub(y):=|\alpha||conj(sub(A)')||sub(x)|+|\beta\cdot sub(y)|\).
- diag
-
(global) CHARACTER*1 . Specifies whether the matrix sub(A) is unit triangular:
if diag = 'U' or ‘u’ then the matrix is unit triangular;
if diag = 'N' or ‘n’ , then the matrix is not unit triangular.
- n
-
(global) INTEGER . Specifies the order of the distributed matrix sub(A) , n ≥ 0.
- alpha
-
(global) REAL for psatrmv DOUBLE PRECISION for pdatrmv COMPLEX for pcatrmv DOUBLE COMPLEX for pzatrmv Specifies the scalar alpha .
- a
-
(local) REAL for psatrmv DOUBLE PRECISION for pdatrmv COMPLEX for pcatrmv DOUBLE COMPLEX for pzatrmv Array, size at least (lld_a, LOCq(1, ja+n-1)) . * Before entry with uplo = 'U' or ‘u’ , this array contains the local entries corresponding to the entries of the upper triangular distributed matrix sub(A) , and the local entries corresponding to the entries of the strictly lower triangular part of the distributed matrix sub(A) is not referenced. * Before entry with uplo = 'L' or ‘l’ , this array contains the local entries corresponding to the entries of the lower triangular distributed matrix sub(A) , and the local entries corresponding to the entries of the strictly upper triangular part of the distributed matrix sub(A) is not referenced. * When diag = 'U' or ‘u’ , the local entries corresponding to the diagonal elements of the submatrix sub(A) are not referenced either, but are assumed to be unity.
ia , ja
(global) INTEGER . The row and column indices in the distributed matrix A indicating the first row and the first column of the submatrix sub(A) , respectively.
desca
(global and local) INTEGER array of dimension 9. The array descriptor of the distributed matrix A .
x
(local) REAL for psatrmv DOUBLE PRECISION for pdatrmv COMPLEX for pcatrmv DOUBLE COMPLEX for pzatrmv Array, size at least (jx-1)*m_x + ix+(n-1)*abs(incx)) . This array contains the entries of the distributed vector sub(x) .
ix , jx
(global) INTEGER . The row and column indices in the distributed matrix X indicating the first row and the first column of the submatrix sub(x) , respectively.
descx
(global and local) INTEGER array of dimension 9. The array descriptor of the distributed matrix X .
incx
(global) INTEGER . Specifies the increment for the elements of sub(x) . Only two values are supported, namely 1 and m_x . incx must not be zero.
beta
(global) REAL for psatrmv DOUBLE PRECISION for pdatrmv COMPLEX for pcatrmv DOUBLE COMPLEX for pzatrmv Specifies the scalar beta . When beta is set to zero, then sub(y) need not be set on input.
y
(local) REAL for psatrmv DOUBLE PRECISION for pdatrmv COMPLEX for pcatrmv DOUBLE COMPLEX for pzatrmv Array, size (jy-1)*m_y + iy+(m-1)*abs(incy)) when trans = 'N' or ‘n’ , and (jy-1)*m_y + iy+(n-1)*abs(incy)) otherwise. This array contains the entries of the distributed vector sub(y) .
iy , jy
(global) INTEGER . The row and column indices in the distributed matrix Y indicating the first row and the first column of the submatrix sub(y) , respectively.
- descy
-
(global and local) INTEGER array of dimension 9. The array descriptor of the distributed matrix Y .
- incy
-
(global) INTEGER . Specifies the increment for the elements of sub(y) . Only two values are supported, namely 1 and m_y . incy must not be zero.
Output Parameters
- y
-
Overwritten by the transformed distributed vector sub(y) .