alpaka
Abstraction Library for Parallel Kernel Acceleration
Loading...
Searching...
No Matches
ConstBufUniformCudaHipRt.hpp
Go to the documentation of this file.
1
/* Copyright 2025 Alexander Matthes, Benjamin Worpitz, Matthias Werner, René Widera, Andrea Bocci, Jan Stephan,
2
* Bernhard Manfred Gruber, Antonio Di Pilato, Anton Reinhard
3
* SPDX-License-Identifier: MPL-2.0
4
*/
5
6
#pragma once
7
8
#include "
alpaka/core/Assert.hpp
"
9
#include "
alpaka/core/Cuda.hpp
"
10
#include "
alpaka/core/Hip.hpp
"
11
#include "
alpaka/dev/DevUniformCudaHipRt.hpp
"
12
#include "
alpaka/dev/Traits.hpp
"
13
#include "
alpaka/dim/DimIntegralConst.hpp
"
14
#include "
alpaka/mem/buf/Traits.hpp
"
15
#include "
alpaka/mem/buf/uniformCudaHip/BufUniformCudaHipRtImpl.hpp
"
16
#include "
alpaka/mem/view/ViewAccessOps.hpp
"
17
#include "
alpaka/meta/DependentFalseType.hpp
"
18
#include "
alpaka/vec/Vec.hpp
"
19
20
#include <cstddef>
21
#include <functional>
22
#include <memory>
23
#include <type_traits>
24
25
#if defined(ALPAKA_ACC_GPU_CUDA_ENABLED) || defined(ALPAKA_ACC_GPU_HIP_ENABLED)
26
27
namespace
alpaka
28
{
29
// Forward declarations.
30
struct
ApiCudaRt;
31
struct
ApiHipRt;
32
template
<
typename
TApi,
typename
TElem,
typename
TDim,
typename
TIdx>
33
class
BufUniformCudaHipRt;
34
35
//! The CUDA/HIP memory buffer.
36
template
<
typename
TApi,
typename
TElem,
typename
TDim,
typename
TIdx>
37
struct
ConstBufUniformCudaHipRt
38
:
internal::ViewAccessorType
<DevUniformCudaHipRt<TApi>, ConstBufUniformCudaHipRt<TApi, TElem, TDim, TIdx>>
39
{
40
static_assert
(!std::is_const_v<TElem>,
"The elem type of the buffer must not be const"
);
41
static_assert
(!std::is_const_v<TIdx>,
"The idx type of the buffer must not be const!"
);
42
43
//! Constructor
44
template
<
typename
TExtent,
typename
Deleter>
45
ALPAKA_FN_HOST
ConstBufUniformCudaHipRt
(
46
DevUniformCudaHipRt<TApi>
const
& dev,
47
TElem*
const
pMem,
48
Deleter deleter,
49
TExtent
const
& extent,
50
std::size_t pitchBytes)
51
: m_spBufImpl{
std
::make_shared<detail::BufUniformCudaHipRtImpl<TApi, TElem, TDim, TIdx>>(
52
dev,
53
pMem,
54
std
::move(deleter),
55
extent,
56
pitchBytes)}
57
{
58
}
59
60
ALPAKA_FN_HOST
ConstBufUniformCudaHipRt
(
BufUniformCudaHipRt<TApi, TElem, TDim, TIdx>
const
& buf)
61
: m_spBufImpl{buf.m_spBufImpl}
62
{
63
}
64
65
ALPAKA_FN_HOST
ConstBufUniformCudaHipRt
(
BufUniformCudaHipRt<TApi, TElem, TDim, TIdx>
&& buf)
66
: m_spBufImpl{
std
::move(buf.m_spBufImpl)}
67
{
68
}
69
70
private
:
71
std::shared_ptr<detail::BufUniformCudaHipRtImpl<TApi, TElem, TDim, TIdx>> m_spBufImpl;
72
73
friend
alpaka::trait::GetDev<ConstBufUniformCudaHipRt<TApi, TElem, TDim, TIdx>
>;
74
friend
alpaka::trait::GetExtents<ConstBufUniformCudaHipRt<TApi, TElem, TDim, TIdx>
>;
75
friend
alpaka::trait::GetPtrNative<ConstBufUniformCudaHipRt<TApi, TElem, TDim, TIdx>
>;
76
friend
alpaka::trait::GetPtrDev<ConstBufUniformCudaHipRt<TApi, TElem, TDim, TIdx>
,
DevUniformCudaHipRt<TApi>
>;
77
friend
alpaka::trait::GetPitchesInBytes<ConstBufUniformCudaHipRt<TApi, TElem, TDim, TIdx>
>;
78
};
79
80
}
// namespace alpaka
81
82
# include "
alpaka/mem/buf/uniformCudaHip/Copy.hpp
"
83
# include "
alpaka/mem/buf/uniformCudaHip/Fill.hpp
"
84
# include "
alpaka/mem/buf/uniformCudaHip/Set.hpp
"
85
86
#endif
Assert.hpp
BufUniformCudaHipRtImpl.hpp
Cuda.hpp
DependentFalseType.hpp
DevUniformCudaHipRt.hpp
DimIntegralConst.hpp
Hip.hpp
Vec.hpp
ViewAccessOps.hpp
alpaka::BufUniformCudaHipRt
The generic memory buffer template implementing muting accessors.
Definition
BufUniformCudaHipRt.hpp:29
alpaka::DevUniformCudaHipRt
The CUDA/HIP RT device handle.
Definition
DevUniformCudaHipRt.hpp:62
ALPAKA_FN_HOST
#define ALPAKA_FN_HOST
Definition
Common.hpp:40
Traits.hpp
Traits.hpp
Set.hpp
alpaka::internal::ViewAccessorType
typename ViewAccessor< TDev >::template AccessorType< TView > ViewAccessorType
Definition
ViewAccessOps.hpp:205
alpaka
The alpaka accelerator library.
Definition
AccCpuOmp2Blocks.hpp:52
std
STL namespace.
alpaka::ConstBufUniformCudaHipRt
The CUDA/HIP memory buffer.
Definition
ConstBufUniformCudaHipRt.hpp:39
alpaka::ConstBufUniformCudaHipRt::ConstBufUniformCudaHipRt
ALPAKA_FN_HOST ConstBufUniformCudaHipRt(BufUniformCudaHipRt< TApi, TElem, TDim, TIdx > &&buf)
Definition
ConstBufUniformCudaHipRt.hpp:65
alpaka::ConstBufUniformCudaHipRt::ConstBufUniformCudaHipRt
ALPAKA_FN_HOST ConstBufUniformCudaHipRt(DevUniformCudaHipRt< TApi > const &dev, TElem *const pMem, Deleter deleter, TExtent const &extent, std::size_t pitchBytes)
Constructor.
Definition
ConstBufUniformCudaHipRt.hpp:45
alpaka::ConstBufUniformCudaHipRt::ConstBufUniformCudaHipRt
ALPAKA_FN_HOST ConstBufUniformCudaHipRt(BufUniformCudaHipRt< TApi, TElem, TDim, TIdx > const &buf)
Definition
ConstBufUniformCudaHipRt.hpp:60
alpaka::trait::GetDev
The device get trait.
Definition
Traits.hpp:27
alpaka::trait::GetExtents
The GetExtents trait for getting the extents of an object as an alpaka::Vec.
Definition
Traits.hpp:37
alpaka::trait::GetPitchesInBytes
Customization point for getPitchesInBytes. The default implementation uses the extent to calculate th...
Definition
Traits.hpp:129
alpaka::trait::GetPtrDev
The pointer on device get trait.
Definition
Traits.hpp:84
alpaka::trait::GetPtrNative
The native pointer get trait.
Definition
Traits.hpp:80
Copy.hpp
Fill.hpp
include
alpaka
mem
buf
uniformCudaHip
ConstBufUniformCudaHipRt.hpp
Generated on Wed Oct 8 2025 12:33:34 for alpaka by
1.9.8