|
template<typename ValueType > |
gko::detail::temporary_conversion< Vector< ValueType > > | make_temporary_conversion (LinOp *matrix) |
| Convert the given LinOp from experimental::distributed::Vector<...> to experimental::distributed::Vector<ValueType>. More...
|
|
template<typename ValueType > |
gko::detail::temporary_conversion< const Vector< ValueType > > | make_temporary_conversion (const LinOp *matrix) |
| Convert the given LinOp from experimental::distributed::Vector<...> to experimental::distributed::Vector<ValueType>. More...
|
|
template<typename ValueType , typename Function , typename... Args> |
void | precision_dispatch (Function fn, Args *... linops) |
| Calls the given function with each given argument LinOp temporarily converted into experimental::distributed::Vector<ValueType> as parameters. More...
|
|
template<typename ValueType , typename Function > |
void | precision_dispatch_real_complex (Function fn, const LinOp *in, LinOp *out) |
| Calls the given function with the given LinOps temporarily converted to experimental::distributed::Vector<ValueType>* as parameters. More...
|
|
template<typename ValueType , typename Function > |
void | precision_dispatch_real_complex (Function fn, const LinOp *alpha, const LinOp *in, LinOp *out) |
| Calls the given function with the given LinOps temporarily converted to experimental::distributed::Vector<ValueType>* as parameters. More...
|
|
template<typename ValueType , typename Function > |
void | precision_dispatch_real_complex (Function fn, const LinOp *alpha, const LinOp *in, const LinOp *beta, LinOp *out) |
| Calls the given function with the given LinOps temporarily converted to experimental::distributed::Vector<ValueType>* as parameters. More...
|
|
template<typename LocalIndexType , typename GlobalIndexType > |
std::unique_ptr< Partition< LocalIndexType, GlobalIndexType > > | build_partition_from_local_range (std::shared_ptr< const Executor > exec, mpi::communicator comm, span local_range) |
| Builds a partition from a local range. More...
|
|
template<typename LocalIndexType , typename GlobalIndexType > |
std::unique_ptr< Partition< LocalIndexType, GlobalIndexType > > | build_partition_from_local_size (std::shared_ptr< const Executor > exec, mpi::communicator comm, size_type local_size) |
| Builds a partition from a local size. More...
|
|
The distributed namespace.
template<typename ValueType >
gko::detail::temporary_conversion<const Vector<ValueType> > gko::experimental::distributed::make_temporary_conversion |
( |
const LinOp * |
matrix | ) |
|
Convert the given LinOp from experimental::distributed::Vector<...> to experimental::distributed::Vector<ValueType>.
The conversion tries to convert the input LinOp to all Dense types with value type recursively reachable by next_precision<...> starting from the ValueType template parameter. This means that all real-to-real and complex-to-complex conversions for default precisions are being considered. If the input matrix is non-const, the contents of the modified converted object will be converted back to the input matrix when the returned object is destroyed. This may lead to a loss of precision!
- Parameters
-
matrix | the input matrix which is supposed to be converted. It is wrapped unchanged if it is already of type experimental::distributed::Vector<ValueType>, otherwise it will be converted to this type if possible. |
- Returns
- a detail::temporary_conversion pointing to the (potentially converted) object.
- Exceptions
-
NotSupported | if the input matrix cannot be converted to experimental::distributed::Vector<ValueType> |
- Template Parameters
-
ValueType | the value type into whose associated Vector type to convert the input LinOp. |
template<typename ValueType >
gko::detail::temporary_conversion<Vector<ValueType> > gko::experimental::distributed::make_temporary_conversion |
( |
LinOp * |
matrix | ) |
|
Convert the given LinOp from experimental::distributed::Vector<...> to experimental::distributed::Vector<ValueType>.
The conversion tries to convert the input LinOp to all Dense types with value type recursively reachable by next_precision<...> starting from the ValueType template parameter. This means that all real-to-real and complex-to-complex conversions for default precisions are being considered. If the input matrix is non-const, the contents of the modified converted object will be converted back to the input matrix when the returned object is destroyed. This may lead to a loss of precision!
- Parameters
-
matrix | the input matrix which is supposed to be converted. It is wrapped unchanged if it is already of type experimental::distributed::Vector<ValueType>, otherwise it will be converted to this type if possible. |
- Returns
- a detail::temporary_conversion pointing to the (potentially converted) object.
- Exceptions
-
NotSupported | if the input matrix cannot be converted to experimental::distributed::Vector<ValueType> |
- Template Parameters
-
ValueType | the value type into whose associated Vector type to convert the input LinOp. |
template<typename ValueType , typename Function >
void gko::experimental::distributed::precision_dispatch_real_complex |
( |
Function |
fn, |
|
|
const LinOp * |
alpha, |
|
|
const LinOp * |
in, |
|
|
LinOp * |
out |
|
) |
| |
Calls the given function with the given LinOps temporarily converted to experimental::distributed::Vector<ValueType>* as parameters.
If ValueType is real and both input vectors are complex, uses experimental::distributed::Vector::get_real_view() to convert them into real matrices after precision conversion.
- See also
- precision_dispatch()
template<typename ValueType , typename Function >
void gko::experimental::distributed::precision_dispatch_real_complex |
( |
Function |
fn, |
|
|
const LinOp * |
in, |
|
|
LinOp * |
out |
|
) |
| |
Calls the given function with the given LinOps temporarily converted to experimental::distributed::Vector<ValueType>* as parameters.
If ValueType is real and both input vectors are complex, uses experimental::distributed::Vector::get_real_view() to convert them into real matrices after precision conversion.
- See also
- precision_dispatch()