gpu_smart_pointer.hpp File Reference
#include <cuda_runtime.h>
#include <memory>
#include <opm/common/utility/gpuDecorators.hpp>
#include <opm/simulators/linalg/gpuistl/detail/gpu_safe_call.hpp>
#include <opm/simulators/linalg/gpuistl/detail/is_gpu_pointer.hpp>
Include dependency graph for gpu_smart_pointer.hpp:

Go to the source code of this file.

Classes

struct  Opm::gpuistl::GpuArrayDeleter< T >
 Deleter that releases a GPU array allocation made with cudaMalloc. More...
 
struct  Opm::gpuistl::GpuManagedDeleter< T >
 Deleter for objects living in unified (managed) GPU memory. More...
 
class  Opm::gpuistl::PointerView< T >
 A view towards a smart pointer to GPU-allocated memory. More...
 
class  Opm::gpuistl::PointerView< void >
 Specialization of PointerView for void type This is needed beause we cannot have a PointerView<void> specialization due to dereferincing a void ptr. More...
 
class  Opm::gpuistl::ValueAsPointer< T >
 A value stored with a pointer interface. Can be used to wrap objects in GPU kernels that were otherwise stored as pointers. More...
 

Namespaces

namespace  Opm
 
namespace  Opm::gpuistl
 A small, fixed‑dimension MiniVector class backed by std::array that can be used in both host and CUDA device code.
 

Functions

template<typename T >
std::shared_ptr< T > Opm::gpuistl::make_gpu_shared_ptr ()
 Creates a shared pointer managing GPU-allocated memory of the specified element type. More...
 
template<typename T >
std::shared_ptr< T > Opm::gpuistl::make_gpu_shared_ptr (const T &value)
 Creates a shared pointer managing GPU-allocated memory of the specified element type. More...
 
template<typename T >
auto Opm::gpuistl::make_gpu_unique_ptr ()
 Creates a unique pointer managing GPU-allocated memory of the specified element type. More...
 
template<typename T >
auto Opm::gpuistl::make_gpu_unique_ptr (const T &value)
 Creates a unique pointer managing GPU-allocated memory of the specified element type. More...
 
template<typename T >
std::unique_ptr< T[], GpuArrayDeleter< T > > Opm::gpuistl::make_gpu_unique_ptr_array (std::size_t numElements)
 Creates a unique pointer managing a GPU-allocated array of numElements elements. More...
 
template<typename T , class... Args>
std::unique_ptr< T, GpuManagedDeleter< T > > Opm::gpuistl::make_gpu_managed_unique_ptr (Args &&... args)
 Creates a unique pointer managing GPU unified (managed) memory for a single object. More...
 
template<class T >
Opm::gpuistl::copyFromGPU (const T *value)
 Copies a value from GPU-allocated memory to the host. More...
 
template<class T >
Opm::gpuistl::copyFromGPU (const std::shared_ptr< T > &value)
 Copies a value from GPU-allocated memory to the host. More...
 
template<class T , class Deleter >
Opm::gpuistl::copyFromGPU (const std::unique_ptr< T, Deleter > &value)
 Copies a value from GPU-allocated memory to the host. More...
 
template<class T >
void Opm::gpuistl::copyToGPU (const T &value, T *ptr)
 Copies a value from the host to GPU-allocated memory. More...
 
template<class T >
void Opm::gpuistl::copyToGPU (const T &value, const std::shared_ptr< T > &ptr)
 Copies a value from the host to GPU-allocated memory using a shared_ptr. More...
 
template<class T , class Deleter >
void Opm::gpuistl::copyToGPU (const T &value, const std::unique_ptr< T, Deleter > &ptr)
 Copies a value from the host to GPU-allocated memory using a unique_ptr. More...
 
template<class T >
PointerView< T > Opm::gpuistl::make_view (const std::shared_ptr< T > &ptr)
 
template<class T , class Deleter >
PointerView< T > Opm::gpuistl::make_view (const std::unique_ptr< T, Deleter > &ptr)
 

Detailed Description

defines convenience classes and functions for using std::shared_ptr and std::unique_ptr with GPU allocated memory.