Skip to content
Merged
Show file tree
Hide file tree
Changes from 6 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
6 changes: 3 additions & 3 deletions batched/KokkosBatched_Util.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -154,10 +154,10 @@ struct is_vector : public std::false_type {};
template <typename Ta, typename Tb>
struct is_same_mag_type {
static const bool is_specialized =
(Kokkos::ArithTraits<Ta>::is_specialized && Kokkos::ArithTraits<Tb>::is_specialized);
(KokkosKernels::ArithTraits<Ta>::is_specialized && KokkosKernels::ArithTraits<Tb>::is_specialized);

static const bool is_mag_type_same =
std::is_same<typename Kokkos::ArithTraits<Ta>::mag_type, typename Kokkos::ArithTraits<Tb>::mag_type>::value;
static const bool is_mag_type_same = std::is_same<typename KokkosKernels::ArithTraits<Ta>::mag_type,
typename KokkosKernels::ArithTraits<Tb>::mag_type>::value;

static const bool value = is_specialized && is_mag_type_same;
};
Expand Down
4 changes: 2 additions & 2 deletions batched/dense/impl/KokkosBatched_AddRadial_Internal.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ struct SerialAddRadialInternal {
#endif
for (int i = 0; i < m; ++i) {
// const auto a_real = RealPart(A[i*as]);
const auto a_real = Kokkos::ArithTraits<ValueType>::real(A[i * as]);
const auto a_real = KokkosKernels::ArithTraits<ValueType>::real(A[i * as]);
A[i * as] += ValueType(minus_abs_tiny) * ValueType(a_real < 0);
A[i * as] += ValueType(abs_tiny) * ValueType(a_real >= 0);
}
Expand All @@ -58,7 +58,7 @@ struct TeamAddRadialInternal {

Kokkos::parallel_for(Kokkos::TeamThreadRange(member, m), [&](const int &i) {
// const auto a_real = RealPart(A[i*as]);
const auto a_real = Kokkos::ArithTraits<ValueType>::real(A[i * as]);
const auto a_real = KokkosKernels::ArithTraits<ValueType>::real(A[i * as]);
A[i * as] += ValueType(minus_abs_tiny) * ValueType(a_real < 0);
A[i * as] += ValueType(abs_tiny) * ValueType(a_real >= 0);
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,8 @@ struct SerialApplyLeftHouseholderInternal {
// w1t /= tau
for (int j = 0; j < n; ++j) {
value_type tmp = a1t[j * a1ts];
for (int i = 0; i < m; ++i) tmp += Kokkos::ArithTraits<value_type>::conj(u2[i * u2s]) * A2[i * as0 + j * as1];
for (int i = 0; i < m; ++i)
tmp += KokkosKernels::ArithTraits<value_type>::conj(u2[i * u2s]) * A2[i * as0 + j * as1];
w1t[j] = tmp * inv_tau; // /= (*tau);
}

Expand Down Expand Up @@ -101,7 +102,8 @@ struct SerialApplyRightHouseholderInternal {

// A2 -= w1 * u2' (ger with conjugate)
for (int j = 0; j < n; ++j)
for (int i = 0; i < m; ++i) A2[i * as0 + j * as1] -= w1[i] * Kokkos::ArithTraits<ValueType>::conj(u2[j * u2s]);
for (int i = 0; i < m; ++i)
A2[i * as0 + j * as1] -= w1[i] * KokkosKernels::ArithTraits<ValueType>::conj(u2[j * u2s]);

return 0;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ struct TeamVectorApplyLeftHouseholderInternal {
Kokkos::parallel_reduce(
Kokkos::ThreadVectorRange(member, m),
[&](const int &i, value_type &val) {
val += Kokkos::ArithTraits<value_type>::conj(u2[i * u2s]) * A2[i * as0 + j * as1];
val += KokkosKernels::ArithTraits<value_type>::conj(u2[i * u2s]) * A2[i * as0 + j * as1];
},
tmp);
Kokkos::single(Kokkos::PerThread(member), [&]() {
Expand Down Expand Up @@ -125,13 +125,13 @@ struct TeamVectorApplyRightHouseholderInternal {
if (as0 <= as1) {
Kokkos::parallel_for(Kokkos::TeamThreadRange(member, n), [&](const int &j) {
Kokkos::parallel_for(Kokkos::ThreadVectorRange(member, m), [&](const int &i) {
A2[i * as0 + j * as1] -= w1[i] * Kokkos::ArithTraits<ValueType>::conj(u2[j * u2s]);
A2[i * as0 + j * as1] -= w1[i] * KokkosKernels::ArithTraits<ValueType>::conj(u2[j * u2s]);
});
});
} else {
Kokkos::parallel_for(Kokkos::ThreadVectorRange(member, n), [&](const int &j) {
Kokkos::parallel_for(Kokkos::TeamThreadRange(member, m), [&](const int &i) {
A2[i * as0 + j * as1] -= w1[i] * Kokkos::ArithTraits<ValueType>::conj(u2[j * u2s]);
A2[i * as0 + j * as1] -= w1[i] * KokkosKernels::ArithTraits<ValueType>::conj(u2[j * u2s]);
});
});
}
Expand Down
10 changes: 5 additions & 5 deletions batched/dense/impl/KokkosBatched_Dot_Internal.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ struct SerialDotInternal {
KOKKOS_FORCEINLINE_FUNCTION static int invoke(const int m, const ValueType *KOKKOS_RESTRICT A, const int as0,
const ValueType *KOKKOS_RESTRICT B, const int bs0,
/* */ MagnitudeType *KOKKOS_RESTRICT C) {
using ats = Kokkos::ArithTraits<ValueType>;
using ats = KokkosKernels::ArithTraits<ValueType>;
C[0] = ValueType(0);
#if defined(KOKKOS_ENABLE_PRAGMA_UNROLL)
#pragma unroll
Expand Down Expand Up @@ -70,7 +70,7 @@ struct TeamDotInternal {
const ValueType *KOKKOS_RESTRICT A, const int as0,
const ValueType *KOKKOS_RESTRICT B, const int bs0,
/* */ MagnitudeType *KOKKOS_RESTRICT C) {
using ats = Kokkos::ArithTraits<ValueType>;
using ats = KokkosKernels::ArithTraits<ValueType>;
ValueType t(0);
Kokkos::parallel_reduce(
Kokkos::TeamThreadRange(member, m),
Expand All @@ -90,7 +90,7 @@ struct TeamDotInternal {
const ValueType *KOKKOS_RESTRICT A, const int as0, const int as1,
const ValueType *KOKKOS_RESTRICT B, const int bs0, const int bs1,
/* */ MagnitudeType *KOKKOS_RESTRICT C, const int cs) {
using ats = Kokkos::ArithTraits<ValueType>;
using ats = KokkosKernels::ArithTraits<ValueType>;
Kokkos::parallel_for(Kokkos::TeamThreadRange(member, n), [&](const int &j) {
ValueType t(0);
const ValueType *KOKKOS_RESTRICT A_at_j = A + j * as1;
Expand All @@ -117,7 +117,7 @@ struct TeamVectorDotInternal {
const ValueType *KOKKOS_RESTRICT A, const int as0,
const ValueType *KOKKOS_RESTRICT B, const int bs0,
/* */ MagnitudeType *KOKKOS_RESTRICT C) {
using ats = Kokkos::ArithTraits<ValueType>;
using ats = KokkosKernels::ArithTraits<ValueType>;
ValueType t(0);
Kokkos::parallel_reduce(
Kokkos::TeamVectorRange(member, m),
Expand All @@ -137,7 +137,7 @@ struct TeamVectorDotInternal {
const ValueType *KOKKOS_RESTRICT A, const int as0, const int as1,
const ValueType *KOKKOS_RESTRICT B, const int bs0, const int bs1,
/* */ MagnitudeType *KOKKOS_RESTRICT C, const int cs) {
using ats = Kokkos::ArithTraits<ValueType>;
using ats = KokkosKernels::ArithTraits<ValueType>;
Kokkos::parallel_for(Kokkos::TeamThreadRange(member, n), [&](const int &j) {
ValueType t(0);
const ValueType *KOKKOS_RESTRICT A_at_j = A + j * as1;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ struct SerialEigendecompositionInternal {
"Serial eigendecomposition on device and/or without LAPACK "
"is not implemented yet");
// typedef RealType real_type;
// typedef Kokkos::ArithTraits<real_type> ats;
// typedef KokkosKernels::ArithTraits<real_type> ats;

// const real_type one(1), zero(0), tol = 1e2*ats::epsilon();
// //const Kokkos::pair<real_type,real_type> identity(one, zero);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ struct SerialEigenvalueInternal {
/* */ RealType *ei, const int eis, const bool restart = false,
const int user_max_iteration = -1) {
typedef RealType real_type;
typedef Kokkos::ArithTraits<real_type> ats;
typedef KokkosKernels::ArithTraits<real_type> ats;
const real_type zero(0), nan(ats::nan()), tol = 1e2 * ats::epsilon();
const int max_iteration = user_max_iteration < 0 ? 300 : user_max_iteration;

Expand Down
4 changes: 2 additions & 2 deletions batched/dense/impl/KokkosBatched_Francis_Serial_Internal.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -80,8 +80,8 @@ struct SerialFrancisInternal {
t = lambda1.real() * lambda1.real() + lambda1.imag() * lambda1.imag();
} else {
const value_type val = H[(m - 1) * hs];
const auto dist_lambda1 = Kokkos::ArithTraits<value_type>::abs(lambda1.real() - val);
const auto dist_lambda2 = Kokkos::ArithTraits<value_type>::abs(lambda2.real() - val);
const auto dist_lambda1 = KokkosKernels::ArithTraits<value_type>::abs(lambda1.real() - val);
const auto dist_lambda2 = KokkosKernels::ArithTraits<value_type>::abs(lambda2.real() - val);
const value_type lambda = dist_lambda1 < dist_lambda2 ? lambda1.real() : lambda2.real();
s = 2 * lambda;
t = lambda * lambda;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ KOKKOS_INLINE_FUNCTION int TeamVectorGemmInternal<Algo::Gemm::Unblocked, true>::
const ValueType *KOKKOS_RESTRICT pB = B + j * bs1;

ValueType c = ValueType(0);
for (int p = 0; p < k; ++p) c += Kokkos::ArithTraits<ValueType>::conj(pA[p * as1]) * pB[p * bs0];
for (int p = 0; p < k; ++p) c += KokkosKernels::ArithTraits<ValueType>::conj(pA[p * as1]) * pB[p * bs0];
C[i * cs0 + j * cs1] += alpha * c;
});
});
Expand Down
38 changes: 19 additions & 19 deletions batched/dense/impl/KokkosBatched_Gesv_Impl.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ KOKKOS_INLINE_FUNCTION int SerialStaticPivoting::invoke(const MatrixType1 A, con
// First, the algorithm loops over the rows and columns and search
// for the maximal absolute value per row and column.
for (size_t i = 0; i < n; ++i) {
D2(i) = Kokkos::ArithTraits<value_type>::zero();
D2(i) = KokkosKernels::ArithTraits<value_type>::zero();
tmp_v_1(i) = 0;
tmp_v_2(i) = 1.;
for (size_t j = 0; j < n; ++j) {
Expand All @@ -82,7 +82,7 @@ KOKKOS_INLINE_FUNCTION int SerialStaticPivoting::invoke(const MatrixType1 A, con
// of A and Y.
value_type D1_i;
for (size_t i = 0; i < n; ++i) {
D1_i = Kokkos::ArithTraits<value_type>::zero();
D1_i = KokkosKernels::ArithTraits<value_type>::zero();
for (size_t j = 0; j < n; ++j) {
if (D1_i < Kokkos::abs(A(i, j))) D1_i = Kokkos::abs(A(i, j));
}
Expand All @@ -104,8 +104,8 @@ KOKKOS_INLINE_FUNCTION int SerialStaticPivoting::invoke(const MatrixType1 A, con
for (size_t i = 0; i < n; ++i) {
int row_index = 0;
int col_index = 0;
value_type tmp_0 = Kokkos::ArithTraits<value_type>::zero();
value_type tmp_1 = Kokkos::ArithTraits<value_type>::zero();
value_type tmp_0 = KokkosKernels::ArithTraits<value_type>::zero();
value_type tmp_1 = KokkosKernels::ArithTraits<value_type>::zero();
for (size_t j = 0; j < n; ++j) {
if (tmp_0 < tmp_v_1(j)) {
tmp_0 = tmp_v_1(j);
Expand All @@ -118,9 +118,9 @@ KOKKOS_INLINE_FUNCTION int SerialStaticPivoting::invoke(const MatrixType1 A, con
col_index = j;
}
}
if (tmp_1 == Kokkos::ArithTraits<value_type>::zero()) return 1;
tmp_v_1(row_index) = Kokkos::ArithTraits<value_type>::zero();
tmp_v_2(col_index) = Kokkos::ArithTraits<value_type>::zero();
if (tmp_1 == KokkosKernels::ArithTraits<value_type>::zero()) return 1;
tmp_v_1(row_index) = KokkosKernels::ArithTraits<value_type>::zero();
tmp_v_2(col_index) = KokkosKernels::ArithTraits<value_type>::zero();

for (size_t j = 0; j < n; ++j) {
PDAD(col_index, j) = A(row_index, j);
Expand All @@ -147,7 +147,7 @@ KOKKOS_INLINE_FUNCTION int TeamStaticPivoting<MemberType>::invoke(const MemberTy
size_t n = A.extent(0);

Kokkos::parallel_for(Kokkos::TeamThreadRange(member, n), [&](const int &i) {
D2(i) = Kokkos::ArithTraits<value_type>::zero();
D2(i) = KokkosKernels::ArithTraits<value_type>::zero();
tmp_v_1(i) = 0;
tmp_v_2(i) = 1.;
for (size_t j = 0; j < n; ++j) {
Expand All @@ -164,7 +164,7 @@ KOKKOS_INLINE_FUNCTION int TeamStaticPivoting<MemberType>::invoke(const MemberTy
});

Kokkos::parallel_for(Kokkos::TeamThreadRange(member, n), [&](const int &i) {
value_type D1_i = Kokkos::ArithTraits<value_type>::zero();
value_type D1_i = KokkosKernels::ArithTraits<value_type>::zero();
for (size_t j = 0; j < n; ++j) {
if (D1_i < Kokkos::abs(A(i, j))) D1_i = Kokkos::abs(A(i, j));
}
Expand All @@ -190,7 +190,7 @@ KOKKOS_INLINE_FUNCTION int TeamStaticPivoting<MemberType>::invoke(const MemberTy
reducer_value);
row_index = value.loc;
value.loc = 0;
value.val = Kokkos::ArithTraits<value_type>::zero();
value.val = KokkosKernels::ArithTraits<value_type>::zero();
Kokkos::parallel_reduce(
Kokkos::TeamThreadRange(member, n),
[&](const int &j, reducer_value_type &update) {
Expand All @@ -201,9 +201,9 @@ KOKKOS_INLINE_FUNCTION int TeamStaticPivoting<MemberType>::invoke(const MemberTy
},
reducer_value);
col_index = value.loc;
if (value.val == Kokkos::ArithTraits<value_type>::zero()) return 1;
tmp_v_1(row_index) = Kokkos::ArithTraits<value_type>::zero();
tmp_v_2(col_index) = Kokkos::ArithTraits<value_type>::zero();
if (value.val == KokkosKernels::ArithTraits<value_type>::zero()) return 1;
tmp_v_1(row_index) = KokkosKernels::ArithTraits<value_type>::zero();
tmp_v_2(col_index) = KokkosKernels::ArithTraits<value_type>::zero();

for (size_t j = 0; j < n; ++j) {
PDAD(col_index, j) = A(row_index, j);
Expand All @@ -228,7 +228,7 @@ KOKKOS_INLINE_FUNCTION int TeamVectorStaticPivoting<MemberType>::invoke(const Me
const size_t n = A.extent(0);

Kokkos::parallel_for(Kokkos::TeamThreadRange(member, n), [&](const int &i) {
D2(i) = Kokkos::ArithTraits<value_type>::zero();
D2(i) = KokkosKernels::ArithTraits<value_type>::zero();
tmp_v_1(i) = 0;
tmp_v_2(i) = 1.;
reducer_value_type value;
Expand Down Expand Up @@ -260,7 +260,7 @@ KOKKOS_INLINE_FUNCTION int TeamVectorStaticPivoting<MemberType>::invoke(const Me
});

Kokkos::parallel_for(Kokkos::TeamThreadRange(member, n), [&](const int &i) {
value_type D1_i = Kokkos::ArithTraits<value_type>::zero();
value_type D1_i = KokkosKernels::ArithTraits<value_type>::zero();
reducer_value_type value;
Kokkos::MaxLoc<value_type, int> reducer_value(value);
Kokkos::parallel_reduce(
Expand Down Expand Up @@ -292,7 +292,7 @@ KOKKOS_INLINE_FUNCTION int TeamVectorStaticPivoting<MemberType>::invoke(const Me
reducer_value);
row_index = value.loc;
value.loc = 0;
value.val = Kokkos::ArithTraits<value_type>::zero();
value.val = KokkosKernels::ArithTraits<value_type>::zero();
Kokkos::parallel_reduce(
Kokkos::TeamVectorRange(member, n),
[&](const int &j, reducer_value_type &update) {
Expand All @@ -303,9 +303,9 @@ KOKKOS_INLINE_FUNCTION int TeamVectorStaticPivoting<MemberType>::invoke(const Me
},
reducer_value);
col_index = value.loc;
if (value.val == Kokkos::ArithTraits<value_type>::zero()) return 1;
tmp_v_1(row_index) = Kokkos::ArithTraits<value_type>::zero();
tmp_v_2(col_index) = Kokkos::ArithTraits<value_type>::zero();
if (value.val == KokkosKernels::ArithTraits<value_type>::zero()) return 1;
tmp_v_1(row_index) = KokkosKernels::ArithTraits<value_type>::zero();
tmp_v_2(col_index) = KokkosKernels::ArithTraits<value_type>::zero();

Kokkos::parallel_for(Kokkos::TeamVectorRange(member, n),
[&](const int &j) { PDAD(col_index, j) = A(row_index, j); });
Expand Down
5 changes: 3 additions & 2 deletions batched/dense/impl/KokkosBatched_Givens_Serial_Internal.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -53,11 +53,12 @@ struct SerialGivensInternal {
} else {
// here we do not care overflow caused by the division although it is
// probable....
r = Kokkos::ArithTraits<value_type>::sqrt(chi1 * chi1 + chi2 * chi2);
r = KokkosKernels::ArithTraits<value_type>::sqrt(chi1 * chi1 + chi2 * chi2);
cs = chi1 / r;
sn = chi2 / r;

if (Kokkos::ArithTraits<value_type>::abs(chi1) > Kokkos::ArithTraits<value_type>::abs(chi2) && cs < zero) {
if (KokkosKernels::ArithTraits<value_type>::abs(chi1) > KokkosKernels::ArithTraits<value_type>::abs(chi2) &&
cs < zero) {
cs = -cs;
sn = -sn;
r = -r;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ struct SerialHessenbergQR_WithShiftInternal {
/* */ ValueType *HH, const int hs0, const int hs1, const ValueType shift,
/* */ Kokkos::pair<ValueType, ValueType> *GG, const bool request_schur) {
typedef ValueType value_type;
// typedef Kokkos::ArithTraits<value_type> ats;
// typedef KokkosKernels::ArithTraits<value_type> ats;

const int hs = hs0 + hs1;
const value_type zero(0), one(1);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,7 @@ class BatchedSerialGemm {
// KokkosBatched::SerialDotInternal::invoke(svA_row.extent(0), svA_row.data(), svA_row.stride(0),
// svB_col.data(), svB_col.stride(0), &svA_row_x_svB_col);

using ats = Kokkos::ArithTraits<ValueType>;
using ats = KokkosKernels::ArithTraits<ValueType>;
// iC[0] = ValueType(0);
#if defined(KOKKOS_ENABLE_PRAGMA_UNROLL)
#pragma unroll
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ struct SerialLeftHouseholderInternal {
/* */ ValueType* x2, const int x2s,
/* */ ValueType* tau) {
typedef ValueType value_type;
typedef typename Kokkos::ArithTraits<ValueType>::mag_type mag_type;
typedef typename KokkosKernels::ArithTraits<ValueType>::mag_type mag_type;

const mag_type zero(0);
const mag_type half(0.5);
Expand All @@ -58,13 +58,13 @@ struct SerialLeftHouseholderInternal {
}

/// compute magnitude of chi1, equal to norm2 of chi1
const mag_type norm_chi1 = Kokkos::ArithTraits<value_type>::abs(*chi1);
const mag_type norm_chi1 = KokkosKernels::ArithTraits<value_type>::abs(*chi1);

/// compute 2 norm of x using norm_chi1 and norm_x2
const mag_type norm_x = Kokkos::ArithTraits<mag_type>::sqrt(norm_x2_square + norm_chi1 * norm_chi1);
const mag_type norm_x = KokkosKernels::ArithTraits<mag_type>::sqrt(norm_x2_square + norm_chi1 * norm_chi1);

/// compute alpha
const mag_type alpha = (*chi1 < Kokkos::ArithTraits<value_type>::zero() ? one : minus_one) * norm_x;
const mag_type alpha = (*chi1 < KokkosKernels::ArithTraits<value_type>::zero() ? one : minus_one) * norm_x;

/// overwrite x2 with u2
const value_type chi1_minus_alpha = *chi1 - alpha;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ struct TeamVectorLeftHouseholderInternal {
/* */ ValueType *x2, const int x2s,
/* */ ValueType *tau) {
typedef ValueType value_type;
typedef typename Kokkos::ArithTraits<ValueType>::mag_type mag_type;
typedef typename KokkosKernels::ArithTraits<ValueType>::mag_type mag_type;

const mag_type zero(0);
const mag_type half(0.5);
Expand Down Expand Up @@ -63,10 +63,10 @@ struct TeamVectorLeftHouseholderInternal {
}

/// compute magnitude of chi1, equal to norm2 of chi1
const mag_type norm_chi1 = Kokkos::ArithTraits<value_type>::abs(*chi1);
const mag_type norm_chi1 = KokkosKernels::ArithTraits<value_type>::abs(*chi1);

/// compute 2 norm of x using norm_chi1 and norm_x2
const mag_type norm_x = Kokkos::ArithTraits<mag_type>::sqrt(norm_x2_square + norm_chi1 * norm_chi1);
const mag_type norm_x = KokkosKernels::ArithTraits<mag_type>::sqrt(norm_x2_square + norm_chi1 * norm_chi1);

/// compute alpha
const mag_type alpha = (*chi1 < 0 ? one : minus_one) * norm_x;
Expand Down
2 changes: 1 addition & 1 deletion batched/dense/impl/KokkosBatched_Iamax_Serial_Internal.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ struct SerialIamaxInternal {
template <typename IndexType, typename ValueType>
KOKKOS_INLINE_FUNCTION IndexType SerialIamaxInternal::invoke(const int n, const ValueType *KOKKOS_RESTRICT x,
const int xs0) {
using ats = typename Kokkos::ArithTraits<ValueType>;
using ats = typename KokkosKernels::ArithTraits<ValueType>;
using RealType = typename ats::mag_type;

RealType amax = Kokkos::abs(x[0 * xs0]);
Expand Down
Loading
Loading