47struct EquilibrationInfo {
48 using val_type =
typename Kokkos::ArithTraits<ScalarType>::val_type;
49 using mag_type =
typename Kokkos::ArithTraits<val_type>::mag_type;
50 using device_type =
typename DeviceType::device_type;
51 using host_device_type =
typename Kokkos::View<mag_type*, device_type>::HostMirror::device_type;
52 using HostMirror = EquilibrationInfo<val_type, host_device_type>;
54 EquilibrationInfo () :
61 EquilibrationInfo (
const std::size_t lclNumRows,
62 const std::size_t lclNumCols,
63 const bool assumeSymmetric_) :
64 rowNorms (Kokkos::View<mag_type*, device_type> (
"rowNorms", lclNumRows)),
65 rowDiagonalEntries (Kokkos::View<val_type*, device_type> (
"rowDiagonalEntries", lclNumRows)),
66 colNorms (Kokkos::View<mag_type*, device_type> (
"colNorms", lclNumCols)),
82 EquilibrationInfo (
const Kokkos::View<mag_type*, device_type>& rowNorms_,
83 const Kokkos::View<val_type*, device_type>& rowDiagonalEntries_,
84 const Kokkos::View<mag_type*, device_type>& colNorms_,
85 const Kokkos::View<val_type*, device_type>& colDiagonalEntries_,
86 const Kokkos::View<mag_type*, device_type>& rowScaledColNorms_,
87 const bool assumeSymmetric_,
90 const bool foundZeroDiag_,
91 const bool foundZeroRowNorm_) :
105 template<
class SrcDeviceType>
107 assign (
const EquilibrationInfo<ScalarType, SrcDeviceType>& src)
118 Kokkos::View<val_type*, device_type> (
"colDiagonalEntries", 0);
126 Kokkos::View<mag_type*, device_type> (
"rowScaledColNorms", 0);
140 typename EquilibrationInfo<val_type, device_type>::HostMirror
143 auto rowNorms_h = Kokkos::create_mirror_view (
rowNorms);
145 auto colNorms_h = Kokkos::create_mirror_view (
colNorms);
149 return HostMirror {rowNorms_h, rowDiagonalEntries_h, colNorms_h,