![]() |
Block-Structured AMR Software Framework
|
Go to the source code of this file.
Classes | |
| struct | amrex::IsAlgVector< V > |
| struct | amrex::IsAlgVector< V > |
Namespaces | |
| namespace | amrex |
Functions | |
| template<typename V1 , typename F > requires (IsAlgVector<std::decay_t<V1> >::value) | |
| void | amrex::ForEach (V1 &x, F const &f) |
Apply f to every element of x. | |
| template<typename V1 , typename V2 , typename F > requires (IsAlgVector<std::decay_t<V1> >::value && IsAlgVector<std::decay_t<V2> >::value) | |
| void | 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 > requires (IsAlgVector<std::decay_t<V1> >::value && IsAlgVector<std::decay_t<V2> >::value && IsAlgVector<std::decay_t<V3> >::value) | |
| void | 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 > requires (IsAlgVector<std::decay_t<V1> >::value && IsAlgVector<std::decay_t<V2> >::value && IsAlgVector<std::decay_t<V3> >::value && IsAlgVector<std::decay_t<V4> >::value) | |
| void | 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 > requires (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) | |
| void | 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.).