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
:
internal::ViewAccessOps
<ConstBufUniformCudaHipRt<TApi, TElem, TDim, TIdx>>
38
{
39
static_assert
(!std::is_const_v<TElem>,
"The elem type of the buffer must not be const"
);
40
static_assert
(!std::is_const_v<TIdx>,
"The idx type of the buffer must not be const!"
);
41
42
//! Constructor
43
template
<
typename
TExtent,
typename
Deleter>
44
ALPAKA_FN_HOST
ConstBufUniformCudaHipRt
(
45
DevUniformCudaHipRt<TApi>
const
& dev,
46
TElem*
const
pMem,
47
Deleter deleter,
48
TExtent
const
& extent,
49
std::size_t pitchBytes)
50
: m_spBufImpl{
std
::make_shared<detail::BufUniformCudaHipRtImpl<TApi, TElem, TDim, TIdx>>(
51
dev,
52
pMem,
53
std
::move(deleter),
54
extent,
55
pitchBytes)}
56
{
57
}
58
59
ALPAKA_FN_HOST
ConstBufUniformCudaHipRt
(
BufUniformCudaHipRt<TApi, TElem, TDim, TIdx>
const
& buf)
60
: m_spBufImpl{buf.m_spBufImpl}
61
{
62
}
63
64
ALPAKA_FN_HOST
ConstBufUniformCudaHipRt
(
BufUniformCudaHipRt<TApi, TElem, TDim, TIdx>
&& buf)
65
: m_spBufImpl{
std
::move(buf.m_spBufImpl)}
66
{
67
}
68
69
private
:
70
std::shared_ptr<detail::BufUniformCudaHipRtImpl<TApi, TElem, TDim, TIdx>> m_spBufImpl;
71
72
friend
alpaka::trait::GetDev<ConstBufUniformCudaHipRt<TApi, TElem, TDim, TIdx>
>;
73
friend
alpaka::trait::GetExtents<ConstBufUniformCudaHipRt<TApi, TElem, TDim, TIdx>
>;
74
friend
alpaka::trait::GetPtrNative<ConstBufUniformCudaHipRt<TApi, TElem, TDim, TIdx>
>;
75
friend
alpaka::trait::GetPtrDev<ConstBufUniformCudaHipRt<TApi, TElem, TDim, TIdx>
,
DevUniformCudaHipRt<TApi>
>;
76
friend
alpaka::trait::GetPitchesInBytes<ConstBufUniformCudaHipRt<TApi, TElem, TDim, TIdx>
>;
77
};
78
79
}
// namespace alpaka
80
81
# include "
alpaka/mem/buf/uniformCudaHip/Copy.hpp
"
82
# include "
alpaka/mem/buf/uniformCudaHip/Fill.hpp
"
83
# include "
alpaka/mem/buf/uniformCudaHip/Set.hpp
"
84
85
#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:28
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
The alpaka accelerator library.
Definition
AccCpuOmp2Blocks.hpp:52
std
STL namespace.
alpaka::ConstBufUniformCudaHipRt
The CUDA/HIP memory buffer.
Definition
ConstBufUniformCudaHipRt.hpp:38
alpaka::ConstBufUniformCudaHipRt::ConstBufUniformCudaHipRt
ALPAKA_FN_HOST ConstBufUniformCudaHipRt(BufUniformCudaHipRt< TApi, TElem, TDim, TIdx > &&buf)
Definition
ConstBufUniformCudaHipRt.hpp:64
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:44
alpaka::ConstBufUniformCudaHipRt::ConstBufUniformCudaHipRt
ALPAKA_FN_HOST ConstBufUniformCudaHipRt(BufUniformCudaHipRt< TApi, TElem, TDim, TIdx > const &buf)
Definition
ConstBufUniformCudaHipRt.hpp:59
alpaka::internal::ViewAccessOps
Definition
ViewAccessOps.hpp:36
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:103
alpaka::trait::GetPtrDev
The pointer on device get trait.
Definition
Traits.hpp:58
alpaka::trait::GetPtrNative
The native pointer get trait.
Definition
Traits.hpp:54
Copy.hpp
Fill.hpp
include
alpaka
mem
buf
uniformCudaHip
ConstBufUniformCudaHipRt.hpp
Generated on Thu Jun 26 2025 08:02:45 for alpaka by
1.9.8