Sdílet prostřednictvím


array_view – třída

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

Veřejné konstruktory

Název

Description

array_view::array_view – konstruktor

Inicializuje 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 – destruktor

Odstraní objekt array_view.

Veřejné metody

Název

Description

array_view::copy_to – metoda

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

array_view::data – metoda

Vrací ukazatel na nezpracovaná data objektu array_view.

array_view::discard_data – metoda

Zahodí aktuální data tohoto zobrazení.

array_view::get_extent – metoda

Vrátí objekt extent objektu array_view.

array_view::get_ref – metoda

Vrátí odkaz na indexovaný prvek.

array_view::get_source_accelerator_view – metoda

Vrátí accelerator_view, kde se nachází zdroj dat array_view.

array_view::refresh – metoda

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.

array_view::reinterpret_as – metoda

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

array_view::section – metoda

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

array_view::synchronize – metoda

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

array_view::synchronize_async – metoda

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

array_view::synchronize_to – metoda

Synchronizuje všechny změny provedené na objektu array_view pro zadaný accelerator_view.

array_view::synchronize_to_async – metoda

Asynchronně synchronizuje všechny změny provedené na objektu array_view pro zadaný accelerator_view.

array_view::view_as – metoda

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

Veřejné operátory

Název

Description

array_view::operator() – operátor

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.

Veřejné konstanty

Název

Description

array_view::rank – konstanta

Udržuje řád objektu array_view.

Datové členy

Název

Description

array_view::extent – datový člen

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

array_view::source_accelerator_view – datový člen

Získá accelerator_view, kde se nachází zdroj dat array_view

array_view::value_type – datový člen

Typ hodnoty array_view a vázaného pole.

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ého 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čka: amp.h

Obor názvů: Souběžnost

Viz také

Referenční dokumentace

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