22namespace Experimental {
31 throw std::runtime_error(
"ScalarBufferContainer can only be of size 1");
33 std::size_t
size()
const {
return 1; }
49 std::size_t
size()
const {
return _vec.size(); }
54 throw std::bad_function_call();
61 throw std::bad_function_call();
88 other._data =
nullptr;
97 throw std::bad_function_call();
104 throw std::bad_function_call();
129 other._data =
nullptr;
148 return static_cast<double *
>(
_data);
165 return static_cast<double *
>(
_data);
183template <
class Container>
186 using Queue = std::queue<Container>;
251 out->vec().setCudaStream(stream);
size_t size(const MatrixT &matrix)
retrieve the size of a square matrix
double * cpuWritePtr() override
BufferImpl(std::size_t size, QueuesMap &queuesMap)
double * gpuWritePtr() override
std::map< std::size_t, Queue > QueuesMap
std::queue< Container > Queue
double const * gpuReadPtr() const override
double const * cpuReadPtr() const override
BufferQueuesMaps * _queuesMaps
AbsBuffer * makeScalarBuffer()
AbsBuffer * makeCpuBuffer(std::size_t size)
AbsBuffer * makePinnedBuffer(std::size_t size, cudaStream_t *stream=nullptr)
AbsBuffer * makeGpuBuffer(std::size_t size)
std::vector< double > _vec
CPUBufferContainer(std::size_t size)
double const * gpuReadPtr() const
double const * cpuReadPtr() const
double const * cpuReadPtr() const
GPUBufferContainer(const GPUBufferContainer &)=delete
double * gpuWritePtr() const
GPUBufferContainer(std::size_t size)
GPUBufferContainer & operator=(const GPUBufferContainer &)=delete
double * cpuWritePtr() const
GPUBufferContainer(GPUBufferContainer &&other)
GPUBufferContainer & operator=(GPUBufferContainer &&other)
double const * gpuReadPtr() const
LastAccessType _lastAccess
PinnedBufferContainer & operator=(const PinnedBufferContainer &)=delete
cudaStream_t * _cudaStream
PinnedBufferContainer(const PinnedBufferContainer &)=delete
PinnedBufferContainer(std::size_t size)
double const * cpuReadPtr() const
double const * gpuReadPtr() const
void setCudaStream(cudaStream_t *stream)
GPUBufferContainer _gpuBuffer
PinnedBufferContainer & operator=(PinnedBufferContainer &&other)
PinnedBufferContainer(PinnedBufferContainer &&other)
double const * cpuReadPtr() const
double const * gpuReadPtr() const
ScalarBufferContainer(std::size_t size)
virtual void * cudaMalloc(size_t)
virtual void memcpyToCPU(void *, const void *, size_t, cudaStream_t *=nullptr)
virtual void cudaFree(void *)
virtual void * cudaMallocHost(size_t)
virtual void memcpyToCUDA(void *, const void *, size_t, cudaStream_t *=nullptr)
tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tb...
R__EXTERN RooBatchComputeInterface * dispatchCUDA
PinnedBuffer::QueuesMap pinnedBufferQueuesMap
ScalarBuffer::QueuesMap scalarBufferQueuesMap
CPUBuffer::QueuesMap cpuBufferQueuesMap
GPUBuffer::QueuesMap gpuBufferQueuesMap