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 View<double*,CLayout, typename T::device_type, Kokkos::MemoryTraits<Kokkos::Unmanaged>> view_1D(view.data(), view.size());
59 Kokkos::parallel_reduce(
"sum", Kokkos::RangePolicy<typename T::execution_space>( 0,view.size() ), KOKKOS_LAMBDA(
const int i,
double& sum_l){
double sum_view(const T &view)
Definition: view_arithmetic.hpp:54
void host_divide_x_by_y(V1 &dest_view, const V2 &divisor_view)
Definition: view_arithmetic.hpp:31
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
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