Udostępnij za pośrednictwem


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

array_view::array_view — Konstruktor

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.

Metody publiczne

Nazwa

Opis

array_view::copy_to — Metoda

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

array_view::data — Metoda

Zwraca wskaźnik do surowych danych array_view.

array_view::discard_data — Metoda

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

array_view::get_extent — Metoda

Zwraca obiekt extent z obiektu array_view.

array_view::get_ref — Metoda

Zwraca odwołanie do elementu indeksowanego.

array_view::get_source_accelerator_view — Metoda

Zwraca accelerator_view, w którym znajduje się źródło danych array_view.

array_view::refresh — Metoda

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.

array_view::reinterpret_as — Metoda

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

array_view::section — Metoda

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

array_view::synchronize — Metoda

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

array_view::synchronize_async — Metoda

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

array_view::synchronize_to — Metoda

Synchronizuje wszelkie modyfikacje wprowadzone do obiektu array_view na określony accelerator_view.

array_view::synchronize_to_async — Metoda

Synchronizuje asynchronicznie wszelkie modyfikacje wprowadzone do obiektu array_view na określony accelerator_view.

array_view::view_as — Metoda

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

Operatory publiczne

Nazwa

Opis

array_view::operator() Operator

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

array_view::operator[] Operator

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

array_view::operator= Operator

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

Publiczne stałe

Nazwa

Opis

array_view::rank — Stała

Przechowuje rangę obiektu array_view.

Elementy członkowskie danych

Nazwa

Opis

array_view::extent — Członek danych

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

array_view::source_accelerator_view — Członek danych

Pobiera obiekt accelerator_view, w której znajduje się źródło danych obiektu array_view.

array_view::value_type — Członek danych

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

Zobacz też

Informacje

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