Класс array_view
Является N-размерным представлением данных, содержащихся в другом контейнере.
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)>;
Параметры
_Value_type
Тип данных элементов в объекте array_view._Rank
Ранг объекта array_view.
Члены
Открытые конструкторы
Name |
Описание |
---|---|
Инициализирует новый экземпляр класса array_view. Для array<T,N> конструктор по умолчанию отсутствует. Любые конструкторы могут выполняться только на ЦП и не могут быть выполнены на целевом объекте Direct3D. |
|
Уничтожает объект array_view. |
Открытые методы
Name |
Описание |
---|---|
Копирует содержимое объекта array_view в заданное место назначения путем вызова copy(*this, dest). |
|
Возвращает указатель на необработанные данные array_view. |
|
Сбрасывает текущие данные для этого представления. |
|
Возвращает объект границы объекта array_view. |
|
Возвращает ссылку на индексированный элемент. |
|
Возвращает accelerator_view, где находится источник данных array_view. |
|
Уведомляет объект array_view о том, что связанная с ним область памяти была изменена за пределами интерфейса array_view. Вызов этого метода отображает все кэшированные данные как устаревшие. |
|
Возвращает одномерный массив, содержащий все элементы в объекте array_view. |
|
Возвращает подраздел объекта array_view, находящийся по заданному начальному положению и, при необходимости, имеющий определенный размер. |
|
Синхронизирует все изменения, внесенные в объект array_view, с его исходными данными. |
|
Асинхронно синхронизирует все изменения, внесенные в объект array_view, с его исходными данными. |
|
Синхронизирует все изменения, внесенные в объект array_view с определенным accelerator_view. |
|
Асинхронно синхронизирует все изменения, внесенные в объект array_view с определенным accelerator_view. |
|
Создает объект array_view другого ранга, используя данные объекта array_view. |
Открытые операторы
Name |
Описание |
---|---|
Возвращает значение элемента, задаваемого параметром или параметрами. |
|
Возвращает элемент, задаваемый параметрами. |
|
Копирует содержимое указанного объекта array_view в данный объект. |
Открытые константы
Name |
Описание |
---|---|
Хранит ранг объекта array_view. |
Элементы данных
Name |
Описание |
---|---|
Получает объект extent, который определяет форму объекта array_view. |
|
Получает accelerator_view, где находится источник данных array_view. |
|
Тип значения array_view и ограниченного массива. |
Примечания
Класс array_view является представлением данных, хранящемся в объекте array или в подразделе объекта array.
Можно получить доступ к объекту array_view, исходные данные которого находятся локально или на другом ускорителе, или на связанном домене (удаленно). При удаленном обращении к объекту представления копируются и кэшируются по мере необходимости. За исключением эффектов автоматического кэширования, объекты array_view имеют профиль производительности, сходный с объектами array. Существует небольшое снижение производительности при доступе к данным через представления.
Существует три сценария удаленного использования.
Передача представления указателя системной памяти, осуществляется посредством вызова parallel_for_each на ускорителе и непосредственным доступом на ускорителе.
Передача представления массива, расположенного на ускорителе, осуществляется посредством вызова parallel_for_each на другом ускорителе и непосредственным доступом на нем.
Доступ к представлению массива, расположенного на ускорителе, осуществляется в ЦП.
В любом из этих сценариев, упомянутые представления копируются средой выполнения в удаленное расположение и при их изменении посредством вызовов к объекту array_view копируются обратно в локальное расположение. Среда выполнения может оптимизировать процесс копирования изменений обратно, может копировать только измененные элементы, или может копировать и неизменившиеся части тоже. Перекрывающиеся объекты array_view на одном и том же источнике данных не гарантируют ссылочной целостности в удаленном расположении.
Необходимо синхронизировать любой многопоточный доступ к одному и тому же источнику данных.
Среда выполнения предоставляет следующие гарантии относительно кэширования данных в объектах array_view:
Любой правильно синхронизированный доступ к объекту array и объекту array_view в порядке выполнения программы подчиняется серийному отношению "случилось прежде".
Любой правильно синхронизированный доступ к перекрывающимся объектам array_view на одном и том же ускорителе на одном объекте array псевдоименуется с помощью объекта array. Они задают общее отношение "случилось прежде", которое следует порядку выполнения программы. Отсутствие кэширования. Если объекты array_view выполняются на разных ускорителях, то порядок доступа не определен, что создает состояние гонки.
При создании объекта array_view с помощью указателя в системной памяти необходимо изменить объект представления array_view только через указатель array_view. В качестве альтернативы, необходимо вызвать refresh()на одном из объектов array_view, подключенных к системному указателю, если нижележащая основная память изменяется напрямую, вместо использования объекта array_view.
Любое действие уведомляет объект array_view, что нижележащая основная память была изменена и, что все копии, которые находятся на ускорителе, устарели. Если следовать приведенным выше рекомендациям, то представления, основанные на указателях, идентичны представлениям, основанным на массивах, поддерживающих параллельность данных.
Иерархия наследования
_Array_view_shape
_Array_view_base
array_view
Требования
Заголовок: amp.h
Пространство имен: Concurrency