1 #ifndef VIEW_ARITHMETIC_HPP
2 #define VIEW_ARITHMETIC_HPP
18 template<
typename V1,
typename V2,
typename T>
20 if (dest_view.size() != added_view.size())
exit_XGC(
"\nWARNING: dest_view and added_view are not the same size");
24 Kokkos::parallel_for(
"host_add_ay_to_x", Kokkos::RangePolicy<HostExSpace>( 0, dest_view.size()), KOKKOS_LAMBDA(
const int idx){
25 ptrs.x[
idx] += coeff*ptrs.y[
idx];
30 template<
typename V1,
typename V2>
32 if (dest_view.size() != divisor_view.size())
exit_XGC(
"\nWARNING: dest_view and divisor_view are not the same size");
36 Kokkos::parallel_for(
"host_divide_x_by_y", Kokkos::RangePolicy<HostExSpace>( 0, dest_view.size()), KOKKOS_LAMBDA(
const int idx){
37 ptrs.x[
idx] /= ptrs.y[
idx];
42 template<
typename V1,
typename T>
44 double coeff_inv = 1.0/coeff;
48 Kokkos::parallel_for(
"host_divide_x_by_a", Kokkos::RangePolicy<HostExSpace>( 0, dest_view.size()), KOKKOS_LAMBDA(
const int idx){
49 ptrs.x[
idx] *= coeff_inv;
56 inline typename T::value_type
sum_view(
const T& view){
58 View<typename T::value_type*,CLayout, typename T::device_type, Kokkos::MemoryTraits<Kokkos::Unmanaged>> view_1D(view.data(), view.size());
60 typename T::value_type sum = 0;
61 Kokkos::parallel_reduce(
"sum", Kokkos::RangePolicy<typename T::execution_space>( 0,view.size() ), KOKKOS_LAMBDA(
const int i,
typename T::value_type& sum_l){
71 inline typename T::value_type
max_view(
const T& view){
73 View<typename T::value_type*,CLayout, typename T::device_type, Kokkos::MemoryTraits<Kokkos::Unmanaged>> view_1D(view.data(), view.size());
75 typename T::value_type maxval = 0;
76 Kokkos::parallel_reduce(
"maxval", Kokkos::RangePolicy<typename T::execution_space>( 0,view.size() ), KOKKOS_LAMBDA(
const int i,
typename T::value_type& maxval_l){
77 maxval_l = max(maxval_l, view_1D(i));
78 }, Kokkos::Max<typename T::value_type,HostType>(maxval));
void host_divide_x_by_y(V1 &dest_view, const V2 &divisor_view)
Definition: view_arithmetic.hpp:31
T::value_type max_view(const T &view)
Definition: view_arithmetic.hpp:71
void host_add_ay_to_x(V1 &dest_view, const V2 &added_view, T coeff)
Definition: view_arithmetic.hpp:19
T * y
Definition: view_arithmetic.hpp:12
ViewArithmeticPointers(T *x, T *y)
Definition: view_arithmetic.hpp:14
idx
Definition: diag_f0_df_port1.hpp:32
T::value_type sum_view(const T &view)
Definition: view_arithmetic.hpp:56
void exit_XGC(std::string msg)
Definition: globals.hpp:37
void parallel_for(const std::string name, int n_ptl, Function func, Option option, HostAoSoA aosoa_h, DeviceAoSoA aosoa_d)
Definition: streamed_parallel_for.hpp:252
Definition: view_arithmetic.hpp:10
T * x
Definition: view_arithmetic.hpp:11
void host_divide_x_by_a(V1 &dest_view, T coeff)
Definition: view_arithmetic.hpp:43