Opm::cuistl::CuOwnerOverlapCopy< field_type, block_size, OwnerOverlapCopyCommunicationType > Class Template Reference

CUDA compatiable variant of Dune::OwnerOverlapCopyCommunication. More...

#include <CuOwnerOverlapCopy.hpp>

Public Types

using X = CuVector< field_type >
 

Public Member Functions

 CuOwnerOverlapCopy (std::shared_ptr< GPUSender< field_type, OwnerOverlapCopyCommunicationType > > sender)
 
void copyOwnerToAll (const X &source, X &dest) const
 
void dot (const X &x, const X &y, field_type &output) const
 
field_type norm (const X &x) const
 
void project (X &x) const
 

Detailed Description

template<class field_type, int block_size, class OwnerOverlapCopyCommunicationType>
class Opm::cuistl::CuOwnerOverlapCopy< field_type, block_size, OwnerOverlapCopyCommunicationType >

CUDA compatiable variant of Dune::OwnerOverlapCopyCommunication.

This class can essentially be seen as an adapter around Dune::OwnerOverlapCopyCommunication, and should work as a Dune::OwnerOverlapCopyCommunication on CuVectors

Note
This currently only has the functionality to parallelize the linear solve.
Template Parameters
field_typeshould be a field_type supported by CuVector (double, float)
block_sizethe block size used (this is relevant for say figuring out the correct indices)
OwnerOverlapCopyCommunicationTypeshould mimic Dune::OwnerOverlapCopyCommunication.

Member Typedef Documentation

◆ X

template<class field_type , int block_size, class OwnerOverlapCopyCommunicationType >
using Opm::cuistl::CuOwnerOverlapCopy< field_type, block_size, OwnerOverlapCopyCommunicationType >::X = CuVector<field_type>

Constructor & Destructor Documentation

◆ CuOwnerOverlapCopy()

template<class field_type , int block_size, class OwnerOverlapCopyCommunicationType >
Opm::cuistl::CuOwnerOverlapCopy< field_type, block_size, OwnerOverlapCopyCommunicationType >::CuOwnerOverlapCopy ( std::shared_ptr< GPUSender< field_type, OwnerOverlapCopyCommunicationType > >  sender)
inline

Member Function Documentation

◆ copyOwnerToAll()

template<class field_type , int block_size, class OwnerOverlapCopyCommunicationType >
void Opm::cuistl::CuOwnerOverlapCopy< field_type, block_size, OwnerOverlapCopyCommunicationType >::copyOwnerToAll ( const X source,
X dest 
) const
inline

◆ dot()

template<class field_type , int block_size, class OwnerOverlapCopyCommunicationType >
void Opm::cuistl::CuOwnerOverlapCopy< field_type, block_size, OwnerOverlapCopyCommunicationType >::dot ( const X x,
const X y,
field_type &  output 
) const
inline

◆ norm()

template<class field_type , int block_size, class OwnerOverlapCopyCommunicationType >
field_type Opm::cuistl::CuOwnerOverlapCopy< field_type, block_size, OwnerOverlapCopyCommunicationType >::norm ( const X x) const
inline

◆ project()

template<class field_type , int block_size, class OwnerOverlapCopyCommunicationType >
void Opm::cuistl::CuOwnerOverlapCopy< field_type, block_size, OwnerOverlapCopyCommunicationType >::project ( X x) const
inline

The documentation for this class was generated from the following file: