Sdílet prostřednictvím


Třída array_view

Představuje N-rozměrné zobrazení nad daty udržovanými v jiném kontejneru.

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 dat prvků objektu array_view.

  • _Rank
    Řád objektu array_view.

Členy

Hh305260.collapse_all(cs-cz,VS.110).gifVeřejné konstruktory

Název

Description

Konstruktor array_view::array_view

Vytvoří novou instanci třídy array_view.Pro třídu array<T,N> neexistuje žádný výchozí konstruktor.Všechny konstruktory mohou být spuštěny pouze na CPU a nelze je spustit na cíli Direct3D.

array_view:: ~ array_view Destructor

Odstraní z array_view objekt.

Hh305260.collapse_all(cs-cz,VS.110).gifVeřejné metody

Název

Description

Metoda array_view::copy_to

Zkopíruje obsah objektu array_view na místo určení voláním metody copy(*this, dest).

Metoda array_view::data

Vrací ukazatel na nezpracovaná data objektu array_view.

Metoda array_view::discard_data

Zahodí aktuální data tohoto zobrazení.

Metoda array_view::get_extent

Vrátí objekt extent objektu array_view.

Metoda array_view::Refresh

Upozorní objekt array_view, že jemu přidružená paměť byla upravena mimo rozhraní array_view.Volání této metody způsobí zastaralost všech informací uložených v mezipaměti.

Metoda array_view::reinterpret_as

Vrátí jednorozměrné pole obsahující všechny prvky v objektu array_view.

Metoda array_view::Section

Vrátí dílčí část objektu array_view nacházející se na zadaném umístění a volitelně také se zadaným rozsahem.

Metoda array_view::synchronize

Synchronizuje všechny změny provedené v objektu array_view s jeho zdrojovými daty.

Metoda array_view::synchronize_async

Asynchronně synchronizuje všechny změny provedené v objektu array_view s jeho zdrojovými daty.

Metoda array_view::view_as

Vytvoří objekt array_view jiného řádu za použití dat tohoto objektu array_view.

Hh305260.collapse_all(cs-cz,VS.110).gifVeřejné operátory

Název

Description

array_view::Operator() operátora

Vrátí hodnotu prvku určeného parametrem nebo parametry.

[array_view::Operator] operátor

Vrátí hodnotu prvku určeného parametry.

array_view::Operator = operátor

Zkopíruje obsah zadaného objektu array_view do tohoto objektu.

Hh305260.collapse_all(cs-cz,VS.110).gifVeřejné konstanty

Název

Description

array_view::RANK konstanta

Udržuje řád objektu array_view.

Hh305260.collapse_all(cs-cz,VS.110).gifDatové členy

Název

Description

Datový člen array_view::extent

Načte objekt extent definující tvar objektu array_view.

Poznámky

Třída array_view představuje zobrazení dat obsažených v objektu array nebo v dílčí části objektu array.

K objektu array_view lze přistoupit v místě, kde jsou umístěna zdrojová data (lokálně), nebo v jiném akcelerátoru nebo doméně koherence (vzdáleně).Při vzdáleném přístupu k objektu jsou zobrazení dle potřeby kopírována a ukládána do mezipaměti.Kromě účinků automatické ukládání do mezipaměti mají objekty array_view profil výkonnosti podobný profilu objektů array.Přístup k datům prostřednictvím zobrazení mírně snižuje výkon.

Existují tři scénáře použití vzdáleného přístupu:

  • Zobrazení ukazatele systémové paměti je předáno akcelerátoru prostřednictvím volání algoritmu parallel_for_each a zpřístupněno v akcelerátoru.

  • Zobrazení pole umístěného v akcelerátoru je předáno jinému akcelerátoru a v tomto akcelerátoru také zpřístupněno prostřednictvím volání algoritmu parallel_for_each.

  • Zobrazení pole umístěného v akcelerátoru je zpřístupněno na CPU.

Ve všech těchto scénářích jsou odkazovaná zobrazení zkopírovaná modulem runtime na vzdálené umístění a poté, dojde-li k jejich změně voláním objektu array_view, zkopírovány zpět na místní umístění.Modul runtime může optimalizovat proces kopírování změn zpět, může zkopírovat pouze změněné prvky nebo také části, v nichž ke změnám nedošlo.Objekty array_view, které se překrývají v jednom zdroji dat, nemají zaručenu referenční integritu na vzdáleném umístění.

Všechny vícevláknové přístupy ke stejnému zdroji dat je nezbytné synchronizovat.

Modul runtime zaručuje následující skutečnosti týkající se ukládání dat objektů array_view do mezipaměti:

  • Všechny dobře synchronizované přístupy k objektu array a jeho objektu array_view v pořadí programu se řídí sériovým vztahem provedeno-před.

  • Všechny dobře synchronizované přístupy k překrývajícím se objektům array_view ve stejném akcelerátoru v rámci jednoho objektu array mají zaveden alias přes objekt array.Vyvolávají celkový vztah dochází-před, který dodržuje pořadí programu.Neprobíhá žádné ukládání do mezipaměti.Jsou-li objekty array_view spouštěny v různých akcelerátorech, není pořadí přístupu definováno, což vede ke konfliktu časování.

Po vytvoření objektu array_view za použití ukazatele do systémové paměti je zapotřebí tento objekt array_view měnit pouze prostřednictvím ukazatele na objekt array_view.Případně, je-li příslušná nativní paměť změněna přímo namísto prostřednictvím objektu array_view, je zapotřebí zavolat metodu refresh()na jeden z objektů array_view připojených k systémovému ukazateli.Obě akce upozorní objekt array_view, že došlo ke změně příslušné nativní paměti a že všechny kopie umístěné v akcelerátoru jsou již zastaralé.Při důsledném následování těchto směrnic jsou zobrazení založená na ukazatelích shodná s těmi, která jsou poskytována pro zobrazení polí paralelních dat.

Hierarchie dědičnosti

_Array_view_shape

_Array_view_base

array_view

Požadavky

Hlavičkový soubor: amp.h

Obor názvů: Concurrency

Viz také

Referenční dokumentace

Obor názvů souběžnosti (C++ AMP)