Auxiliary class used by class GroupCommunicator implementing its device (GPU) code paths for data passed as Array<T>. The operations are performed on the configured mfem::Device and can use GPU-aware MPI, if enabled for the device.
More...
#include <communication.hpp>
|
| enum class | Op { Sum
, Min
, Max
} |
| | Reduction operation applied at the receiving dofs. More...
|
| |
|
| | DeviceGroupCommunicator (const GroupCommunicator &gc_) |
| | Construct a device communicator based on the GroupCommunicator gc_.
|
| |
| template<typename T > |
| void | BcastBeginTDofs (Array< T > &x_tdof) const |
| | Begin a group broadcast of the true-dof data x_tdof.
|
| |
| template<typename T > |
| void | BcastBeginLDofs (Array< T > &x_ldof) const |
| | Begin a group broadcast of the local-dof data x_ldof.
|
| |
| template<typename T > |
| void | BcastEndLDofs (Array< T > &x_ldof) const |
| | Finalize a group broadcast into the local-dof data x_ldof.
|
| |
| template<typename T > |
| void | ReduceBeginLDofs (const Array< T > &x_ldof) const |
| | Begin a group reduction of the local-dof data x_ldof.
|
| |
| template<typename T > |
| void | ReduceEndTDofs (Array< T > &x_tdof, Op op) const |
| | Finalize a group reduction into the true-dof data x_tdof, applying the reduction operation op.
|
| |
| template<typename T > |
| void | ReduceEndLDofs (Array< T > &x_ldof, Op op) const |
| | Finalize a group reduction into the local-dof data x_ldof, applying the reduction operation op.
|
| |
| template<typename T > |
| void | CopyTDofsToLDofs (const Array< T > &x_tdof, Array< T > &x_ldof) const |
| | Kernel: copy ltdofs from x_tdof to ldofs in x_ldof, i.e. x_ldof[ltdof_ldof[i]] = x_tdof[i].
|
| |
| template<typename T > |
| void | Prolongate (const Array< T > &x_tdof, Array< T > &x_ldof) const |
| | Prolongate the true-dof data x_tdof to the local-dof data x_ldof.
|
| |
| template<typename T > |
| void | ProlongateTranspose (const Array< T > &x_ldof, Array< T > &x_tdof, Op op=Op::Sum) const |
| | Transpose of Prolongate(): reduce the local-dof data x_ldof into the true-dof data x_tdof, applying the operation op.
|
| |
| template<typename T > |
| void | Restrict (const Array< T > &x_ldof, Array< T > &x_tdof) const |
| | Kernel: copy owned ldofs from x_ldof to ltdofs in x_tdof, i.e. x_tdof[i] = x_ldof[ltdof_ldof[i]].
|
| |
| template<typename T > |
| void | RestrictTranspose (const Array< T > &x_tdof, Array< T > &x_ldof) const |
| | Transpose of Restrict(): copy the true-dof data x_tdof into the owned local dofs of x_ldof and set the remaining (external) local dofs to zero.
|
| |
|
| template<typename T > |
| void | Exchange (const Array< T > &send_buf, const Array< int > &send_offsets, Array< T > &recv_buf, const Array< int > &recv_offsets, int tag) const |
| |
| template<typename T > |
| void | ExchangeSharedToExternal (const Array< T > &shr_buf, Array< T > &ext_buf) const |
| |
| template<typename T > |
| void | ExchangeExternalToShared (const Array< T > &ext_buf, Array< T > &shr_buf) const |
| |
| template<typename T > |
| void | ReduceBeginCopy (const Array< T > &x_ldof, Array< T > &ext_buf_t) const |
| |
| template<typename T > |
| void | ReduceEndAssembleTDofs (const Array< T > &shr_buf_t, Array< T > &x_tdof, Op op) const |
| |
| template<typename T > |
| void | BcastBeginCopyTDofs (const Array< T > &x_tdof, Array< T > &shr_buf_t) const |
| |
| template<typename T > |
| void | BcastBeginCopyLDofs (const Array< T > &x_ldof, Array< T > &shr_buf_t) const |
| |
| template<typename T > |
| void | BcastEndCopy (const Array< T > &ext_buf_t, Array< T > &x_ldof) const |
| |
| void | WaitAll () const |
| |
Auxiliary class used by class GroupCommunicator implementing its device (GPU) code paths for data passed as Array<T>. The operations are performed on the configured mfem::Device and can use GPU-aware MPI, if enabled for the device.
Definition at line 604 of file communication.hpp.
◆ buffer_max_type
◆ Op
Reduction operation applied at the receiving dofs.
Definition at line 610 of file communication.hpp.
◆ DeviceGroupCommunicator()
| mfem::DeviceGroupCommunicator::DeviceGroupCommunicator |
( |
const GroupCommunicator & | gc_ | ) |
|
|
explicit |
◆ BcastBeginCopyLDofs()
template<typename T >
| void mfem::DeviceGroupCommunicator::BcastBeginCopyLDofs |
( |
const Array< T > & | x_ldof, |
|
|
Array< T > & | shr_buf_t ) const |
|
protected |
◆ BcastBeginCopyTDofs()
template<typename T >
| void mfem::DeviceGroupCommunicator::BcastBeginCopyTDofs |
( |
const Array< T > & | x_tdof, |
|
|
Array< T > & | shr_buf_t ) const |
|
protected |
◆ BcastBeginLDofs()
template<typename T >
| void mfem::DeviceGroupCommunicator::BcastBeginLDofs |
( |
Array< T > & | x_ldof | ) |
const |
◆ BcastBeginTDofs()
template<typename T >
| void mfem::DeviceGroupCommunicator::BcastBeginTDofs |
( |
Array< T > & | x_tdof | ) |
const |
◆ BcastEndCopy()
template<typename T >
| void mfem::DeviceGroupCommunicator::BcastEndCopy |
( |
const Array< T > & | ext_buf_t, |
|
|
Array< T > & | x_ldof ) const |
|
protected |
◆ BcastEndLDofs()
template<typename T >
| void mfem::DeviceGroupCommunicator::BcastEndLDofs |
( |
Array< T > & | x_ldof | ) |
const |
Finalize a group broadcast into the local-dof data x_ldof.
Definition at line 1993 of file communication.cpp.
◆ CopyTDofsToLDofs()
template<typename T >
| void mfem::DeviceGroupCommunicator::CopyTDofsToLDofs |
( |
const Array< T > & | x_tdof, |
|
|
Array< T > & | x_ldof ) const |
Kernel: copy ltdofs from x_tdof to ldofs in x_ldof, i.e. x_ldof[ltdof_ldof[i]] = x_tdof[i].
Definition at line 2036 of file communication.cpp.
◆ Exchange()
template<typename T >
| void mfem::DeviceGroupCommunicator::Exchange |
( |
const Array< T > & | send_buf, |
|
|
const Array< int > & | send_offsets, |
|
|
Array< T > & | recv_buf, |
|
|
const Array< int > & | recv_offsets, |
|
|
int | tag ) const |
|
protected |
◆ ExchangeExternalToShared()
template<typename T >
| void mfem::DeviceGroupCommunicator::ExchangeExternalToShared |
( |
const Array< T > & | ext_buf, |
|
|
Array< T > & | shr_buf ) const |
|
protected |
◆ ExchangeSharedToExternal()
template<typename T >
| void mfem::DeviceGroupCommunicator::ExchangeSharedToExternal |
( |
const Array< T > & | shr_buf, |
|
|
Array< T > & | ext_buf ) const |
|
protected |
◆ Prolongate()
template<typename T >
| void mfem::DeviceGroupCommunicator::Prolongate |
( |
const Array< T > & | x_tdof, |
|
|
Array< T > & | x_ldof ) const |
Prolongate the true-dof data x_tdof to the local-dof data x_ldof.
Definition at line 2044 of file communication.cpp.
◆ ProlongateTranspose()
template<typename T >
| void mfem::DeviceGroupCommunicator::ProlongateTranspose |
( |
const Array< T > & | x_ldof, |
|
|
Array< T > & | x_tdof, |
|
|
Op | op = Op::Sum ) const |
Transpose of Prolongate(): reduce the local-dof data x_ldof into the true-dof data x_tdof, applying the operation op.
Definition at line 2059 of file communication.cpp.
◆ ReduceBeginCopy()
template<typename T >
| void mfem::DeviceGroupCommunicator::ReduceBeginCopy |
( |
const Array< T > & | x_ldof, |
|
|
Array< T > & | ext_buf_t ) const |
|
protected |
◆ ReduceBeginLDofs()
template<typename T >
| void mfem::DeviceGroupCommunicator::ReduceBeginLDofs |
( |
const Array< T > & | x_ldof | ) |
const |
◆ ReduceEndAssembleTDofs()
template<typename T >
| void mfem::DeviceGroupCommunicator::ReduceEndAssembleTDofs |
( |
const Array< T > & | shr_buf_t, |
|
|
Array< T > & | x_tdof, |
|
|
Op | op ) const |
|
protected |
◆ ReduceEndLDofs()
template<typename T >
| void mfem::DeviceGroupCommunicator::ReduceEndLDofs |
( |
Array< T > & | x_ldof, |
|
|
Op | op ) const |
Finalize a group reduction into the local-dof data x_ldof, applying the reduction operation op.
Definition at line 2018 of file communication.cpp.
◆ ReduceEndTDofs()
template<typename T >
| void mfem::DeviceGroupCommunicator::ReduceEndTDofs |
( |
Array< T > & | x_tdof, |
|
|
Op | op ) const |
Finalize a group reduction into the true-dof data x_tdof, applying the reduction operation op.
Definition at line 2010 of file communication.cpp.
◆ Restrict()
template<typename T >
| void mfem::DeviceGroupCommunicator::Restrict |
( |
const Array< T > & | x_ldof, |
|
|
Array< T > & | x_tdof ) const |
Kernel: copy owned ldofs from x_ldof to ltdofs in x_tdof, i.e. x_tdof[i] = x_ldof[ltdof_ldof[i]].
Definition at line 2075 of file communication.cpp.
◆ RestrictTranspose()
template<typename T >
| void mfem::DeviceGroupCommunicator::RestrictTranspose |
( |
const Array< T > & | x_tdof, |
|
|
Array< T > & | x_ldof ) const |
Transpose of Restrict(): copy the true-dof data x_tdof into the owned local dofs of x_ldof and set the remaining (external) local dofs to zero.
Definition at line 2083 of file communication.cpp.
◆ WaitAll()
| void mfem::DeviceGroupCommunicator::WaitAll |
( |
| ) |
const |
|
protected |
◆ GroupCommunicator
◆ ext_buf
◆ ext_buf_offsets
| Array<int> mfem::DeviceGroupCommunicator::ext_buf_offsets |
|
protected |
◆ ext_ldof
| Array<int> mfem::DeviceGroupCommunicator::ext_ldof |
|
protected |
◆ gc
◆ num_requests
| int mfem::DeviceGroupCommunicator::num_requests |
|
mutableprotected |
◆ requests
| Array<MPI_Request> mfem::DeviceGroupCommunicator::requests |
|
mutableprotected |
◆ shr_buf
◆ shr_buf_offsets
| Array<int> mfem::DeviceGroupCommunicator::shr_buf_offsets |
|
protected |
◆ shr_ldof
| Array<int> mfem::DeviceGroupCommunicator::shr_ldof |
|
protected |
◆ shr_ltdof
| Array<int> mfem::DeviceGroupCommunicator::shr_ltdof |
|
protected |
◆ unq_ldof
| Array<int> mfem::DeviceGroupCommunicator::unq_ldof |
|
protected |
◆ unq_ltdof
| Array<int> mfem::DeviceGroupCommunicator::unq_ltdof |
|
protected |
◆ unq_shr_i
| Array<int> mfem::DeviceGroupCommunicator::unq_shr_i |
|
protected |
◆ unq_shr_j
| Array<int> mfem::DeviceGroupCommunicator::unq_shr_j |
|
protected |
The documentation for this class was generated from the following files: