Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Rappresenta un contenitore di dati utilizzato per spostare i dati in un acceleratore.
Sintassi
template <typename value_type, int _Rank>
friend class array;
Parametri
value_type
Tipo di elemento dei dati.
_Rango
Classificazione della matrice.
Membri
Costruttori pubblici
| Nome | Descrizione |
|---|---|
| Costruttore di matrice | Inizializza una nuova istanza della classe array. |
| Distruttore ~array | Elimina definitivamente l'oggetto array . |
Metodi pubblici
| Nome | Descrizione |
|---|---|
| copia_in | Copia il contenuto della matrice in un'altra matrice. |
| dati | Restituisce un puntatore ai dati grezzi dell'array. |
| get_accelerator_view | Restituisce l'oggetto accelerator_view che rappresenta la posizione in cui viene allocata la matrice. È possibile accedere a questa proprietà solo sulla CPU. |
| get_associated_accelerator_view | Ottiene il secondo oggetto accelerator_view passato come parametro quando si invoca un costruttore di staging per istanziare l'oggetto array. |
| get_cpu_access_type | Restituisce la access_type della matrice. È possibile accedere a questo metodo solo sulla CPU. |
| get_extent | Restituisce l'oggetto extent della matrice. |
| reinterpret_as | Restituisce una matrice unidimensionale che contiene tutti gli elementi dell'oggetto array . |
| sezione | Restituisce una sottosezione dell'oggetto array che si trova all'origine specificata e, facoltativamente, con l'extent specificato. |
| view_as | Restituisce un oggetto array_view costruito dall'oggetto array . |
Operatori pubblici
| Nome | Descrizione |
|---|---|
operator std::vector<value_type> |
copy(*this, vector) Usa per convertire in modo implicito la matrice in un oggetto std::vector. |
| operator() | Restituisce il valore dell'elemento specificato dai parametri. |
| Operatore [] | Restituisce l'elemento in corrispondenza dell'indice specificato. |
| Operatore = | Copia il contenuto dell'oggetto specificato array in questo oggetto. |
Costanti pubbliche
| Nome | Descrizione |
|---|---|
| Costante rank | Archivia il rango della matrice. |
Membri di dati pubblici
| Nome | Descrizione |
|---|---|
| accelerator_view | Ottiene l'oggetto accelerator_view che rappresenta la posizione in cui viene allocata la matrice. È possibile accedere a questa proprietà solo sulla CPU. |
| associated_accelerator_view | Ottiene il secondo oggetto accelerator_view passato come parametro quando si invoca un costruttore di staging per istanziare l'oggetto array. |
| cpu_access_type | Ottiene il access_type che rappresenta il modo in cui la CPU può accedere all'archiviazione della matrice. |
| ambito | Ottiene le dimensioni che definiscono la forma dell'array. |
Osservazioni:
Il tipo array<T,N> rappresenta una matrice densa e regolare (non a dente di sega) N-dimensionale che è situata in una posizione specifica, ad esempio su un acceleratore o sulla CPU. Il tipo di dati degli elementi nella matrice è T, che deve essere di un tipo compatibile con l'acceleratore di destinazione. Anche se il grado N della matrice viene determinato in modo statico e fa parte del tipo, l'estensione della matrice è determinata dal runtime ed è espressa usando la classe extent<N>.
Una matrice può avere un numero qualsiasi di dimensioni, anche se alcune funzionalità sono specializzate per array gli oggetti con classificazione 1, due e tre. Se si omette l'argomento della dimensione, il valore predefinito è 1.
I dati della matrice sono disposti in modo contiguo in memoria. Gli elementi che differiscono da uno nella dimensione meno significativa sono adiacenti in memoria.
Le matrici sono considerate logicamente tipi di valore, perché quando una matrice viene copiata in un'altra matrice, viene eseguita una copia completa. Due matrici non puntano mai agli stessi dati.
Il array<T,N> tipo viene usato in diversi scenari:
Come contenitore di dati che può essere usato nei calcoli su un acceleratore.
Come contenitore di dati per contenere la memoria nella CPU host (che può essere usata per copiare da e verso altre matrici).
Come oggetto di staging da utilizzare come un intermediario rapido nelle copie da host a dispositivo.
Gerarchia di ereditarietà
array
Requisiti
Intestazione: amp.h
Spazio dei nomi: Concurrency
~array
Elimina definitivamente l'oggetto array .
~array() restrict(cpu);
accelerator_view
Ottiene l'oggetto accelerator_view che rappresenta la posizione in cui viene allocata la matrice. È possibile accedere a questa proprietà solo sulla CPU.
__declspec(property(get= get_accelerator_view)) Concurrency::accelerator_view accelerator_view;
array
Inizializza una nuova istanza della classe array. Non esiste alcun costruttore predefinito per array<T,N>. Tutti i costruttori vengono eseguiti solo sulla CPU. Non possono essere eseguiti su un target 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);
Parametri
_Associated_Av
Oggetto "accelerator_view" che specifica la posizione di destinazione preferita dell'array.
_Av
Oggetto accelerator_view che specifica la posizione della matrice.
_tipo_accesso_cpu
Il access_type desiderato per l'array sulla CPU. Il valore predefinito di questo parametro è access_type_auto, lasciando che l'assegnazione della CPU access_type sia determinata dal runtime. È possibile eseguire query sulla CPU access_type effettiva per la matrice usando il get_cpu_access_type metodo .
_Estensione
L'estensione in ogni dimensione dell'array.
_E0
Componente più significativo dell'estensione di questa sezione.
_E1
La componente immediatamente meno significativa dell'estensione di questa sezione.
_E2
Componente meno significativo dell'estensione di questa sezione.
_InputIterator
Tipo di iteratore di input.
_Src
Opporsi alla copia.
_Src_first
Iteratore iniziale nel contenitore di origine.
_Src_last
Iteratore finale nel contenitore di origine.
_Altro
Altra fonte dati.
_Rango
Classificazione della sezione.
value_type
Tipo di dati degli elementi copiati.
associated_accelerator_view
Ottiene il secondo oggetto accelerator_view passato come parametro quando si invoca un costruttore di staging per istanziare l'oggetto array.
__declspec(property(get= get_associated_accelerator_view)) Concurrency::accelerator_view associated_accelerator_view;
copy_to
Copia il contenuto di array in un altro oggetto array.
void copy_to(
array<value_type, _Rank>& _Dest) const ;
void copy_to(
array_view<value_type, _Rank>& _Dest) const ;
Parametri
_Dest
Oggetto array_view in cui eseguire la copia.
tipo_accesso_cpu
Ottiene il tipo di accesso CPU consentito per questo array.
__declspec(property(get= get_cpu_access_type)) access_type cpu_access_type;
data
Restituisce un puntatore ai dati grezzi dell'oggetto array.
value_type* data() restrict(amp, cpu);
const value_type* data() const restrict(amp, cpu);
Valore restituito
Puntatore ai dati non elaborati della matrice.
estensione
Ottiene l'oggetto extent che definisce la forma dell'oggetto array.
__declspec(property(get= get_extent)) Concurrency::extent<_Rank> extent;
ottieni_visualizzazione_acceleratore
Restituisce l'oggetto accelerator_view che rappresenta la posizione in cui viene allocato l'oggetto array . È possibile accedere a questa proprietà solo sulla CPU.
Concurrency::accelerator_view get_accelerator_view() const;
Valore restituito
Oggetto accelerator_view che rappresenta la posizione in cui viene allocato l'oggetto array .
get_associated_accelerator_view
Ottiene il secondo oggetto accelerator_view passato come parametro quando si invoca un costruttore di staging per istanziare l'oggetto array.
Concurrency::accelerator_view get_associated_accelerator_view() const ;
Valore restituito
Il secondo oggetto accelerator_view passato al costruttore di staging.
ottenere_tipo_di_accesso_cpu
Restituisce il tipo di accesso CPU consentito per questa matrice.
access_type get_cpu_access_type() const restrict(cpu);
Valore restituito
get_extent
Restituisce l'oggetto extent di array.
Concurrency::extent<_Rank> get_extent() const restrict(amp,cpu);
Valore restituito
L'oggetto extent del array.
operator std::vector<value_type>
copy(*this, vector) Usa per convertire in modo implicito la matrice in un oggetto std::vector.
operator std::vector<value_type>() const restrict(cpu);
Parametri
value_type
Tipo di dati degli elementi del vettore.
Valore restituito
Oggetto di tipo vector<T> che contiene una copia dei dati contenuti nella matrice.
operator()
Restituisce il valore dell'elemento specificato dai parametri.
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);
Parametri
_Indice
Posizione dell'elemento.
_I0
Componente più significativo dell'origine di questa sezione.
_I1
Il secondo componente più significativo dell'origine di questa sezione.
_I2
Componente meno significativo dell'origine di questa sezione.
_Io
Posizione dell'elemento.
Valore restituito
Valore dell'elemento specificato dai parametri.
operator[]
Restituisce l'elemento in corrispondenza dell'indice specificato.
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);
Parametri
_Indice
Indice.
_Io
Indice.
Valore restituito
Elemento in corrispondenza dell'indice specificato.
operator=
Copia il contenuto dell'oggetto specificato 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);
Parametri
_Altro
Oggetto array da cui copiare.
_Src
Oggetto array da cui copiare.
Valore restituito
Riferimento a questo array oggetto.
rank
Archivia il rango dell'oggetto array.
static const int rank = _Rank;
reinterpret_as
Reinterpreta la matrice tramite un array_view unidimensionale, che facoltativamente può avere un tipo di valore diverso rispetto alla matrice di origine.
Sintassi
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);
Parametri
_Value_type2
Tipo di dati dei dati restituiti.
Valore restituito
Oggetto array_view o const array_view basato sulla matrice, con il tipo di elemento reinterpretato da T a ElementType e la classificazione ridotta da N a 1.
Osservazioni:
A volte è utile visualizzare una matrice multidimensionale come se fosse una matrice lineare unidimensionale, possibilmente con un tipo di valore diverso rispetto alla matrice di origine. È possibile usare questo metodo per ottenere questo risultato. Attenzione Reinterpretare un oggetto matrice usando un tipo di valore diverso è un'operazione potenzialmente non sicura. È consigliabile usare attentamente questa funzionalità.
Il codice seguente fornisce un esempio.
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);
sezione
Restituisce una sottosezione dell'oggetto array che si trova all'origine specificata e, facoltativamente, con l'extent specificato.
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);
Parametri
_E0
Componente più significativo dell'estensione di questa sezione.
_E1
La componente immediatamente meno significativa dell'estensione di questa sezione.
_E2
Componente meno significativo dell'estensione di questa sezione.
_Ext
Oggetto extent che specifica l'extent della sezione. L'origine è 0.
_Idx
Oggetto indice che specifica la posizione dell'origine. La sottosezione è il resto dell'estensione.
_I0
Componente più significativo dell'origine di questa sezione.
_I1
Il secondo componente più significativo dell'origine di questa sezione.
_I2
Componente meno significativo dell'origine di questa sezione.
_Rango
Classificazione della sezione.
_Section_extent
Oggetto extent che specifica l'extent della sezione.
_Section_origin
Oggetto indice che specifica la posizione dell'origine.
value_type
Tipo di dati degli elementi copiati.
Valore restituito
Restituisce una sottosezione dell'oggetto array che si trova all'origine specificata e, facoltativamente, con l'extent specificato. Quando viene specificato solo l'oggetto index , la sottosezione contiene tutti gli elementi nella griglia associata con indici maggiori degli indici degli elementi nell'oggetto index .
view_as
Reinterpreta questa matrice come array_view di un rango diverso.
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);
Parametri
_New_rank
Classificazione dell'oggetto extent passato come parametro.
_View_extent
L'estensione utilizzata per costruire il nuovo oggetto array_view.
value_type
Tipo di dati degli elementi sia nell'oggetto originale array che nell'oggetto restituito array_view .
Valore restituito
L'oggetto array_view che viene costruito.