31 using scalar_type =
typename KokkosKernels::ArithTraits<Scalar>::val_type;
32 using array_layout = Kokkos::LayoutLeft;
34 Kokkos::Device<
typename Device::execution_space,
35 typename Device::memory_space>;
48 apply(Kokkos::View<
const scalar_type**, array_layout,
49 device_type, Kokkos::MemoryTraits<Kokkos::Unmanaged> >
51 Kokkos::View<scalar_type**, array_layout,
52 device_type, Kokkos::MemoryTraits<Kokkos::Unmanaged> >
54 const Teuchos::ETransp
mode,
55 const scalar_type
alpha,
56 const scalar_type
beta)
const = 0;
58 virtual bool hasTransposeApply()
const {
return false; }
virtual void apply(Kokkos::View< const scalar_type **, array_layout, device_type, Kokkos::MemoryTraits< Kokkos::Unmanaged > > X, Kokkos::View< scalar_type **, array_layout, device_type, Kokkos::MemoryTraits< Kokkos::Unmanaged > > Y, const Teuchos::ETransp mode, const scalar_type alpha, const scalar_type beta) const =0
Compute Y := beta*Y + alpha*Op(A)*X.