Udostępnij za pośrednictwem


Klasa array_view

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
    Ranking obiektu array_view.

Elementy członkowskie

Hh305260.collapse_all(pl-pl,VS.110).gifKonstruktory publiczne

Nazwa

Opis

Konstruktor array_view::array_view

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.

array_view:: ~ array_view destruktor

Niszczy obiekt array_view.

Hh305260.collapse_all(pl-pl,VS.110).gifMetody publiczne

Nazwa

Opis

Metoda array_view::copy_to

Kopiuje zawartość obiektu array_view do określonego miejsca docelowego, wywołując copy(*this, dest).

Metoda array_view::Data

Zwraca wskaźnik do surowych danych array_view.

Metoda array_view::discard_data

Odrzuca bieżące dane, odpowiadające temu widokowi.

Metoda array_view::get_extent

Zwraca obiekt extent z obiektu array_view.

Metoda array_view::Refresh

Powiadamia obiekt array_view, że jego związana pamięć została zmodyfikowana poza interfejsem array_view.Wywołanie tej metody renderuje wszystkie nieodświeżone informacje buforowane.

Metoda array_view::reinterpret_as

Zwraca jednowymiarową tablicę, która zawiera wszystkie elementy w obiekcie array_view.

Metoda array_view::section

Zwraca podsekcję obiektu array_view, który znajduje się w określonej lokalizacji i opcjonalnie zawiera określony zakres.

Metoda array_view::synchronize

Synchronizuje zmiany dokonane na obiekcie array_view, z powrotem do jego danych źródłowych.

Metoda array_view::synchronize_async

Asynchronicznie synchronizuje wszelkie zmiany dokonane w obiekcie array_view, z powrotem do jego danych źródłowych.

Metoda array_view::view_as

Wytwarza obiekt array_view o innej randze, za pomocą danych obiektu array_view.

Hh305260.collapse_all(pl-pl,VS.110).gifOperatory publiczne

Nazwa

Opis

Operator array_view::operator()

Zwraca wartość elementu, która jest określona przez parametr lub parametry.

[array_view::operator] operatora

Zwraca element, który jest określony przez parametry.

array_view::operator = operatora

Kopiuje zawartość określonego obiektu array_view do wskazanego.

Hh305260.collapse_all(pl-pl,VS.110).gifPubliczne stałe

Nazwa

Opis

Stała array_view::Rank

Przechowuje rangę obiektu array_view.

Hh305260.collapse_all(pl-pl,VS.110).gifElementy członkowskie danych

Nazwa

Opis

array_view::Extent Członkowskich danych

Pobiera obiekt extent, który definiuje kształt obiektu array_view.

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 poprzez wywołanie parallel_for_each do akceleratora i dostęp do akceleratora.

  • Widok tablicy, znajdujący się na akceleratorze, jest przekazywany poprzez wywołanie parallel_for_each do innego akceleratora i tam jest dostępny.

  • Widok tablicy, 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 szeregowe relacje 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 są aliasowane 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 wyścigu.

Podczas tworzenia obiektu array_view, za pomocą wskaźnika w pamięci systemu, należy zmieniać obiekt widoku array_view tylko poprzez 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

Zobacz też

Informacje

Obszar nazw współbieżności (C++ AMP)