array, classe
Représente un conteneur de données utilisé pour déplacer des données vers un accélérateur.
Syntaxe
template <typename value_type, int _Rank>
friend class array;
Paramètres
value_type
Type d’élément des données.
_Rang
Rang du tableau.
Membres
Constructeurs publics
Nom | Description |
---|---|
constructeur de tableau | Initialise une nouvelle instance de la classe array . |
~array Destructor | Détruit l’objet array . |
Méthodes publiques
Nom | Description |
---|---|
copy_to | Copie le contenu du tableau dans un autre tableau. |
data | Retourne un pointeur vers les données brutes du tableau. |
get_accelerator_view | Retourne l’objet accelerator_view qui représente l’emplacement où le tableau est alloué. Cette propriété est accessible uniquement sur le processeur. |
get_associated_accelerator_view | Obtient le deuxième objet accelerator_view passé en tant que paramètre lorsqu’un constructeur intermédiaire est appelé pour instancier l’objet array . |
get_cpu_access_type | Retourne la access_type du tableau. Cette méthode est accessible uniquement sur l’UC. |
get_extent | Retourne l’objet d’extension du tableau. |
reinterpret_as | Retourne un tableau unidimensionnel qui contient tous les éléments de l’objet array . |
section | Retourne une sous-section de l’objet array qui se trouve à l’origine spécifiée et, éventuellement, qui a l’étendue spécifiée. |
view_as | Retourne un objet array_view construit à partir de l’objet array . |
Opérateurs publics
Nom | Description |
---|---|
operator std::vector<value_type> |
Utilise copy(*this, vector) pour convertir implicitement le tableau en objet std ::vector . |
operator() | Retourne la valeur de l’élément spécifiée par les paramètres. |
operator[] | Retourne l’élément qui se trouve à l’index spécifié. |
operator= | Copie le contenu de l’objet spécifié array dans celui-ci. |
Constantes publiques
Nom | Description |
---|---|
constante de classement | Stocke le rang du tableau. |
Membres de données publics
Nom | Description |
---|---|
accelerator_view | Obtient l’objet accelerator_view qui représente l’emplacement où le tableau est alloué. Cette propriété est accessible uniquement sur le processeur. |
associated_accelerator_view | Obtient le deuxième objet accelerator_view passé en tant que paramètre lorsqu’un constructeur intermédiaire est appelé pour instancier l’objet array . |
cpu_access_type | Obtient la access_type qui représente la façon dont l’UC peut accéder au stockage du tableau. |
extent | Obtient l’étendue qui définit la forme du tableau. |
Notes
Le type array<T,N>
représente un tableau ndimensionnel dense et régulier (non en jagged) situé dans un emplacement spécifique, tel qu’un accélérateur ou l’UC. Le type de données des éléments du tableau est T
, qui doit être d’un type compatible avec l’accélérateur cible. Bien que le classement , N
(du tableau est déterminé statiquement et fait partie du type, l’étendue du tableau est déterminée par le runtime et est exprimée à l’aide de la classe extent<N>
.
Un tableau peut avoir n’importe quel nombre de dimensions, bien que certaines fonctionnalités soient spécialisées pour array
les objets de rang 1, deux et trois. Si vous omettez l’argument de dimension, la valeur par défaut est 1.
Les données de tableau sont disposées contiguëment en mémoire. Les éléments qui diffèrent d’une dimension la moins significative sont adjacents à la mémoire.
Les tableaux sont logiquement considérés comme des types valeur, car lorsqu’un tableau est copié dans un autre tableau, une copie approfondie est effectuée. Deux tableaux ne pointent jamais vers les mêmes données.
Le array<T,N>
type est utilisé dans plusieurs scénarios :
En tant que conteneur de données qui peut être utilisé dans les calculs sur un accélérateur.
En tant que conteneur de données pour contenir de la mémoire sur le processeur hôte (qui peut être utilisé pour copier vers et à partir d’autres tableaux).
En tant qu’objet intermédiaire pour agir en tant qu’intermédiaire rapide dans les copies d’hôte à appareil.
Hiérarchie d'héritage
array
Spécifications
En-tête : amp.h
Espace de noms : Concurrency
~tableau
Détruit l’objet array
.
~array() restrict(cpu);
accelerator_view
Obtient l’objet accelerator_view qui représente l’emplacement où le tableau est alloué. Cette propriété est accessible uniquement sur le processeur.
__declspec(property(get= get_accelerator_view)) Concurrency::accelerator_view accelerator_view;
tableau
Initialise une nouvelle instance de la classe de tableau. Il n’existe aucun constructeur par défaut pour array<T,N>
. Tous les constructeurs sont exécutés sur le processeur uniquement. Ils ne peuvent pas être exécutés sur une cible Direct3D.
explicit array(
const Concurrency::extent<_Rank>& _Extent) restrict(cpu);
explicit array(
int _E0) restrict(cpu);
explicit array(
int _E0,
int _E1) restrict(cpu);
explicit array(
int _E0,
int _E1,
int _E2) restrict(cpu);
array(
const Concurrency::extent<_Rank>& _Extent,
Concurrency::accelerator_view _Av
access_type _Cpu_access_type = access_type_auto) restrict(cpu);
array(
int _E0,
Concurrency::accelerator_view _Av
access_type _Cpu_access_type = access_type_auto) restrict(cpu);
array(
int _E0,
int _E1,
Concurrency::accelerator_view _Av
access_type _Cpu_access_type = access_type_auto) restrict(cpu);
array(
int _E0,
int _E1,
int _E2,
Concurrency::accelerator_view _Av
access_type _Cpu_access_type = access_type_auto) restrict(cpu);
array(
const Concurrency::extent<_Rank>& _Extent,
Concurrency::accelerator_view _Av,
Concurrency::accelerator_view _Associated_Av) restrict(cpu);
array(
int _E0,
accelerator_view _Av,
Concurrency::accelerator_view _Associated_Av) restrict(cpu);
array(
int _E0,
int _E1,
Concurrency::accelerator_view _Av,
Concurrency::accelerator_view _Associated_Av) restrict(cpu);
array(
int _E0,
int _E1,
int _E2,
Concurrency::accelerator_view _Av,
Concurrency::accelerator_view _Associated_Av) restrict(cpu);
template <typename _InputIterator>
array(
const Concurrency::extent<_Rank>& _Extent,
_InputIterator _Src_first,
_InputIterator _Src_last) restrict(cpu);
template <typename _InputIterator>
array(
const Concurrency::extent<_Rank>& _Extent,
_InputIterator _Src_first) restrict(cpu);
template <typename _InputIterator>
array(
int _E0,
_InputIterator _Src_first,
_InputIterator _Src_last) restrict(cpu);
template <typename _InputIterator>
array(
int _E0,
_InputIterator _Src_first) restrict(cpu);
template <typename _InputIterator>
array(
int _E0,
int _E1,
_InputIterator _Src_first,
_InputIterator _Src_last) restrict(cpu);
template <typename _InputIterator>
array(
int _E0,
int _E1,
_InputIterator _Src_first) restrict(cpu);
template <typename _InputIterator>
array(
int _E0,
int _E1,
int _E2,
_InputIterator _Src_first,
_InputIterator _Src_last) restrict(cpu);
template <typename _InputIterator>
array(
int _E0,
int _E1,
int _E2,
_InputIterator _Src_first) restrict(cpu);
template <typename _InputIterator>
array(
const Concurrency::extent<_Rank>& _Extent,
_InputIterator _Src_first,
_InputIterator _Src_last,
Concurrency::accelerator_view _Av
access_type _Cpu_access_type = access_type_auto) restrict(cpu);
template <typename _InputIterator>
array(
const Concurrency::extent<_Rank>& _Extent,
_InputIterator _Src_first,
Concurrency::accelerator_view _Av
access_type _Cpu_access_type = access_type_auto) restrict(cpu);
template <typename _InputIterator>
array(
int _E0,
_InputIterator _Src_first,
_InputIterator _Src_last,
Concurrency::accelerator_view _Av
access_type _Cpu_access_type = access_type_auto) restrict(cpu);
template <typename _InputIterator>
array(
int _E0,
_InputIterator _Src_first,
Concurrency::accelerator_view _Av
access_type _Cpu_access_type = access_type_auto) restrict(cpu);
template <typename _InputIterator>
array(
int _E0,
int _E1,
_InputIterator _Src_first,
_InputIterator _Src_last,
Concurrency::accelerator_view _Av
access_type _Cpu_access_type = access_type_auto) restrict(cpu);
template <typename _InputIterator>
array(
int _E0,
int _E1,
_InputIterator _Src_first,
Concurrency::accelerator_view _Av
access_type _Cpu_access_type = access_type_auto) restrict(cpu);
template <typename _InputIterator>
array(
int _E0,
int _E1,
int _E2,
_InputIterator _Src_first,
_InputIterator _Src_last,
Concurrency::accelerator_view _Av,
access_type _Cpu_access_type = access_type_auto) restrict(cpu);
template <typename _InputIterator>
array(
int _E0,
int _E1,
int _E2,
_InputIterator _Src_first,
Concurrency::accelerator_view _Av
access_type _Cpu_access_type = access_type_auto) restrict(cpu);
template <typename _InputIterator>
array(
const Concurrency::extent<_Rank>& _Extent,
_InputIterator _Src_first,
_InputIterator _Src_last,
Concurrency::accelerator_view _Av,
Concurrency::accelerator_view _Associated_Av) restrict(cpu);
template <typename _InputIterator>
array(
const Concurrency::extent<_Rank>& _Extent,
_InputIterator _Src_first,
Concurrency::accelerator_view _Av,
Concurrency::accelerator_view _Associated_Av) restrict(cpu);
template <typename _InputIterator>
array(
int _E0,
_InputIterator _Src_first,
_InputIterator _Src_last,
Concurrency::accelerator_view _Av,
Concurrency::accelerator_view _Associated_Av) restrict(cpu);
template <typename _InputIterator>
array(
int _E0, _InputIterator _Src_first,
Concurrency::accelerator_view _Av,
Concurrency::accelerator_view _Associated_Av) restrict(cpu);
template <typename _InputIterator>
array(
int _E0,
int _E1, _InputIterator _Src_first, _InputIterator _Src_last,
Concurrency::accelerator_view _Av,
Concurrency::accelerator_view _Associated_Av) restrict(cpu);
template <typename _InputIterator>
array(
int _E0,
int _E1, _InputIterator _Src_first,
Concurrency::accelerator_view _Av,
Concurrency::accelerator_view _Associated_Av) restrict(cpu);
template <typename _InputIterator>
array(
int _E0,
int _E1,
int _E2, _InputIterator _Src_first, _InputIterator _Src_last,
Concurrency::accelerator_view _Av,
Concurrency::accelerator_view _Associated_Av) restrict(cpu);
template <typename _InputIterator>
array(
int _E0,
int _E1,
int _E2, _InputIterator _Src_first,
Concurrency::accelerator_view _Av,
Concurrency::accelerator_view _Associated_Av) restrict(cpu);
explicit array(
const array_view<const value_type, _Rank>& _Src) restrict(cpu);
array(
const array_view<const value_type, _Rank>& _Src,
accelerator_view _Av
access_type _Cpu_access_type = access_type_auto) restrict(cpu);
array(
const array_view<const value_type, _Rank>& _Src,
accelerator_view _Av,
accelerator_view _Associated_Av) restrict(cpu);
array(const array& _Other) restrict(cpu);
array(array&& _Other) restrict(cpu);
Paramètres
_Associated_Av
Un accelerator_view qui spécifie l’emplacement cible préféré du tableau.
_Av
Objet accelerator_view qui spécifie l’emplacement du tableau.
_Cpu_access_type
La access_type souhaitée pour le tableau sur l’UC. Ce paramètre a une valeur par défaut pour access_type_auto
laisser la détermination de l’UC access_type
au runtime. L’UC access_type
réelle du tableau peut être interrogée à l’aide de la get_cpu_access_type
méthode.
_Étendue
Étendue dans chaque dimension du tableau.
_E0
Composant le plus important de l’étendue de cette section.
_E1
Composant suivant à la plus importante de l’étendue de cette section.
_E2
Composant le moins significatif de l’étendue de cette section.
_InputIterator
Type de l'itérateur d'entrée.
_Src
Objet à copier.
_Src_first
Itérateur de début dans le conteneur source.
_Src_last
Itérateur de fin dans le conteneur source.
_Autre
Autre source de données.
_Rang
Rang de la section.
value_type
Type de données des éléments copiés.
associated_accelerator_view
Obtient le deuxième objet accelerator_view passé en tant que paramètre lorsqu’un constructeur intermédiaire est appelé pour instancier l’objet array
.
__declspec(property(get= get_associated_accelerator_view)) Concurrency::accelerator_view associated_accelerator_view;
copy_to
Copie le contenu de l’objet array
vers un autre array
.
void copy_to(
array<value_type, _Rank>& _Dest) const ;
void copy_to(
array_view<value_type, _Rank>& _Dest) const ;
Paramètres
_Dest
Objet array_view à copier.
cpu_access_type
Obtient le access_type processeur autorisé pour ce tableau.
__declspec(property(get= get_cpu_access_type)) access_type cpu_access_type;
données
Retourne un pointeur vers les données brutes du array
.
value_type* data() restrict(amp, cpu);
const value_type* data() const restrict(amp, cpu);
Valeur de retour
Pointeur vers les données brutes du tableau.
extent
Obtient l’objet d’extension qui définit la forme du array
.
__declspec(property(get= get_extent)) Concurrency::extent<_Rank> extent;
get_accelerator_view
Retourne l’objet accelerator_view qui représente l’emplacement où l’objet array
est alloué. Cette propriété est accessible uniquement sur le processeur.
Concurrency::accelerator_view get_accelerator_view() const;
Valeur de retour
Objet accelerator_view
qui représente l’emplacement où l’objet array
est alloué.
get_associated_accelerator_view
Obtient le deuxième objet accelerator_view passé en tant que paramètre lorsqu’un constructeur intermédiaire est appelé pour instancier l’objet array
.
Concurrency::accelerator_view get_associated_accelerator_view() const ;
Valeur de retour
Deuxième objet accelerator_view passé au constructeur intermédiaire.
get_cpu_access_type
Retourne la access_type processeur autorisée pour ce tableau.
access_type get_cpu_access_type() const restrict(cpu);
Valeur de retour
get_extent
Renvoie l’objet d’étendue du array
.
Concurrency::extent<_Rank> get_extent() const restrict(amp,cpu);
Valeur de retour
Objet extent
de l'objet array
.
operator std::vector<value_type>
Utilise copy(*this, vector)
pour convertir implicitement le tableau en objet std ::vector.
operator std::vector<value_type>() const restrict(cpu);
Paramètres
value_type
Type de données des éléments du vecteur.
Valeur de retour
Objet de type vector<T>
qui contient une copie des données contenues dans le tableau.
operator()
Retourne la valeur de l’élément spécifiée par les paramètres.
value_type& operator() (const index<_Rank>& _Index) restrict(amp,cpu);
const value_type& operator() (const index<_Rank>& _Index) cons t restrict(amp,cpu);
value_type& operator() (int _I0, int _I1) restrict(amp,cpu);
const value_type& operator() (int _I0, int _I1) const restrict(amp,cpu) ;
value_type& operator() (int _I0, int _I1, int _I2) restrict(amp,cpu);
const value_type& operator() (int _I0, int _I1, int _I2) const restrict(amp,cpu);
typename details::_Projection_result_type<value_type,_Rank>::_Result_type operator()(int _I) restrict(amp,cpu);
typename details::_Projection_result_type<value_type,_Rank>::_Const_result_type operator()(int _I) const restrict(amp,cpu);
Paramètres
_Index
Emplacement de l’élément.
_I0
Composant le plus significatif de l’origine de cette section.
_I1
Composant suivant à la plus importante de l’origine de cette section.
_I2
Composant le moins significatif de l’origine de cette section.
_I
Emplacement de l’élément.
Valeur de retour
Valeur de l’élément spécifiée par les paramètres.
operator[]
Retourne l’élément qui se trouve à l’index spécifié.
value_type& operator[](const index<_Rank>& _Index) restrict(amp,cpu);
const value_type& operator[]
(const index<_Rank>& _Index) const restrict(amp,cpu);
typename details::_Projection_result_type<value_type,_Rank>::_Result_type operator[](int _i) restrict(amp,cpu);
typename details::_Projection_result_type<value_type,_Rank>::_Const_result_type operator[](int _i) const restrict(amp,cpu);
Paramètres
_Index
Index.
_I
Index.
Valeur de retour
Élément qui se trouve à l’index spécifié.
opérateur =
Copie le contenu de l’objet spécifié array
.
array& operator= (const array& _Other) restrict(cpu);
array& operator= (array&& _Other) restrict(cpu);
array& operator= (
const array_view<const value_type, _Rank>& _Src) restrict(cpu);
Paramètres
_Autre
Objet array
à copier.
_Src
Objet array
à copier.
Valeur de retour
Référence à cet array
objet.
rank
Stocke le rang du array
.
static const int rank = _Rank;
reinterpret_as
Réinterprète le tableau par le biais d’un array_view unidimensionnel, qui peut éventuellement avoir un type de valeur différent du tableau source.
Syntaxe
template <typename _Value_type2>
array_view<_Value_type2,1> reinterpret_as() restrict(amp,cpu);
template <typename _Value_type2>
array_view<const _Value_type2, 1> reinterpret_as() const restrict(amp,cpu);
Paramètres
_Value_type2
Type de données des données retournées.
Valeur de retour
Objet array_view ou const array_view basé sur le tableau, avec le type d’élément réinterprété de T à ElementType et le rang réduit de N à 1.
Notes
Parfois, il est pratique d’afficher un tableau multidimensionnel comme s’il s’agit d’un tableau linéaire unidimensionnel, éventuellement avec un type de valeur différent du tableau source. Vous pouvez utiliser cette méthode pour y parvenir. Attention à réinterpréter un objet tableau à l’aide d’un type valeur différent est une opération potentiellement dangereuse. Nous vous recommandons d’utiliser attentivement cette fonctionnalité.
Le code suivant montre un exemple.
struct RGB { float r; float g; float b; };
array<RGB,3> a = ...;
array_view<float,1> v = a.reinterpret_as<float>();
assert(v.extent == 3*a.extent);
section
Retourne une sous-section de l’objet array
qui se trouve à l’origine spécifiée et, éventuellement, qui a l’étendue spécifiée.
array_view<value_type,_Rank> section(
const Concurrency::index<_Rank>& _Section_origin,
const Concurrency::extent<_Rank>& _Section_extent) restrict(amp,cpu);
array_view<const value_type,_Rank> section(
const Concurrency::index<_Rank>& _Section_origin,
const Concurrency::extent<_Rank>& _Section_extent) const restrict(amp,cpu);
array_view<value_type,_Rank> section(
const Concurrency::extent<_Rank>& _Ext) restrict(amp,cpu);
array_view<const value_type,_Rank> section(
const Concurrency::extent<_Rank>& _Ext) const restrict(amp,cpu);
array_view<value_type,_Rank> section(
const index<_Rank>& _Idx) restrict(amp,cpu);
array_view<const value_type,_Rank> section(
const index<_Rank>& _Idx) const restrict(amp,cpu);
array_view<value_type,1> section(
int _I0,
int _E0) restrict(amp,cpu);
array_view<const value_type,1> section(
int _I0,
int _E0) const restrict(amp,cpu);
array_view<value_type,2> section(
int _I0,
int _I1,
int _E0,
int _E1) restrict(amp,cpu);
array_view<const value_type,2> section(
int _I0,
int _I1,
int _E0,
int _E1) const restrict(amp,cpu);
array_view<value_type,3> section(
int _I0,
int _I1,
int _I2,
int _E0,
int _E1,
int _E2) restrict(amp,cpu);
array_view<const value_type,3> section(
int _I0,
int _I1,
int _I2,
int _E0,
int _E1,
int _E2) const restrict(amp,cpu);
Paramètres
_E0
Composant le plus important de l’étendue de cette section.
_E1
Composant suivant à la plus importante de l’étendue de cette section.
_E2
Composant le moins significatif de l’étendue de cette section.
_Poste
Objet d’extension qui spécifie l’étendue de la section. L’origine est 0.
_Idx
Objet d’index qui spécifie l’emplacement de l’origine. La sous-section correspond au reste de l’étendue.
_I0
Composant le plus significatif de l’origine de cette section.
_I1
Composant suivant à la plus importante de l’origine de cette section.
_I2
Composant le moins significatif de l’origine de cette section.
_Rang
Rang de la section.
_Section_extent
Objet d’extension qui spécifie l’étendue de la section.
_Section_origin
Objet d’index qui spécifie l’emplacement de l’origine.
value_type
Type de données des éléments copiés.
Valeur de retour
Retourne une sous-section de l’objet array
qui se trouve à l’origine spécifiée et, éventuellement, qui a l’étendue spécifiée. Lorsque seul l’objet index
est spécifié, la sous-section contient tous les éléments de la grille associée qui ont des index supérieurs aux index des éléments de l’objet index
.
view_as
Réinterpret ce tableau en tant que array_view d’un rang différent.
template <int _New_rank>
array_view<value_type,_New_rank> view_as(
const Concurrency::extent<_New_rank>& _View_extent) restrict(amp,cpu);
template <int _New_rank>
array_view<const value_type,_New_rank> view_as(
const Concurrency::extent<_New_rank>& _View_extent) const restrict(amp,cpu);
Paramètres
_New_rank
Rang de l’objet extent
passé en tant que paramètre.
_View_extent
Étendue utilisée pour construire le nouvel objet array_view .
value_type
Type de données des éléments dans l’objet d’origine array
et l’objet retourné array_view
.
Valeur de retour
Objet array_view construit.