|
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 ValueType , typename LocalIndexType , typename GlobalIndexType > |
device_matrix_data< ValueType, GlobalIndexType > | assemble_rows_from_neighbors (mpi::communicator comm, const device_matrix_data< ValueType, GlobalIndexType > &input, ptr_param< const Partition< LocalIndexType, GlobalIndexType >> partition) |
| Assembles device_matrix_data entries owned by this MPI rank from other ranks and communicates entries located on this MPI rank owned by other ranks to their respective owners. 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 , typename LocalIndexType , typename GlobalIndexType >
Assembles device_matrix_data entries owned by this MPI rank from other ranks and communicates entries located on this MPI rank owned by other ranks to their respective owners.
This can be useful e.g. in a finite element code where each rank assembles a local contribution to a global system matrix and the global matrix has to be assembled by summing up the local contributions on rank boundaries. The partition used is only relevant for row ownership.
- Parameters
-
comm | the communicator used to assemble the global matrix. |
input | the device_matrix_data structure. |
partition | the partition used to determine row owndership. |
- Returns
- the globally assembled device_matrix_data structure for this MPI rank.
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_base<...> 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_base<...> 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()