Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Vertegenwoordigt een gegevenscontainer die wordt gebruikt om gegevens naar een accelerator te verplaatsen.
Syntaxis
template <typename value_type, int _Rank>
friend class array;
Parameterwaarden
value_type
Het elementtype van de gegevens.
_Rang
De rang van de matrix.
Leden
Openbare constructors
| Naam | Beschrijving |
|---|---|
| matrixconstructor | Initialiseert een nieuw exemplaar van de klasse array. |
| ~matrixdestructor | Vernietigt het array object. |
Openbare methoden
| Naam | Beschrijving |
|---|---|
| copy_to | Hiermee kopieert u de inhoud van de matrix naar een andere matrix. |
| gegevens | Retourneert een aanwijzer naar de onbewerkte gegevens van de matrix. |
| get_accelerator_view | Retourneert het accelerator_view-object dat de locatie aangeeft waar de matrix wordt toegewezen. Deze eigenschap kan alleen worden geopend op de CPU. |
| get_associated_accelerator_view | Hiermee wordt het tweede accelerator_view-object opgehaald dat als parameter wordt doorgegeven wanneer een faseringsconstructor wordt aangeroepen om het array object te instantiëren. |
| get_cpu_access_type | Retourneert de access_type van de matrix. Deze methode kan alleen worden geopend op de CPU. |
| get_extent | Retourneert het gebiedsobject van de matrix. |
| reinterpret_as | Retourneert een eendimensionale matrix die alle elementen in het array object bevat. |
| afdeling | Retourneert een subsectie van het array object dat zich op de opgegeven oorsprong bevindt en, optioneel, die de opgegeven mate heeft. |
| view_as | Retourneert een array_view-object dat is samengesteld op basis van het array object. |
Openbare operators
| Naam | Beschrijving |
|---|---|
operator std::vector<value_type> |
Hiermee copy(*this, vector) kunt u de matrix impliciet converteren naar een std::vector-object . |
| operator() | Retourneert de elementwaarde die is opgegeven door de parameters. |
| operator [] | Retourneert het element dat zich in de opgegeven index bevindt. |
| operator = | Hiermee kopieert u de inhoud van het opgegeven array object naar dit object. |
Openbare constanten
| Naam | Beschrijving |
|---|---|
| rangconstante | Slaat de positie van de matrix op. |
Leden van openbare gegevens
| Naam | Beschrijving |
|---|---|
| accelerator_view | Hiermee haalt u het accelerator_view-object op dat de locatie aangeeft waar de matrix is toegewezen. Deze eigenschap kan alleen worden geopend op de CPU. |
| associated_accelerator_view | Hiermee wordt het tweede accelerator_view-object opgehaald dat als parameter wordt doorgegeven wanneer een faseringsconstructor wordt aangeroepen om het array object te instantiëren. |
| cpu_access_type | Hiermee haalt u de access_type op die aangeeft hoe de CPU toegang heeft tot de opslag van de matrix. |
| mate | Hiermee haalt u de mate op waarmee de vorm van de matrix wordt gedefinieerd. |
Opmerkingen
Het type array<T,N> vertegenwoordigt een compacte en regelmatige N-dimensionale matrix die zich op een specifieke locatie bevindt, zoals een accelerator of de CPU. Het gegevenstype van de elementen in de matrix is T, wat van een type moet zijn dat compatibel is met de doelversneller. Hoewel de rang, N(van de matrix statisch wordt bepaald en deel uitmaakt van het type, wordt de omvang van de matrix bepaald door de runtime en wordt uitgedrukt met behulp van klasse extent<N>.
Een matrix kan een willekeurig aantal dimensies hebben, hoewel sommige functionaliteit is gespecialiseerd voor array objecten met rang één, twee en drie. Als u het dimensieargument weglaat, is de standaardwaarde 1.
Matrixgegevens worden aaneengesloten in het geheugen ingedeeld. Elementen die verschillen met één in de minst significante dimensie, grenzen aan het geheugen.
Matrices worden logisch beschouwd als waardetypen, omdat wanneer een matrix naar een andere matrix wordt gekopieerd, een diepe kopie wordt uitgevoerd. Twee matrices verwijzen nooit naar dezelfde gegevens.
Het array<T,N> type wordt in verschillende scenario's gebruikt:
Als een gegevenscontainer die kan worden gebruikt in berekeningen op een accelerator.
Als gegevenscontainer voor het opslaan van geheugen op de host-CPU (die kan worden gebruikt om naar en van andere matrices te kopiëren).
Als faseringsobject om te fungeren als een snelle tussenpersoon in kopieën van het host-naar-apparaat.
Overnamehiërarchie
array
Behoeften
koptekst: amp.h
naamruimte: gelijktijdigheid
~array
Vernietigt het array object.
~array() restrict(cpu);
accelerator_view
Hiermee haalt u het accelerator_view-object op dat de locatie aangeeft waar de matrix is toegewezen. Deze eigenschap kan alleen worden geopend op de CPU.
__declspec(property(get= get_accelerator_view)) Concurrency::accelerator_view accelerator_view;
gegevensreeks
Initialiseert een nieuw exemplaar van de matrixklasse. Er is geen standaardconstructor voor array<T,N>. Alle constructors worden alleen uitgevoerd op de CPU. Ze kunnen niet worden uitgevoerd op een Direct3D-doel.
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);
Parameterwaarden
_Associated_Av
Een accelerator_view die de voorkeursdoellocatie van de matrix aangeeft.
_Av
Een accelerator_view-object dat de locatie van de matrix aangeeft.
_Cpu_access_type
De gewenste access_type voor de matrix op de CPU. Deze parameter heeft een standaardwaarde waarbij access_type_auto de CPU-bepaling access_type wordt overgelaten aan de runtime. De werkelijke CPU access_type voor de matrix kan worden opgevraagd met behulp van de get_cpu_access_type methode.
_Mate
De omvang in elke dimensie van de matrix.
_E0
Het belangrijkste onderdeel van de omvang van deze sectie.
_E1
Het meest belangrijke onderdeel van de omvang van deze sectie.
_E2
Het minst significante onderdeel van de omvang van deze sectie.
_InputIterator
Het type invoer-iterator.
_Src
Object kopiëren.
_Src_first
Een beginnende iterator in de broncontainer.
_Src_last
Een iterator die eindigt op de broncontainer.
_Ander
Andere gegevensbron.
_Rang
De rang van de sectie.
value_type
Het gegevenstype van de elementen die worden gekopieerd.
associated_accelerator_view
Hiermee wordt het tweede accelerator_view-object opgehaald dat als parameter wordt doorgegeven wanneer een faseringsconstructor wordt aangeroepen om het array object te instantiëren.
__declspec(property(get= get_associated_accelerator_view)) Concurrency::accelerator_view associated_accelerator_view;
copy_to
Hiermee kopieert u de inhoud van de inhoud naar een array andere array.
void copy_to(
array<value_type, _Rank>& _Dest) const ;
void copy_to(
array_view<value_type, _Rank>& _Dest) const ;
Parameterwaarden
_Dest
Het array_view-object waarnaar moet worden gekopieerd.
cpu_access_type
Hiermee haalt u de CPU-access_type op die is toegestaan voor deze matrix.
__declspec(property(get= get_cpu_access_type)) access_type cpu_access_type;
gegevens
Retourneert een aanwijzer naar de onbewerkte gegevens van de array.
value_type* data() restrict(amp, cpu);
const value_type* data() const restrict(amp, cpu);
Retourwaarde
Een aanwijzer naar de onbewerkte gegevens van de matrix.
mate
Hiermee wordt het gebiedsobject opgehaald dat de vorm van het arrayobject definieert.
__declspec(property(get= get_extent)) Concurrency::extent<_Rank> extent;
get_accelerator_view
Retourneert het accelerator_view-object dat de locatie aangeeft waar het array object is toegewezen. Deze eigenschap kan alleen worden geopend op de CPU.
Concurrency::accelerator_view get_accelerator_view() const;
Retourwaarde
Het accelerator_view object dat de locatie aangeeft waar het array object wordt toegewezen.
get_associated_accelerator_view
Hiermee wordt het tweede accelerator_view-object opgehaald dat als parameter wordt doorgegeven wanneer een faseringsconstructor wordt aangeroepen om het array object te instantiëren.
Concurrency::accelerator_view get_associated_accelerator_view() const ;
Retourwaarde
Het tweede accelerator_view-object is doorgegeven aan de faseringsconstructor.
get_cpu_access_type
Retourneert de CPU-access_type die is toegestaan voor deze matrix.
access_type get_cpu_access_type() const restrict(cpu);
Retourwaarde
get_extent
Retourneert het gebiedsobject van de array.
Concurrency::extent<_Rank> get_extent() const restrict(amp,cpu);
Retourwaarde
Het extent object van de array.
operator std::vector<value_type>
Hiermee copy(*this, vector) kunt u de matrix impliciet converteren naar een std::vector-object.
operator std::vector<value_type>() const restrict(cpu);
Parameterwaarden
value_type
Het gegevenstype van de elementen van de vector.
Retourwaarde
Een object van het type vector<T> dat een kopie bevat van de gegevens in de matrix.
operator()
Retourneert de elementwaarde die is opgegeven door de parameters.
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);
Parameterwaarden
_Index
De locatie van het element.
_I0
Het belangrijkste onderdeel van de oorsprong van deze sectie.
_I1
Het meest belangrijke onderdeel van de oorsprong van deze sectie.
_I2
Het minst significante onderdeel van de oorsprong van deze sectie.
_Ik
De locatie van het element.
Retourwaarde
De elementwaarde die is opgegeven door de parameters.
operator[]
Retourneert het element dat zich in de opgegeven index bevindt.
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);
Parameterwaarden
_Index
De index.
_Ik
De index.
Retourwaarde
Het element dat zich in de opgegeven index bevindt.
operator=
Hiermee kopieert u de inhoud van het opgegeven array object.
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);
Parameterwaarden
_Ander
Het array object waaruit moet worden gekopieerd.
_Src
Het array object waaruit moet worden gekopieerd.
Retourwaarde
Een verwijzing naar dit array-object.
rang
Slaat de rang van de array.
static const int rank = _Rank;
reinterpret_as
Herinterpreteert de matrix via een eendimensionale array_view, die eventueel een ander waardetype kan hebben dan de bronmatrix.
Syntaxis
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);
Parameterwaarden
_Value_type2
Het gegevenstype van de geretourneerde gegevens.
Retourwaarde
Een array_view- of const-array_view-object dat is gebaseerd op de matrix, waarbij het elementtype opnieuw is geïnterpreteerd van T naar ElementType en de rang is verminderd van N tot en met 1.
Opmerkingen
Soms is het handig om een multidimensionale matrix weer te geven alsof het een lineaire, eendimensionale matrix is, mogelijk met een ander waardetype dan de bronmatrix. U kunt deze methode gebruiken om dit te bereiken. Voorzichtigheid Het opnieuw interpreteren van een matrixobject met behulp van een ander waardetype is een mogelijk onveilige bewerking. We raden u aan deze functionaliteit zorgvuldig te gebruiken.
De volgende code bevat een voorbeeld.
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);
sectie
Retourneert een subsectie van het array object dat zich op de opgegeven oorsprong bevindt en, optioneel, die de opgegeven mate heeft.
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);
Parameterwaarden
_E0
Het belangrijkste onderdeel van de omvang van deze sectie.
_E1
Het meest belangrijke onderdeel van de omvang van deze sectie.
_E2
Het minst significante onderdeel van de omvang van deze sectie.
_Ext
Het gebiedsobject dat de omvang van de sectie aangeeft. De oorsprong is 0.
_Idx
Het indexobject dat de locatie van de oorsprong aangeeft. De subsectie is de rest van de omvang.
_I0
Het belangrijkste onderdeel van de oorsprong van deze sectie.
_I1
Het meest belangrijke onderdeel van de oorsprong van deze sectie.
_I2
Het minst significante onderdeel van de oorsprong van deze sectie.
_Rang
De rang van de sectie.
_Section_extent
Het gebiedsobject dat de omvang van de sectie aangeeft.
_Section_origin
Het indexobject dat de locatie van de oorsprong aangeeft.
value_type
Het gegevenstype van de elementen die worden gekopieerd.
Retourwaarde
Retourneert een subsectie van het array object dat zich op de opgegeven oorsprong bevindt en, optioneel, die de opgegeven mate heeft. Wanneer alleen het index object is opgegeven, bevat de subsectie alle elementen in het bijbehorende raster met indexen die groter zijn dan de indexen van de elementen in het index object.
view_as
Deze matrix wordt opnieuw geïnterpreteerd als een array_view van een andere rang.
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);
Parameterwaarden
_New_rank
De rang van het extent object dat als parameter is doorgegeven.
_View_extent
De mate die wordt gebruikt om het nieuwe array_view-object te maken.
value_type
Het gegevenstype van de elementen in zowel het oorspronkelijke array object als het geretourneerde array_view object.
Retourwaarde
Het array_view-object dat is samengesteld.