Condividi tramite


Classe array_view

Rappresenta una visualizzazione a N-dimensionale sui dati presenti in un altro contenitore.

template <
   typename _Value_type,
   int _Rank = 1
>
class array_view : public _Array_view_base<_Rank,sizeof(_Value_type)/sizeof(int)>;
                     
template <
   typename _Value_type,
   int _Rank                     
>
class array_view<const _Value_type, _Rank> : public _Array_view_base<_Rank,sizeof(_Value_type)/sizeof(int)>;

Parametri

  • _Value_type
    Il tipo di dati degli elementi nell'oggetto array_view.

  • _Rank
    Il rango dell'oggetto array_view.

Membri

Hh305260.collapse_all(it-it,VS.110).gifCostruttori pubblici

Nome

Descrizione

Costruttore array_view::array_view

Inizializza una nuova istanza della classe array_view.Non è presente un costruttore predefinito per array<T,N>.Tutti i costruttori sono limitati dal dover esser eseguiti sulla CPU e non possono essere eseguiti in una destinazione Direct3D.

Distruttore array_view::~array_view

Elimina l'oggetto array_view.

Hh305260.collapse_all(it-it,VS.110).gifMetodi pubblici

Nome

Descrizione

Metodo array_view::copy_to

Copiare il contenuto dell'oggetto array_view nella destinazione specificata chiamando copy(*this, dest).

Metodo array_view::data

Restituisce un puntatore ai dati non trattati dell' array_view.

Metodo array_view::discard_data

Rimuove i dati correnti che sono alla base di questa view.

Metodo array_view::get_extent

Restituisce l'oggetto extent dell'oggetto array_view.

Metodo array_view::refresh

Notifica all'oggetto array_view che la sua memoria associata è stata modificata al di fuori dell'interfaccia dell'array_view.Una chiamata a questo metodo rende non aggiornate tutte le informazioni memorizzate nella cache.

Metodo array_view::reinterpret_as

Restituisce un array unidimensionale contenente tutti gli elementi dell'oggetto array_view.

Metodo array_view::section

Restituisce una sottosezione dell'oggetto array_view presente all'origine specificata e, facoltativamente, con l'extent specificato.

Metodo array_view::synchronize

Sincronizza le modifiche apportate all'oggetto array_view partendo dai dati di origine.

Metodo array_view::synchronize_async

In modo asincrono, sincronizza le modifiche apportate all'oggetto array_view partendo dai dati di origine.

Metodo array_view::view_as

Produce un oggetto array_view con un numero di dimensioni differente utilizzando i dati di questo oggetto array_view.

Hh305260.collapse_all(it-it,VS.110).gifOperatori pubblici

Nome

Descrizione

Operatore array_view::operator()

Restituisce il valore dell'elemento specificato dal parametro o dai parametri.

Operatore array_view::operator[]

Restituisce l'elemento specificato dai parametri.

Operatore array_view::operator=

Copia il contenuto dell'oggetto array_view specificato in questo oggetto.

Hh305260.collapse_all(it-it,VS.110).gifCostanti pubbliche

Nome

Descrizione

Costante array_view::rank

Memorizza il numero di dimensioni dell'oggetto array_view.

Hh305260.collapse_all(it-it,VS.110).gifMembri di dati

Nome

Descrizione

Membro dati array_view::extent

Ottiene l'oggetto extent che definisce la forma dell'oggetto array_view.

Note

La classe array_view rappresenta una visualizzazione dei dati contenuti in un oggetto array o in una sottosezione di un oggetto array.

È possibile accedere all'oggetto array_view in cui sono presenti i dati di origine (localmente) o ad un acceleratore differente o ad un dominio di coerenza (in modo remoto).Quando si accede all'oggetto in modalità remota, le view vengono copiate e memorizzate nella cache in base alle esigenze.Ad eccezione degli effetti della memorizzazione automatica nella cache, gli oggetti array_view hanno un profilo di prestazioni simile a quello degli oggetti array.C'è una lieve riduzione delle prestazioni quando si accede ai dati tramite le view.

Esistono tre scenari remoti di utilizzo:

  • Una view ad un puntatore alla memoria di sistema viene passata tramite una chiamata a parallel_for_each ad un acceleratore e si accede all'acceleratore.

  • Una view ad un array che si trova su un acceleratore viene passata tramite una chiamata a parallel_for_each ad un altro acceleratore e viene acceduta là.

  • Una view in un array che si trova su un acceleratore viene eseguita sulla CPU.

In ognuno di questi scenari, le view referenziate vengono copiate dal runtime alla posizione remota e, se modificate dalle chiamate all'oggetto array_view, vengono ricopiate nel percorso locale.Il runtime può ottimizzare il processo di copia delle modifiche, può copiare solo gli elementi modificati oppure può anche copiare le parti invariate.Gli oggetti array_view sovrapposti in un'origine dati non hanno garanzia di mantenere l'integrità referenziale in una posizione remota.

È necessario sincronizzare ogni accesso di più thread alla stessa origine dati.

Il runtime effettua le seguenti garanzie memorizzando i dati negli oggetti array_view :

  • Tutti gli accessi ben sincronizzati ad un oggetto array e ad un oggetto array_view, nell'ordine della programmazione, seguono una delazione di pre-avvenire.

  • Tutti gli accessi ben sincronizzati agli oggetti array_view sovrapposti, sullo stesso acceleratore su un singolo oggetto array sono in alias attraverso l'oggetto array.Provocano una totale relazione di pre-verifica che obbedisce all'ordine di programma.Non vi è la memorizzazione nella cache.Se gli oggetti array_view sono eseguiti su acceleratori diversi, l'ordine di accesso è indefinito, creando una race condition.

Quando si crea un oggetto array_view utilizzando un puntatore nella memoria di sistema, è necessario modificare l'oggetto di visualizzazione array_view solamente tramite il puntatore all' array_view.In alternativa, è necessario chiamare refresh()su uno degli oggetti array_view associati al puntatore di sistema se la memoria nativa sottostante viene modificata direttamente, anziché attraverso l'oggetto array_view.Qualsiasi azione notifica alll'oggetto array_view che la memoria nativa sottostante è stata modificata e che tutte le copie che si trovano sull'acceleratore sono obsolete.Seguendo queste linee guida, le view basate su puntatore sono identiche a quelle fornite alle view dei vettori di dati in parallelo.

Gerarchia di ereditarietà

_Array_view_shape

_Array_view_base

array_view

Requisiti

Intestazione: amp.h

Spazio dei nomi: Concurrency

Vedere anche

Riferimenti

Spazio dei nomi Concurrency (C++ AMP)