|
My Project
|
Derived class of GPUSender that handles MPI calls that should NOT use GPU direct communicatoin The implementation moves data fromthe GPU to the CPU and then sends it using regular MPI. More...
#include <GpuOwnerOverlapCopy.hpp>
Public Types | |
| using | X = GpuVector< field_type > |
Public Types inherited from Opm::gpuistl::GPUSender< field_type, OwnerOverlapCopyCommunicationType > | |
| using | X = GpuVector< field_type > |
Public Member Functions | |
| GPUObliviousMPISender (const OwnerOverlapCopyCommunicationType &cpuOwnerOverlapCopy) | |
| void | copyOwnerToAll (const X &source, X &dest) const override |
| copyOwnerToAll will copy source to the CPU, then call OwnerOverlapCopyCommunicationType::copyOwnerToAll on the copied data, and copy the result back to the GPU | |
Public Member Functions inherited from Opm::gpuistl::GPUSender< field_type, OwnerOverlapCopyCommunicationType > | |
| GPUSender (const OwnerOverlapCopyCommunicationType &cpuOwnerOverlapCopy) | |
| void | project (X &x) const |
| project will project x to the owned subspace | |
| void | dot (const X &x, const X &y, field_type &output) const |
| dot will carry out the dot product between x and y on the owned indices, then sum up the result across MPI processes. | |
| field_type | norm (const X &x) const |
| norm computes the l^2-norm of x across processes. | |
Additional Inherited Members | |
Protected Attributes inherited from Opm::gpuistl::GPUSender< field_type, OwnerOverlapCopyCommunicationType > | |
| std::once_flag | m_initializedIndices |
| std::unique_ptr< GpuVector< int > > | m_indicesOwner |
| std::unique_ptr< GpuVector< int > > | m_indicesCopy |
| const OwnerOverlapCopyCommunicationType & | m_cpuOwnerOverlapCopy |
Derived class of GPUSender that handles MPI calls that should NOT use GPU direct communicatoin The implementation moves data fromthe GPU to the CPU and then sends it using regular MPI.
| field_type | is float or double |
| block_size | is the blocksize of the blockelements in the matrix |
| OwnerOverlapCopyCommunicationType | is typically a Dune::LinearOperator::communication_type |
|
inlineoverridevirtual |
copyOwnerToAll will copy source to the CPU, then call OwnerOverlapCopyCommunicationType::copyOwnerToAll on the copied data, and copy the result back to the GPU
| [in] | source | |
| [out] | dest |
Implements Opm::gpuistl::GPUSender< field_type, OwnerOverlapCopyCommunicationType >.