|
| template<typename V1 , typename F > |
| std::enable_if_t< IsAlgVector< std::decay_t< V1 > >::value > | amrex::ForEach (V1 &x, F const &f) |
| | Apply f to every element of x.
|
| |
| template<typename V1 , typename V2 , typename F > |
| std::enable_if_t< IsAlgVector< std::decay_t< V1 > >::value &&IsAlgVector< std::decay_t< V2 > >::value > | amrex::ForEach (V1 &x, V2 &y, F const &f) |
| | Apply f to paired entries from x and y.
|
| |
| template<typename V1 , typename V2 , typename V3 , typename F > |
| std::enable_if_t< IsAlgVector< std::decay_t< V1 > >::value &&IsAlgVector< std::decay_t< V2 > >::value &&IsAlgVector< std::decay_t< V3 > >::value > | amrex::ForEach (V1 &x, V2 &y, V3 &z, F const &f) |
| | Apply f to triplets drawn from x, y, and z.
|
| |
| template<typename V1 , typename V2 , typename V3 , typename V4 , typename F > |
| std::enable_if_t< IsAlgVector< std::decay_t< V1 > >::value &&IsAlgVector< std::decay_t< V2 > >::value &&IsAlgVector< std::decay_t< V3 > >::value &&IsAlgVector< std::decay_t< V4 > >::value > | amrex::ForEach (V1 &x, V2 &y, V3 &z, V4 &a, F const &f) |
| | Apply f to tuples drawn from four AlgVectors.
|
| |
| template<typename V1 , typename V2 , typename V3 , typename V4 , typename V5 , typename F > |
| std::enable_if_t< IsAlgVector< std::decay_t< V1 > >::value &&IsAlgVector< std::decay_t< V2 > >::value &&IsAlgVector< std::decay_t< V3 > >::value &&IsAlgVector< std::decay_t< V4 > >::value &&IsAlgVector< std::decay_t< V5 > >::value > | amrex::ForEach (V1 &x, V2 &y, V3 &z, V4 &a, V5 &b, F const &f) |
| | Apply f to tuples spanning five AlgVectors.
|
| |
| template<typename T , typename Allocator > |
| T | amrex::Dot (AlgVector< T, Allocator > const &x, AlgVector< T, Allocator > const &y, bool local=false) |
| | Dot product of two AlgVectors with optional local-only reduction.
|
| |
| template<typename T , typename Allocator > |
| void | amrex::Axpy (AlgVector< T, Allocator > &y, T a, AlgVector< T, Allocator > const &x) |
| | y = ax + y. For GPU builds this is asynchronous with respect to the host.
|
| |
| template<typename T , typename Allocator > |
| void | amrex::Xpay (AlgVector< T, Allocator > &y, T a, AlgVector< T, Allocator > const &x) |
| | y = x + a*y. For GPU builds this is asynchronous with respect to the host.
|
| |
| template<typename T , typename Allocator > |
| void | amrex::LinComb (AlgVector< T, Allocator > &y, T a, AlgVector< T, Allocator > const &xa, T b, AlgVector< T, Allocator > const &xb) |
| | y = a*xa + b*xb. For GPU builds this is asynchronous with respect to the host.
|
| |
Device-friendly helpers for element-wise operations on AlgVector specializations (ForEach, BLAS-like routines, etc.).