array_view — Klasa
Reprezentuje N-wymiarowy widok danych, przechowywanych w innym kontenerze.
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)>;
Parametry
_Value_type
Typ danych elementów w obiekcie array_view._Rank
Ranga obiektu array_view.
Elementy członkowskie
Konstruktory publiczne
Nazwa |
Opis |
---|---|
Inicjuje nowe wystąpienie klasy array_view.Brak domyślnego konstruktora dla array<T,N>.Wszystkie konstruktory są ograniczone do uruchomienia tylko na procesorze i nie mogą być wykonywane docelowo na Direct3D. |
|
Niszczy obiekt array_view. |
Metody publiczne
Nazwa |
Opis |
---|---|
Kopiuje zawartość obiektu array_view do określonego miejsca docelowego, wywołując copy(*this, dest). |
|
Zwraca wskaźnik do surowych danych array_view. |
|
Odrzuca bieżące dane, odpowiadające temu widokowi. |
|
Zwraca obiekt extent z obiektu array_view. |
|
Zwraca odwołanie do elementu indeksowanego. |
|
Zwraca accelerator_view, w którym znajduje się źródło danych array_view. |
|
Powiadamia obiekt array_view, że jego pamięć związana została zmodyfikowana poza interfejsem array_view.Wywołanie tej metody renderuje wszystkie nieodświeżone informacje buforowane. |
|
Zwraca jednowymiarową tablicę, która zawiera wszystkie elementy w obiekcie array_view. |
|
Zwraca podsekcję obiektu array_view, który znajduje się w określonej lokalizacji i opcjonalnie ma określony zakres. |
|
Synchronizuje wszelkie zmiany dokonane na obiekcie array_view z powrotem do jego danych źródłowych. |
|
Asynchronicznie synchronizuje wszelkie zmiany dokonane w obiekcie array_view z powrotem do jego danych źródłowych. |
|
Synchronizuje wszelkie modyfikacje wprowadzone do obiektu array_view na określony accelerator_view. |
|
Synchronizuje asynchronicznie wszelkie modyfikacje wprowadzone do obiektu array_view na określony accelerator_view. |
|
Wytwarza obiekt array_view o innej randze, za pomocą danych obiektu array_view. |
Operatory publiczne
Nazwa |
Opis |
---|---|
Zwraca wartość elementu, która jest określona przez parametr lub parametry. |
|
Zwraca element, który jest określony przez parametry. |
|
Kopiuje zawartość określonego obiektu array_view do wskazanego. |
Publiczne stałe
Nazwa |
Opis |
---|---|
Przechowuje rangę obiektu array_view. |
Elementy członkowskie danych
Nazwa |
Opis |
---|---|
Pobiera obiekt extent, który definiuje kształt obiektu array_view. |
|
Pobiera obiekt accelerator_view, w której znajduje się źródło danych obiektu array_view. |
|
Typ wartości array_view i tablicy powiązania. |
Uwagi
Klasa array_view reprezentuje widok danych zawartych w obiekcie array lub podsekcji obiektu array.
Można uzyskać dostęp do obiektu array_view, tam gdzie znajdują się dane źródłowe (lokalnie), na innym akceleratorze lub w domenie spójności (zdalnie).Podczas zdalnego dostępu do obiektu widoki są kopiowane i buforowane, w miarę potrzeby.Z wyjątkiem skutków buforowania automatycznego, obiekty array_view mają profil wydajności podobny do obiektów array.Istnieje mały spadek wydajności, podczas dostępu do danych, za pomocą widoków.
Istnieją trzy scenariusze użycia zdalnego:
Widok wskaźnika pamięci systemu jest przekazywany przez wywołanie parallel_for_each do akceleratora i dostęp do akceleratora.
Widok tablicy znajdujący się na akceleratorze, który jest przekazywany przez wywołanie parallel_for_each do innego akceleratora i tam jest dostępny.
Widok tablicy, który znajduje się na akceleratorze i jest dostępny na procesorze.
W każdym z tych scenariuszy, widoki, do których się odwołują, są kopiowane w czasie wykonywania, do lokalizacji zdalnej i jeśli są modyfikowane przez wywołanie obiektu array_view, są kopiowane z powrotem do lokalnej lokalizacji.Środowisko wykonawcze może zoptymalizować proces kopiowania zmian z powrotem, może kopiować tylko zmienione elementy, lub może kopiować również fragmenty niezmienione.Gdy występują nakładające się obiekty array_view w jednym źródle danych, nie ma gwarancji utrzymania integralności referencyjnej w lokalizacji zdalnej.
Należy zsynchronizować każdy dostęp wielowątkowy do tego samego źródła danych.
Środowisko wykonawcze zapewnia następujące gwarancje, dotyczące buforowania danych w obiektach array_view :
Każdy dobrze zsynchronizowany dostęp do obiektu array i obiektu array_view występującego na nim w porządku programu, przestrzega szeregowych relacji happens-before.
Każdy dobrze zsynchronizowany dostęp do nakładających się obiektów array_view, na tym samym akceleratorze, na jednym obiekcie array, jest aliasowany przez obiekt array.Wywołują one całkowite relacje occurs-before, które przestrzegają kolejność programu.Nie występuje buforowanie.Jeśli obiekty array_view są wykonywane na różnych akceleratorach, kolejność dostępu jest niezdefiniowana, tworząc warunki sytuacji wyścigu.
Podczas tworzenia obiektu array_view, za pomocą wskaźnika w pamięci systemu, należy zmieniać obiekt widoku array_view tylko przez wskaźnik array_view.Alternatywnie należy wywołać refresh() na jednym z obiektów array_view, które są dołączone do wskaźnika systemowego, jeśli podstawowa pamięć macierzysta jest zmieniana bezpośrednio, a nie poprzez obiekt array_view.
Każda akcja powiadamia obiekt array_view, że podstawowa pamięć macierzysta została zmieniona oraz, że wszelkie kopie, które znajdują się na akceleratorze, są nieaktualne.Jeśli są przestrzegane następujące wskazówki, widoki oparte na wskaźnikach są identyczne do tych dostarczonych do widoków tablic danych równoległych.
Hierarchia dziedziczenia
_Array_view_shape
_Array_view_base
array_view
Wymagania
Nagłówek: amp.h
Przestrzeń nazw: Concurrency