9template <
typename Group,
typename T>
10inline constexpr void ger(
const Group& group,
16 const int row_extent = operand.
a.
rows();
17 const int col_extent = operand.
a.
cols();
19 for (
int linear_index = local_id; linear_index < row_extent * col_extent; linear_index += local_size) {
20 const int row = linear_index % row_extent;
21 const int col = linear_index / row_extent;
32template <
typename Tag,
typename Group,
typename T>
60template <
bool ConjugateXV = false,
bool ConjugateYV = false,
typename Group,
typename T>
61inline constexpr void ger(
const Group& group,
69 bool ConjugateXV =
false,
70 bool ConjugateYV =
false,
73inline constexpr void ger(
const Group& group,
81template <
bool ConjugateXV = false,
bool ConjugateYV = false,
typename Group,
typename T>
82inline constexpr void ger(
const Group& group,
92 bool ConjugateXV =
false,
93 bool ConjugateYV =
false,
96inline constexpr void ger(
const Group& group,
109template <
typename Group,
typename T>
110inline constexpr void geru(
const Group& group,
117template <DeviceBlasPolicy Policy,
typename Group,
typename T>
118inline constexpr void geru(
const Group& group,
122 geru(group, x, operand);
126template <
typename Group,
typename T>
127inline constexpr void geru(
const Group& group,
136template <DeviceBlasPolicy Policy,
typename Group,
typename T>
137inline constexpr void geru(
const Group& group,
143 geru(group, x, y, a, alpha);
150template <
typename Group,
typename T>
151inline constexpr void gerc(
const Group& group,
158template <DeviceBlasPolicy Policy,
typename Group,
typename T>
159inline constexpr void gerc(
const Group& group,
163 gerc(group, x, operand);
167template <
typename Group,
typename T>
168inline constexpr void gerc(
const Group& group,
177template <DeviceBlasPolicy Policy,
typename Group,
typename T>
178inline constexpr void gerc(
const Group& group,
184 gerc(group, x, y, a, alpha);
Non-owning view of a batch of strided vectors: the vector argument type of the entry points.
Policy
Synchronous or asynchronous execution policy.
constexpr Rank1UpdateOperand< T > make_rank1_update_operand(const VectorView< T > &y, const KernelMatrixView< T, MatrixFormat::Dense > &a, T alpha=T(1))
Builds a Rank1UpdateOperand.
DeviceBlasPolicy
Which implementation family a device BLAS call may use.
constexpr void gerc(const Group &group, const VectorView< T > &x, Rank1UpdateOperand< T > operand)
Conjugated rank-1 update ; ger() with conjugated y.
constexpr void ger(const Group &group, const VectorView< T > &x, Rank1UpdateOperand< T > operand)
Rank-1 update , with , optionally conjugated.
constexpr void geru(const Group &group, const VectorView< T > &x, Rank1UpdateOperand< T > operand)
Unconjugated rank-1 update ; ger() without conjugation.
constexpr void ger(const Group &group, const VectorView< T > &x, Rank1UpdateOperand< T > operand, OuterProductTransform transform)
constexpr void validate_rank1_operand(const VectorView< T > &x, const Rank1UpdateOperand< T > &operand)
constexpr int group_local_linear_id(const Group &group)
constexpr void accumulate_rank1_output(const Rank1UpdateOperand< T > &operand, int row, int col, const T &value)
constexpr int group_local_linear_range(const Group &group)
constexpr T maybe_conjugate(const T &value, bool conjugate)
constexpr void dispatch_ger(const Group &group, const VectorView< T > &x, Rank1UpdateOperand< T > operand)
Trivially copyable view of a MatrixView for use inside a SYCL kernel.
auto rows() const
Row count (the capacity on a heterogeneous batch).
auto cols() const
Column count (the capacity on a heterogeneous batch).
Operands of a rank-1 update: (conjugations per call).
KernelMatrixView< T, MatrixFormat::Dense > a
matrix updated in place
VectorView< T > y
right vector, length a.cols()