KokkosBlas::syr2¶
Defined in header: KokkosBlas2_syr2.hpp
template <class ExecutionSpace, class XViewType, class YViewType, class AViewType>
void syr2(const ExecutionSpace& space, const char trans[], const char uplo[],
const typename AViewType::const_value_type& alpha, const XViewType& x,
const YViewType& y, const AViewType& A)
template <class XViewType, class YViewType, class AViewType>
void syr2(const char trans[], const char uplo[],
const typename AViewType::const_value_type& alpha, const XViewType& x,
const YViewType& y, const AViewType& A)
Perform a symmetric rank-2 update of matrix A
by vectors x
and y
with scaling factor alpha
,
Iterate of the entries of
A
and update them with thealpha
scaled and symmetrized product of the entries ofx
andy^T
using resources from thespace
instance.Iterate of the entries of
A
and update them with thealpha
scaled and symmetrized product of the entries ofx
andy^T
using resources from the default instance oftypename AViewType::execution_space
.
The function will throw a runtime exception if A.extent(0) != X.extent(0) || A.extent(1) != X.extent(0) || A.extent(0) != Y.extent(0) || A.extent(1) != Y.extent(0)
.
Parameters¶
- space:
execution space instance.
- trans:
“T” for transpose and “H” for conjugate transpose of
x
andy
, all characters after the first one are ignored.- alpha:
scaling parameter for the rank update.
- x, y:
vectors used to perform the symmetric rank update.
- A:
matrix being updated.
Type Requirements¶
execution_space must be a Kokkos execution space
XViewType must be a Kokkos View of rank 1 that satisfies
Kokkos::SpaceAccessibility<execution_space, typename XViewType::memory_space>::accessible
YViewType must be a Kokkos View of rank 1 that satisfies
Kokkos::SpaceAccessibility<execution_space, typename YViewType::memory_space>::accessible
AViewType must be a Kokkos View of rank 2 that satisfies
Kokkos::SpaceAccessibility<execution_space, typename AViewType::memory_space>::accessible
std::is_same_v<typename AViewType::value_type, typename AViewType::non_const_value_type>
Example¶
#include <Kokkos_Core.hpp>
#include <KokkosBlas2_syr2.hpp>
int main(int argc, char* argv[]) {
Kokkos::initialize(argc, argv);
{
constexpr int M = 5;
Kokkos::View<double**> A("A", M, M);
Kokkos::View<double*> x("X", M);
Kokkos::View<double*> y("Y", M);
Kokkos::deep_copy(A, 1.0);
Kokkos::deep_copy(x, 3.0);
Kokkos::deep_copy(y, 1.3);
const double alpha = double(1.0);
KokkosBlas::syr2("T", "U", alpha, x, y, A);
}
Kokkos::finalize();
}