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 对象的秩。

成员

公共构造函数

名称

描述

array_view::array_view 构造函数

初始化 array_view 类的新实例。 array<T,N> 没有默认构造函数。 所有构造函数都只限于在 CPU 上运行,并且不能在 Direct3D 目标上执行。

array_view::~array_view 析构函数

销毁 array_view 对象。

公共方法

名称

描述

array_view::copy_to 方法

array_view 对象的内容复制到指定的目标,方法是调用 copy(*this, dest)。

array_view::data 方法

返回指向 array_view 原始数据的指针。

array_view::discard_data 方法

丢弃作为此视图基础的当前数据。

array_view::get_extent 方法

返回 array_view 对象的范围对象。

array_view::get_ref 方法

返回对索引的元素的引用。

array_view::get_source_accelerator_view 方法

返回 array_view 的数据源位置的 accelerator_view

array_view::refresh 方法

注意,array_view 对象绑定的内存已在 array_view 接口外经过修改。 此方法的调用使所有缓存的信息过时。

array_view::reinterpret_as 方法

返回包含 array_view 对象中所有元素的一维数组。

array_view::section 方法

返回指定原点上并且选择性地具有指定范围的 array_view 对象的子部分。

array_view::synchronize 方法

同步所有针对 array_view 对象返回其源数据所做的修改。

array_view::synchronize_async 方法

将所有针对 hh305260(v=vs.120).md 对象的修改异步同步回其源数据。

array_view::synchronize_to 方法

同步所有将 array_view 对象改为指定的 accelerator_view 所做的修改。

array_view::synchronize_to_async 方法

将所有针对 array_view 对象的修改异步同步到指定的 accelerator_view

array_view::view_as 方法

使用此 array_view 对象的数据,生成不同的级别的 array_view 对象。

公共运算符

名称

描述

array_view::operator() 运算符

返回由一个参数或多个参数指定的元素的值。

array_view::operator[] 运算符

返回参数指定的元素。

array_view::operator= 运算符

将指定的 array_view 对象的内容复制到此对象中。

公共常量

名称

描述

array_view::rank 常量

存储 array_view 对象的秩。

数据成员

名称

描述

array_view::extent 数据成员

获取定义 array_view 对象形状的 extent 对象。

array_view::source_accelerator_view 数据成员

获取 array_view 的数据源所在的 accelerator_view

array_view::value_type 数据成员

array_view 和绑定数组的值类型。

备注

array_view 类表示数组对象或 array 对象的字部分包含的数据的视图。

您可访问源数据所在的(本地)或不同的快捷键上或附着域(远程)上的 array_view 对象。 远程访问对象时,视图在必要时复制和缓存。 除了自动缓存的效果,array_view 对象具有的性能配置文件类似于 array 对象的性能配置文件。 通过视图访问数据时会降低少量性能。

有三种远程使用方案:

  • 系统内存指针的视图通过快捷键对 parallel_for_each 的调用,并且在该快捷键上对其进行访问的方式传递。

  • 位于一个快捷键的数组的视图通过另一快捷键对 parallel_for_each 的调用并在该快捷键上对其进行访问的方式传递。

  • 在 CPU 进行访问的位于快捷键上的数组的视图。

在这些方案的任意一个中,运行时将引用的视图复制到远程位置,并且如果由 array_view 对象的调用进行修改,则将复制回本地位置。 运行时可能优化复制更改回来的过程,可能仅复制更改的元素,或可能复制未更改的部分。 在一个数据源上重叠 array_view 对象无法保证维持远程位置上的引用完整性。

您必须将任何多线程访问同步到相同的数据源。

array_view 对象中的缓存数据而言,运行时做出以下保证:

  • 所有对 array 对象和其上的按程序顺序排列的 array_view 对象的经过很好同步的访问都遵循串行发生前关系。

  • 所有对单一 array 对象上的同一个加速器上的 array_view 对象都通过 array 对象获得了别名。 它们会在遵循程序排序的关系之前引发一个总发生数。 没有缓存。 如果 array_view 对象在不同的加速器上执行,访问顺序为未定义,并创造了争用条件。

使用系统内存中的指针创建 array_view 对象时,必须通过 array_view 指针更改视图 array_view 对象。 或者,如果直接更改本机内存,您必须在某个附加到系统指针的 array_view 对象上调用 refresh(),而不是通过使用 array_view 对象。

每个操作通知 array_view 对象:基础本机存储已更改,且加速器上的所有副本都已过时。 如果您遵循这些准则,基于指针的视图与提供的数据并行数组视图相同。

继承层次结构

_Array_view_shape

_Array_view_base

array_view

要求

**标头:**amp.h

命名空间: 并发

请参见

参考

Concurrency 命名空间 (C++ AMP)