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 |
---|---|
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. |
|
Odstraní objekt array_view. |
Veřejné metody
Název |
Description |
---|---|
Zkopíruje obsah objektu array_view na místo určení voláním metody copy(*this, dest). |
|
Vrací ukazatel na nezpracovaná data objektu array_view. |
|
Zahodí aktuální data tohoto zobrazení. |
|
Vrátí objekt extent objektu array_view. |
|
Vrátí odkaz na indexovaný prvek. |
|
Vrátí accelerator_view, kde se nachází zdroj dat array_view. |
|
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. |
|
Vrátí jednorozměrné pole obsahující všechny prvky v objektu array_view. |
|
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. |
|
Synchronizuje všechny změny provedené v objektu array_view s jeho zdrojovými daty. |
|
Asynchronně synchronizuje všechny změny provedené v objektu array_view s jeho zdrojovými daty. |
|
Synchronizuje všechny změny provedené na objektu array_view pro zadaný accelerator_view. |
|
Asynchronně synchronizuje všechny změny provedené na objektu array_view pro zadaný accelerator_view. |
|
Vytvoří objekt array_view jiného řádu za použití dat tohoto objektu array_view. |
Veřejné operátory
Název |
Description |
---|---|
Vrátí hodnotu prvku určeného parametrem nebo parametry. |
|
Vrátí hodnotu prvku určeného parametry. |
|
Zkopíruje obsah zadaného objektu array_view do tohoto objektu. |
Veřejné konstanty
Název |
Description |
---|---|
Udržuje řád objektu array_view. |
Datové členy
Název |
Description |
---|---|
Načte objekt extent definující tvar objektu array_view. |
|
Získá accelerator_view, kde se nachází zdroj dat array_view |
|
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