alpaka
Abstraction Library for Parallel Kernel Acceleration
Loading...
Searching...
No Matches
ViewStdVector.hpp
Go to the documentation of this file.
1
/* Copyright 2022 Axel Huebl, Benjamin Worpitz, Jan Stephan, Bernhard Manfred Gruber
2
* SPDX-License-Identifier: MPL-2.0
3
*/
4
5
/* TODO: Once C++20 is available remove this file and replace with a generic ContiguousContainer solution based on
6
* concepts. It should be sufficient to check for the existence of Container.size() and Container.data() */
7
8
#pragma once
9
10
#include "
alpaka/core/Common.hpp
"
11
#include "
alpaka/dev/DevCpu.hpp
"
12
#include "
alpaka/mem/view/Traits.hpp
"
13
#include "
alpaka/platform/PlatformCpu.hpp
"
14
15
#include <vector>
16
17
namespace
alpaka::trait
18
{
19
//! The std::vector device type trait specialization.
20
template
<
typename
TElem,
typename
TAllocator>
21
struct
DevType
<
std
::vector<TElem, TAllocator>>
22
{
23
using
type
=
DevCpu
;
24
};
25
26
//! The std::vector device get trait specialization.
27
template
<
typename
TElem,
typename
TAllocator>
28
struct
GetDev
<
std
::vector<TElem, TAllocator>>
29
{
30
ALPAKA_FN_HOST
static
auto
getDev
(std::vector<TElem, TAllocator>
const
&
/* view */
) ->
DevCpu
31
{
32
return
getDevByIdx
(
PlatformCpu
{}, 0u);
33
}
34
};
35
36
//! The std::vector dimension getter trait specialization.
37
template
<
typename
TElem,
typename
TAllocator>
38
struct
DimType
<
std
::vector<TElem, TAllocator>>
39
{
40
using
type
=
DimInt<1u>
;
41
};
42
43
//! The std::vector memory element type get trait specialization.
44
template
<
typename
TElem,
typename
TAllocator>
45
struct
ElemType
<
std
::vector<TElem, TAllocator>>
46
{
47
using
type
= TElem;
48
};
49
50
template
<
typename
TElem,
typename
TAllocator>
51
struct
GetExtents
<
std
::vector<TElem, TAllocator>>
52
{
53
ALPAKA_FN_HOST
constexpr
auto
operator()
(std::vector<TElem, TAllocator>
const
& a)
54
->
Vec<DimInt<1>
,
Idx<std::vector<TElem, TAllocator>
>>
55
{
56
return
{std::size(a)};
57
}
58
};
59
60
//! The std::vector native pointer get trait specialization.
61
template
<
typename
TElem,
typename
TAllocator>
62
struct
GetPtrNative
<
std
::vector<TElem, TAllocator>>
63
{
64
ALPAKA_FN_HOST
static
auto
getPtrNative
(std::vector<TElem, TAllocator>
const
& view) -> TElem
const
*
65
{
66
return
std::data(view);
67
}
68
69
ALPAKA_FN_HOST
static
auto
getPtrNative
(std::vector<TElem, TAllocator>& view) -> TElem*
70
{
71
return
std::data(view);
72
}
73
};
74
75
//! The std::vector offset get trait specialization.
76
template
<
typename
TElem,
typename
TAllocator>
77
struct
GetOffsets
<
std
::vector<TElem, TAllocator>>
78
{
79
ALPAKA_FN_HOST
auto
operator()
(std::vector<TElem, TAllocator>
const
&)
const
80
->
Vec<DimInt<1>
,
Idx<std::vector<TElem, TAllocator>
>>
81
{
82
return
{0};
83
}
84
};
85
86
//! The std::vector idx type trait specialization.
87
template
<
typename
TElem,
typename
TAllocator>
88
struct
IdxType
<
std
::vector<TElem, TAllocator>>
89
{
90
using
type
= std::size_t;
91
};
92
}
// namespace alpaka::trait
DevCpu.hpp
PlatformCpu.hpp
alpaka::DevCpu
The CPU device handle.
Definition
DevCpu.hpp:56
alpaka::Vec
A n-dimensional vector.
Definition
Vec.hpp:38
Common.hpp
ALPAKA_FN_HOST
#define ALPAKA_FN_HOST
Definition
Common.hpp:40
Traits.hpp
alpaka::trait
The accelerator traits.
Definition
AccCpuOmp2Blocks.hpp:112
alpaka::Idx
typename trait::IdxType< T >::type Idx
Definition
Traits.hpp:29
alpaka::getDevByIdx
ALPAKA_FN_HOST auto getDevByIdx(TPlatform const &platform, std::size_t const &devIdx) -> Dev< TPlatform >
Definition
Traits.hpp:62
alpaka::DimInt
std::integral_constant< std::size_t, N > DimInt
Definition
DimIntegralConst.hpp:15
std
STL namespace.
alpaka::PlatformCpu
The CPU device platform.
Definition
PlatformCpu.hpp:18
alpaka::trait::DevType
The device type trait.
Definition
Traits.hpp:23
alpaka::trait::DimType< std::vector< TElem, TAllocator > >::type
DimInt< 1u > type
Definition
ViewStdVector.hpp:40
alpaka::trait::DimType
The dimension getter type trait.
Definition
Traits.hpp:14
alpaka::trait::ElemType< std::vector< TElem, TAllocator > >::type
TElem type
Definition
ViewStdVector.hpp:47
alpaka::trait::ElemType
The element type trait.
Definition
Traits.hpp:16
alpaka::trait::GetDev< std::vector< TElem, TAllocator > >::getDev
static ALPAKA_FN_HOST auto getDev(std::vector< TElem, TAllocator > const &) -> DevCpu
Definition
ViewStdVector.hpp:30
alpaka::trait::GetDev
The device get trait.
Definition
Traits.hpp:27
alpaka::trait::GetExtents< std::vector< TElem, TAllocator > >::operator()
ALPAKA_FN_HOST constexpr auto operator()(std::vector< TElem, TAllocator > const &a) -> Vec< DimInt< 1 >, Idx< std::vector< TElem, TAllocator > > >
Definition
ViewStdVector.hpp:53
alpaka::trait::GetExtents
The GetExtents trait for getting the extents of an object as an alpaka::Vec.
Definition
Traits.hpp:37
alpaka::trait::GetOffsets< std::vector< TElem, TAllocator > >::operator()
ALPAKA_FN_HOST auto operator()(std::vector< TElem, TAllocator > const &) const -> Vec< DimInt< 1 >, Idx< std::vector< TElem, TAllocator > > >
Definition
ViewStdVector.hpp:79
alpaka::trait::GetOffsets
The GetOffsets trait for getting the offsets of an object as an alpaka::Vec.
Definition
Traits.hpp:33
alpaka::trait::GetPtrNative< std::vector< TElem, TAllocator > >::getPtrNative
static ALPAKA_FN_HOST auto getPtrNative(std::vector< TElem, TAllocator > &view) -> TElem *
Definition
ViewStdVector.hpp:69
alpaka::trait::GetPtrNative< std::vector< TElem, TAllocator > >::getPtrNative
static ALPAKA_FN_HOST auto getPtrNative(std::vector< TElem, TAllocator > const &view) -> TElem const *
Definition
ViewStdVector.hpp:64
alpaka::trait::GetPtrNative
The native pointer get trait.
Definition
Traits.hpp:54
alpaka::trait::IdxType< std::vector< TElem, TAllocator > >::type
std::size_t type
Definition
ViewStdVector.hpp:90
alpaka::trait::IdxType
The idx type trait.
Definition
Traits.hpp:25
include
alpaka
mem
view
ViewStdVector.hpp
Generated on Tue Feb 4 2025 09:02:23 for alpaka by
1.9.8