array_view, classe
Représente une vue dimensionnelle N sur les données conservées dans un autre conteneur.
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)>;
Paramètres
_Value_type
Type de données des éléments de l'objet array_view._Rank
Rang de l'objet array_view.
Membres
Constructeurs publics
Nom |
Description |
---|---|
Initialise une nouvelle instance de la classe array_view. Il n'existe pas de constructeur public par défaut pour array<T,N>. Tous les constructeurs sont limités à l'exécution sur le processeur seul et ne peuvent pas être exécutés sur une cible Direct3D. |
|
Détruit l'objet array_view. |
Méthodes publiques
Nom |
Description |
---|---|
Copie le contenu de l'objet array_view vers la destination spécifiée en appelant copy(*this, dest). |
|
Retourne un pointeur vers les données brutes de array_view. |
|
Ignore les données actuelles sous-jacentes de cette vue. |
|
Retourne l'objet d'étendue de l'objet array_view. |
|
Retourne une référence à l'élément indexé. |
|
Retourne l'accelerator_view où la source de données de l'array_view est localisée. |
|
Informe l'objet array_view que sa mémoire liée a été modifiée en dehors de l'interface array_view. Un appel à cette méthode affiche toutes les informations mises en cache périmées. |
|
Retourne un tableau unidimensionnel qui contient tous les éléments de l'objet array_view. |
|
Retourne une sous-section de l'objet array_view qui est à l'origine spécifiée et, éventuellement, qui a l'étendue spécifiée. |
|
Synchronise les modifications apportées à l'objet array_view vers ses données sources. |
|
Synchronise de façon asynchrone toutes les modifications apportées à l'objet array_view avec ses données sources. |
|
Synchronise les modifications apportées à l'objet array_view en fonction de l'accelerator_viewspécifié. |
|
Synchronise de façon asynchrone toutes les modifications apportées à l'objet array_view en fonction de la vue accelerator_viewspécifiée. |
|
Génère un objet array_view d'un rang différent utilisant les données de cet objet array_view. |
Opérateurs publics
Nom |
Description |
---|---|
Retourne la valeur de l'élément spécifié par le paramètre ou les paramètres. |
|
Retourne l'élément spécifié par les paramètres. |
|
Copie le contenu de l'objet array_view spécifié dans cet objet. |
Constantes publiques
Nom |
Description |
---|---|
Stocke le rang de l'objet array_view. |
Membres de données
Nom |
Description |
---|---|
Obtient l'objet extent qui définit la forme de l'objet array_view. |
|
Obtient l'accelerator_view où la source de données de l'array_view est localisée |
|
Type valeur de array_view et du tableau de limite. |
Remarques
La classe array_view représente une vue dans les données contenues dans un objet array ou une sous-section d'un objet array.
Vous pouvez accéder à l'objet array_view où les données sources sont situées (localement) ou sur un accélérateur différent ou un domaine de cohérence (à distance). Lorsque vous accédez à l'objet à distance, les vues sont copiées et mises en cache selon vos besoins. À l'exception des effets de mise en cache automatique, les objets array_view ont un profil de performances semblables à celui des objets array. Il existe une légère baisse de performances lorsque vous accédez aux données via les vues.
Il existe trois scénarios d'usage distants :
Une vue vers un pointeur de mémoire système est passée au moyen d'un appel à parallel_for_each sur un accélérateur et accédé dans l'accélérateur.
Une vue sur un tableau situé sur un accélérateur est passée au moyen d'un appel à parallel_for_each sur un autre accélérateur et est accessible à partir de celui-ci.
Une vue sur un tableau située sur un accélérateur est accédée sur l'UC.
Dans n'importe lequel de ces scénarios, les vues référencées sont copiées par le runtime à l'emplacement distant et, si modifiées par les appels à l'objet array_view, sont copiées vers l'emplacement local. Le runtime peut optimiser le processus de copie de modifications, peut copier uniquement les éléments modifiés, ou peut également copier les parties inchangées. Faire chevaucher des objets array_view sur une source de données ne garantit pas de maintenir l'intégrité référentielle dans un emplacement distant.
Vous devez synchroniser tout accès multithread à la même source de données.
Le runtime établit les garanties suivantes concernant la mise en cache des données dans les objets array_view :
Tous les accès bien synchronisés à un objet array et un objet array_view dessus dans la commande de programme obéissent à une relation de série d'avant évènement.
Tous les accès bien synchronisés à un objet array_view chevauchant sur le même accélérateur sur un objet unique d'alias array via l'objet array. Celles-ci induisent une relation d'évènement-avant totale à laquelle obéit la commande de programme. Il n'existe aucune mise en cache. Si les objets array_view s'exécutent sur des accélérateurs différents, l'ordre d'accès n'est pas défini, créant une condition de concurrence.
Lorsque vous créez un objet array_view à l'aide d'un pointeur dans la mémoire système, vous devez modifier l'objet array_view de vue uniquement via le pointeur array_view. Sinon, vous devez appeler refresh() sur l'un des objets array_view joints au pointeur système, si la mémoire native sous-jacente est modifiée directement, plutôt que par l'objet array_view.
Chacune des actions informe l'objet array_view que la mémoire native sous-jacente est modifiée et que toutes les copies qui se trouvent sur un accélérateur sont obsolètes. Si vous suivez ces instructions, les vues basées sur un pointeur sont identiques à celles fournies aux vues des tableaux de données parallèles.
Hiérarchie d'héritage
_Array_view_shape
_Array_view_base
array_view
Configuration requise
En-tête : amp.h
Espace de noms d'accès : Concurrency