Advanced Multi-Physics (AMP)
On-Line Documentation
VectorOperationsKokkos.h
Go to the documentation of this file.
1#ifndef included_AMP_VectorOperationsKokkos
2#define included_AMP_VectorOperationsKokkos
3
4#include "AMP/AMP_TPLs.h"
5#include "AMP/vectors/data/VectorData.h"
6#include "AMP/vectors/operations/default/VectorOperationsDefault.h"
7
8#ifdef AMP_USE_KOKKOS
9
10 #include "Kokkos_Core.hpp"
11
12namespace AMP::LinearAlgebra {
13
20template<typename TYPE = double>
21class VectorOperationsKokkos : public VectorOperations
22{
23public:
24 // type aliases for execution and view spaces
25 using ExecSpaceHost = Kokkos::DefaultHostExecutionSpace;
26 using ViewSpaceHost = typename ExecSpaceHost::memory_space;
27 #ifdef AMP_USE_DEVICE
28 using ExecSpaceDevice = Kokkos::DefaultExecutionSpace;
29 using ViewSpaceDevice = typename ExecSpaceDevice::memory_space;
30 using ViewSpaceManaged = Kokkos::SharedSpace;
31 #endif
32
33 // Constructor
34 VectorOperationsKokkos() : d_default_ops( std::make_shared<VectorOperationsDefault<TYPE>>() ) {}
35
37 virtual ~VectorOperationsKokkos() = default;
38
40 virtual std::shared_ptr<VectorOperations> cloneOperations() const override;
41
42public:
43 // functions that operate on VectorData
44 std::string VectorOpName() const override { return "VectorOperationsKokkos"; }
45 void zero( VectorData &z ) override;
46 void setToScalar( const Scalar &alpha, VectorData &z ) override;
47 void setRandomValues( VectorData &x ) override;
48 void copy( const VectorData &x, VectorData &z ) override;
49 void copyCast( const VectorData &x, VectorData &z ) override;
50 void scale( const Scalar &alpha, const VectorData &x, VectorData &y ) override;
51 void scale( const Scalar &alpha, VectorData &x ) override;
52 void add( const VectorData &x, const VectorData &y, VectorData &z ) override;
53 void subtract( const VectorData &x, const VectorData &y, VectorData &z ) override;
54 void multiply( const VectorData &x, const VectorData &y, VectorData &z ) override;
55 void divide( const VectorData &x, const VectorData &y, VectorData &z ) override;
56 void reciprocal( const VectorData &x, VectorData &y ) override;
57 void linearSum( const Scalar &alpha,
58 const VectorData &x,
59 const Scalar &beta,
60 const VectorData &y,
61 VectorData &z ) override;
62 void
63 axpy( const Scalar &alpha, const VectorData &x, const VectorData &y, VectorData &z ) override;
64 void
65 axpby( const Scalar &alpha, const Scalar &beta, const VectorData &x, VectorData &y ) override;
66 void abs( const VectorData &x, VectorData &z ) override;
67 void addScalar( const VectorData &x, const Scalar &alpha_in, VectorData &y ) override;
68
69 void setMax( const Scalar &val, VectorData &x ) override;
70 void setMin( const Scalar &val, VectorData &x ) override;
71
72 Scalar localMin( const VectorData &x ) const override;
73 Scalar localMax( const VectorData &x ) const override;
74 Scalar localSum( const VectorData &x ) const override;
75 Scalar localL1Norm( const VectorData &x ) const override;
76 Scalar localL2Norm( const VectorData &x ) const override;
77 Scalar localMaxNorm( const VectorData &x ) const override;
78 Scalar localDot( const VectorData &x, const VectorData &y ) const override;
79 Scalar localMinQuotient( const VectorData &x, const VectorData &y ) const override;
80 Scalar localWrmsNorm( const VectorData &x, const VectorData &y ) const override;
81 Scalar localWrmsNormMask( const VectorData &x,
82 const VectorData &mask,
83 const VectorData &y ) const override;
84 bool localEquals( const VectorData &x,
85 const VectorData &y,
86 const Scalar &tol = 1e-6 ) const override;
87
88protected:
89 ExecSpaceHost d_exec_host;
90 #ifdef AMP_USE_DEVICE
91 ExecSpaceDevice d_exec_device;
92 #endif
93 std::shared_ptr<VectorOperationsDefault<TYPE>> d_default_ops;
94};
95
96#endif
97} // namespace AMP::LinearAlgebra
98
99#endif
std::vector< Scalar > localL2Norm(std::shared_ptr< const Vector > vec, const std::vector< std::string > &names)
Perform multiple local L2 norms on vector subsets.
std::vector< Scalar > localL1Norm(std::shared_ptr< const Vector > vec, const std::vector< std::string > &names)
Perform multiple local L1 norms on vector subsets.
std::vector< Scalar > localMaxNorm(std::shared_ptr< const Vector > vec, const std::vector< std::string > &names)
Perform multiple local max norms on vector subsets.
constexpr TYPE abs(const AMP::Mesh::MeshPoint< TYPE > &x)
Definition MeshPoint.h:333
void copy(size_t N, const T1 *src, T2 *dst)
Perform copy with conversion if necessary.
void copyCast(const size_t len, const T1 *vec_in, T2 *vec_out)
void zero(void *dest, std::size_t count)
Perform memory zero (pointer may be in any memory space)



Advanced Multi-Physics (AMP)
Oak Ridge National Laboratory
Idaho National Laboratory
Los Alamos National Laboratory
This page automatically produced from the
source code by doxygen
Last updated: Tue Mar 10 2026 13:06:41.
Comments on this page