79struct EquilibrationInfo {
80 using val_type =
typename Kokkos::ArithTraits<ScalarType>::val_type;
81 using mag_type =
typename Kokkos::ArithTraits<val_type>::mag_type;
82 using device_type =
typename DeviceType::device_type;
83 using host_device_type =
typename Kokkos::View<mag_type*, device_type>::HostMirror::device_type;
84 using HostMirror = EquilibrationInfo<val_type, host_device_type>;
86 EquilibrationInfo () :
93 EquilibrationInfo (
const std::size_t lclNumRows,
94 const std::size_t lclNumCols,
95 const bool assumeSymmetric_) :
96 rowNorms (Kokkos::View<mag_type*, device_type> (
"rowNorms", lclNumRows)),
97 rowDiagonalEntries (Kokkos::View<val_type*, device_type> (
"rowDiagonalEntries", lclNumRows)),
98 colNorms (Kokkos::View<mag_type*, device_type> (
"colNorms", lclNumCols)),
114 EquilibrationInfo (
const Kokkos::View<mag_type*, device_type>& rowNorms_,
115 const Kokkos::View<val_type*, device_type>& rowDiagonalEntries_,
116 const Kokkos::View<mag_type*, device_type>& colNorms_,
117 const Kokkos::View<val_type*, device_type>& colDiagonalEntries_,
118 const Kokkos::View<mag_type*, device_type>& rowScaledColNorms_,
119 const bool assumeSymmetric_,
120 const bool foundInf_,
121 const bool foundNan_,
122 const bool foundZeroDiag_,
123 const bool foundZeroRowNorm_) :
137 template<
class SrcDeviceType>
139 assign (
const EquilibrationInfo<ScalarType, SrcDeviceType>& src)
150 Kokkos::View<val_type*, device_type> (
"colDiagonalEntries", 0);
158 Kokkos::View<mag_type*, device_type> (
"rowScaledColNorms", 0);
172 typename EquilibrationInfo<val_type, device_type>::HostMirror
175 auto rowNorms_h = Kokkos::create_mirror_view (
rowNorms);
177 auto colNorms_h = Kokkos::create_mirror_view (
colNorms);
181 return HostMirror {rowNorms_h, rowDiagonalEntries_h, colNorms_h,