array_view-Klasse
Stellt eine n-dimensionale Ansicht der Daten dar, die in einem anderen Container vorgehalten werden.
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)>;
Parameter
_Value_type
Der Datentyp der Elemente im array_view-Objekt._Rank
Der Rang des array_view-Objekts.
Member
Öffentliche Konstruktoren
Name |
Beschreibung |
---|---|
Initialisiert eine neue Instanz der array_view-Klasse. Für "array<T,N>" ist kein Standardkonstruktor vorhanden. Alle Konstruktoren sind auf die CPU beschränkt und können nicht auf einem Direct3D-Ziel ausgeführt werden. |
|
Zerstört das array_view-Objekt. |
Öffentliche Methoden
Name |
Beschreibung |
---|---|
Kopiert den Inhalt des array_view-Objekts in das angegebene Ziel durch Aufrufen von copy(*this, dest). |
|
Gibt einen Zeiger auf die Rohdaten des array_view-Objekts zurück. |
|
Verwirft die aktuellen Daten, die dieser Ansicht zugrunde liegen. |
|
Gibt das extent-Objekt des array_view-Objekts zurück. |
|
Gibt einen Verweis auf das indizierte Element zurück. |
|
Gibt das accelerator_view-Objekt zurück, in dem sich die Datenquelle des array_view-Objekts befindet. |
|
Benachrichtigt das array_view-Objekt, dass sein gebundener Speicher außerhalb der array_view-Schnittstelle geändert wurde. Ein Aufruf dieser Methode führt dazu, dass alle zwischengespeicherten Informationen veraltet sind. |
|
Gibt ein eindimensionales Array zurück, das alle Elemente im array_view-Objekt enthält. |
|
Gibt einen Unterabschnitt des array_view-Objekts zurück, das sich am angegebenen Ursprung befindet und optional den angegebenen Wertebereich hat. |
|
Synchronisiert alle Änderungen am array_view-Objekt wieder mit den entsprechenden Quelldaten. |
|
Synchronisiert asynchron alle Änderungen am array_view-Objekt wieder mit seinen Quelldaten. |
|
Synchronisiert alle Änderungen am array_view-Objekt mit dem angegebenen accelerator_view-Objekt. |
|
Synchronisiert asynchron alle Änderungen am array_view-Objekt mit dem angegebenen accelerator_view-Objekt. |
|
Erzeugt ein array_view-Objekt eines abweichenden Rangs mit den Daten dieses array_view-Objekts. |
Öffentliche Operatoren
Name |
Beschreibung |
---|---|
Gibt den Wert des Elements zurück, das durch den Parameter bzw. die Parameter angegeben wird. |
|
Gibt das Element zurück, das von den Parametern angegeben wird. |
|
Kopiert den Inhalt des angegebenen array_view-Objekts in dieses Objekt. |
Öffentliche Konstanten
Name |
Beschreibung |
---|---|
Speichert den Rang des array_view-Objekts. |
Datenmember
Name |
Beschreibung |
---|---|
Ruft das extent-Objekt ab, das die Form des array_view-Objekts definiert. |
|
Ruft das accelerator_view-Objekt ab, in dem sich die Datenquelle des array_view-Objekts befindet. |
|
Der Werttyp des array_view-Objekts und das gebundene Array. |
Hinweise
Die array_view-Klasse stellt Einblicke in die Daten dar, die in einem array-Objekt oder in einem Unterabschnitt eines array-Objekts enthalten sind.
Sie können auf das array_view-Objekt mit den Quelldaten (lokal) oder über eine andere Zugriffstaste oder eine Kohärenzdomäne (remote) zugreifen. Wenn Sie auf das Objekt remote zugreifen, werden Ansichten ggf. kopiert und zwischengespeichert. Mit Ausnahme der Auswirkungen des automatischen Zwischenspeicherns verfügen array_view-Objekte über ein ähnliches Leistungsprofil wie array-Objekte. Geringe Leistungseinbußen sind zu verzeichnen, wenn Sie über Ansichten auf die Daten zugreifen.
Es gibt drei remote Anwendungsszenarios:
Eine Ansicht eines Systemspeicherzeigers wird mittels eines parallel_for_each-Aufrufs einer Zugriffstaste übergeben und der Zugriff erfolgt über die Zugriffstaste.
Eine Ansicht eines Arrays auf einer Zugriffstaste wird mithilfe eines parallel_for_each- Aufrufs an eine andere Zugriffstaste übergeben und der Zugriff erfolgt hier.
Auf eine Ansicht eines Arrays auf einer Zugriffstaste wird auf der CPU zugegriffen.
In jedem dieser Szenarien werden die verwiesen Ansichten von der Laufzeit an den Remotespeicherort kopiert und wieder an den lokalen Speicherort kopiert, wenn sie durch die Aufrufe des array_view-Objekts geändert werden. Die Laufzeit kann den Prozess des Zurückkopierens von Änderungen optimieren, nur geänderte Elemente kopieren oder auch unveränderte Teile kopieren. Für überlappende array_view-Objekte in einer Datenquelle wird keine referenzielle Integrität in einem Remotespeicherort garantiert.
Sie müssen jeden den Multithreadzugriff die gleiche Datenquelle synchronisieren.
Die Laufzeit übernimmt im Hinblick auf das Zwischenspeichern von Daten in array_view-Objekte folgende Garantien:
Alle gut synchronisierten Zugriffe auf ein array-Objekt und ein darin enthaltenes array_view-Objekt in der Programmreihenfolge unterliegen einer seriellen Happens-Before-Beziehung.
Alle gut synchronisierten Zugriffe auf überlappende array_view-Objekte auf der gleichen Zugriffstaste eines einzelnen array-Objekts werden über das array-Objekt mit einem Alias versehen. Sie führen zu einer Occurs-Before-Beziehung, die der Programmreihenfolge unterliegt. Es erfolgt kein Zwischenspeichern. Wenn die array_view-Objekte über verschiedene Zugriffstasten ausgeführt werden, ist die Reihenfolge des Zugriffs nicht definiert, was zu einer Racebedingung führt.
Wenn Sie ein array_view-Objekt mithilfe eines Zeigers im Systemspeicher erstellen, können Sie das array_view-Ansichtsobjekt nur über den array_view-Zeiger ändern. Alternativ müssen Sie refresh() für eines der array_view-Objekte aufrufen, die dem Systemzeiger angefügt sind, wenn der zugrunde liegende systemeigene Arbeitsspeicher nicht über das array_view-Objekt, sondern direkt geändert wird.
Bei beiden Aktionen wird das array_view-Objekt benachrichtigt, dass der zugrunde liegende systemeigene Arbeitsspeicher geändert wird und alle Kopien, die sich auf einer Zugriffstaste befinden, veraltet sind. Wenn Sie diese Richtlinien befolgen, sind die zeigerbasierten Ansichten mit denen identisch, die für die Ansichten von datenparallelen Arrays bereitgestellt werden.
Vererbungshierarchie
_Array_view_shape
_Array_view_base
array_view
Anforderungen
Header: amp.h
Namespace: Nebenläufigkeit