Stokhos Package Browser (Single Doxygen Collection) Version of the Day
Loading...
Searching...
No Matches
Stokhos_Update.hpp
Go to the documentation of this file.
1// @HEADER
2// ***********************************************************************
3//
4// Stokhos Package
5// Copyright (2009) Sandia Corporation
6//
7// Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive
8// license for use of this work by or on behalf of the U.S. Government.
9//
10// Redistribution and use in source and binary forms, with or without
11// modification, are permitted provided that the following conditions are
12// met:
13//
14// 1. Redistributions of source code must retain the above copyright
15// notice, this list of conditions and the following disclaimer.
16//
17// 2. Redistributions in binary form must reproduce the above copyright
18// notice, this list of conditions and the following disclaimer in the
19// documentation and/or other materials provided with the distribution.
20//
21// 3. Neither the name of the Corporation nor the names of the
22// contributors may be used to endorse or promote products derived from
23// this software without specific prior written permission.
24//
25// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
26// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
28// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
29// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
30// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
31// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
32// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
33// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
34// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
35// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36//
37// Questions? Contact Eric T. Phipps (etphipp@sandia.gov).
38//
39// ***********************************************************************
40// @HEADER
41
42#ifndef STOKHOS_UPDATE_HPP
43#define STOKHOS_UPDATE_HPP
44
45namespace Stokhos {
46
47template< typename ValueType, typename VectorType >
48class Update
49{
50public:
51 typedef VectorType vector_type;
52 typedef ValueType value_type;
53 typedef typename vector_type::execution_space execution_space;
54 typedef typename execution_space::size_type size_type;
55
56
61
62 Update(const value_type& alpha, vector_type& x,
63 const value_type& beta, const vector_type& y)
64 : m_x( x )
65 , m_y( y )
66 , m_alpha( alpha )
67 , m_beta( beta )
68 {}
69
70 //--------------------------------------------------------------------------
71
72 KOKKOS_INLINE_FUNCTION
73 void operator()( const size_type iRow ) const
74 {
75 m_x(iRow) = m_alpha * m_x(iRow) + m_beta * m_y(iRow) ;
76 }
77
78 static void apply(const value_type& alpha, vector_type& x,
79 const value_type& beta, const vector_type& y)
80 {
81 const size_t row_count = x.extent(0);
82 Kokkos::parallel_for( row_count , Update(alpha,x,beta,y) );
83 }
84};
85
86template <typename ValueType, typename VectorType>
87void update(const ValueType& alpha, VectorType& x,
88 const ValueType& beta, const VectorType& y)
89{
90 Update<ValueType,VectorType>::apply( alpha , x , beta, y );
91}
92
93} // namespace Stokhos
94
95#endif
const vector_type m_y
vector_type::execution_space execution_space
VectorType vector_type
KOKKOS_INLINE_FUNCTION void operator()(const size_type iRow) const
ValueType value_type
const value_type m_alpha
execution_space::size_type size_type
const value_type m_beta
static void apply(const value_type &alpha, vector_type &x, const value_type &beta, const vector_type &y)
Update(const value_type &alpha, vector_type &x, const value_type &beta, const vector_type &y)
Top-level namespace for Stokhos classes and functions.
void update(const ValueType &alpha, VectorType &x, const ValueType &beta, const VectorType &y)