SLATE 2024.05.31
Software for Linear Algebra Targeting Exascale
Loading...
Searching...
No Matches
syr2k: Symmetric rank 2k update

Functions

template<Target target = Target::HostTask, typename scalar_t >
void slate::internal::syr2k (scalar_t alpha, Matrix< scalar_t > &&A, Matrix< scalar_t > &&B, scalar_t beta, SymmetricMatrix< scalar_t > &&C, int priority, int queue_index, Layout layout)
 Symmetric rank-2k update of single block column (i.e., k = nb).
 
template<typename scalar_t >
void slate::internal::syr2k (internal::TargetType< Target::HostTask >, scalar_t alpha, Matrix< scalar_t > &A, Matrix< scalar_t > &B, scalar_t beta, SymmetricMatrix< scalar_t > &C, int priority, int queue_index, Layout layout)
 Symmetric rank-2k update of single block column (i.e., k = nb).
 
template<typename scalar_t >
void slate::internal::syr2k (internal::TargetType< Target::HostNest >, scalar_t alpha, Matrix< scalar_t > &A, Matrix< scalar_t > &B, scalar_t beta, SymmetricMatrix< scalar_t > &C, int priority, int queue_index, Layout layout)
 Symmetric rank-2k update of single block column (i.e., k = nb).
 
template<typename scalar_t >
void slate::internal::syr2k (internal::TargetType< Target::HostBatch >, scalar_t alpha, Matrix< scalar_t > &A, Matrix< scalar_t > &B, scalar_t beta, SymmetricMatrix< scalar_t > &C, int priority, int queue_index, Layout layout)
 Symmetric rank-2k update of single block column (i.e., k = nb).
 
template<typename scalar_t >
void slate::internal::syr2k (internal::TargetType< Target::Devices >, scalar_t alpha, Matrix< scalar_t > &A, Matrix< scalar_t > &B, scalar_t beta, SymmetricMatrix< scalar_t > &C, int priority, int queue_index, Layout layout)
 Symmetric rank-2k update of single block column (i.e., k = nb).
 

Detailed Description

Function Documentation

◆ syr2k() [1/5]

template<typename scalar_t >
void slate::internal::syr2k ( internal::TargetType< Target::Devices ,
scalar_t  alpha,
Matrix< scalar_t > &  A,
Matrix< scalar_t > &  B,
scalar_t  beta,
SymmetricMatrix< scalar_t > &  C,
int  priority,
int  queue_index,
Layout  layout 
)

Symmetric rank-2k update of single block column (i.e., k = nb).

GPU device batched cuBLAS implementation. Assumes A is NoTrans or Trans; C is Lower, NoTrans or Upper, Trans.

◆ syr2k() [2/5]

template<typename scalar_t >
void slate::internal::syr2k ( internal::TargetType< Target::HostBatch ,
scalar_t  alpha,
Matrix< scalar_t > &  A,
Matrix< scalar_t > &  B,
scalar_t  beta,
SymmetricMatrix< scalar_t > &  C,
int  priority,
int  queue_index,
Layout  layout 
)

Symmetric rank-2k update of single block column (i.e., k = nb).

Host batched implementation. Assumes A is NoTrans or Trans; C is Lower, NoTrans or Upper, Trans.

◆ syr2k() [3/5]

template<typename scalar_t >
void slate::internal::syr2k ( internal::TargetType< Target::HostNest ,
scalar_t  alpha,
Matrix< scalar_t > &  A,
Matrix< scalar_t > &  B,
scalar_t  beta,
SymmetricMatrix< scalar_t > &  C,
int  priority,
int  queue_index,
Layout  layout 
)

Symmetric rank-2k update of single block column (i.e., k = nb).

Host nested OpenMP implementation. Assumes A is NoTrans or Trans; C is Lower, NoTrans or Upper, Trans.

◆ syr2k() [4/5]

template<typename scalar_t >
void slate::internal::syr2k ( internal::TargetType< Target::HostTask ,
scalar_t  alpha,
Matrix< scalar_t > &  A,
Matrix< scalar_t > &  B,
scalar_t  beta,
SymmetricMatrix< scalar_t > &  C,
int  priority,
int  queue_index,
Layout  layout 
)

Symmetric rank-2k update of single block column (i.e., k = nb).

Host OpenMP task implementation. Assumes A is NoTrans or Trans; C is Lower, NoTrans or Upper, Trans.

◆ syr2k() [5/5]

template<Target target = Target::HostTask, typename scalar_t >
void slate::internal::syr2k ( scalar_t  alpha,
Matrix< scalar_t > &&  A,
Matrix< scalar_t > &&  B,
scalar_t  beta,
SymmetricMatrix< scalar_t > &&  C,
int  priority,
int  queue_index,
Layout  layout 
)

Symmetric rank-2k update of single block column (i.e., k = nb).

Dispatches to target implementations. C is Lower, NoTrans or Upper, Trans/ConjTrans. In complex case, A, B, and C cannot be ConjTrans. Requires op(A) and op(B) to be the same, either both NoTrans, or both Trans.