次の方法で共有


array クラス

データをアクセラレータに移動するために使用するデータ コンテナーを表します。

構文

template <typename value_type, int _Rank>
friend class array;

パラメーター

value_type
データの要素型。

_Rank
配列のランク。

メンバー

パブリック コンストラクター

名前 説明
array コンストラクター array クラスの新しいインスタンスを初期化します。
~array デストラクター array オブジェクトを破棄します。

パブリック メソッド

名前 説明
copy_to array の内容を別の array にコピーします。
data 配列の生データへのポインターを返します。
get_accelerator_view 配列が割り当てられた位置を表す accelerator_view オブジェクトを返します。 このプロパティは CPU 上でのみアクセスできます。
get_associated_accelerator_view array オブジェクトをインスタンス化するためにステージング コンストラクターが呼び出されたときにパラメーターとして渡される、2 番目の accelerator_view オブジェクトを取得します。
get_cpu_access_type 配列の access_type を返します。 このメソッドは CPU 上でのみアクセスできます。
get_extent 配列の extent オブジェクトを返します。
reinterpret_as array オブジェクトのすべての要素を含む 1 次元配列を返します。
section 指定された原点にある array オブジェクトのサブセクションを返し、これは必要に応じて範囲が指定されます。
view_as array オブジェクトから構築された array_view オブジェクトを返します。

パブリック演算子

名前 説明
operator std::vector<value_type> copy(*this, vector) を使用して、配列を std::vector オブジェクトに暗黙的に変換します。
Operator() パラメーターによって指定された要素の値を返します。
operator[] 指定したインデックス位置にある要素を返します。
operator= 指定された array オブジェクトの内容をこのオブジェクトにコピーします。

パブリック定数

名前 説明
rank 定数 配列のランクを格納します。

パブリック データ メンバー

名前 説明
accelerator_view 配列が割り当てられた位置を表す accelerator_view オブジェクトを取得します。 このプロパティは CPU 上でのみアクセスできます。
associated_accelerator_view array オブジェクトをインスタンス化するためにステージング コンストラクターが呼び出されたときにパラメーターとして渡される、2 番目の accelerator_view オブジェクトを取得します。
cpu_access_type CPU が配列の記憶域にアクセスする方法を表す access_type を取得します。
extent 配列の図形を定義する範囲を取得します。

解説

array<T,N> 型は、アクセラレータや CPU など、特定の位置にある、密で正規の (ジャグ配列でない) N 次元配列を表します。 配列の要素のデータ型は T で、ターゲット アクセラレータと互換性のある型である必要があります。 ランクは N であり、配列のランクは静的に決定され、型の一部です。配列の範囲は、ランタイムによって決定され、extent<N> クラスを使用して表されます。

いくつかの機能は、ランク 1、2、および 3 で array オブジェクトに特化していますが、配列はどの次元数も指定できます。 次元の引数を省略すると、既定値は 1 です。

配列データはメモリ内に連続して配置されます。 最下位の次元で "1" 異なる要素はメモリでは隣接しています。

配列が別の配列にコピーされる場合は詳細コピーが実行されるため、配列は論理的に値型であると見なされます。 2 つの配列が同じデータを指すことはありません。

array<T,N> 型はいくつかのシナリオで使用されます。

  • アクセラレータの計算で使用できるデータ コンテナーとして。

  • ホスト CPU にメモリを保持するデータ コンテナーとして (他の配列との間でコピーするために使用できます)。

  • ホストとデバイス間のコピーの高速の仲介役として機能するステージング オブジェクトとして。

継承階層

array

必要条件

ヘッダー: amp.h

名前空間: Concurrency

~配列

array オブジェクトを破棄します。

~array() restrict(cpu);

accelerator_view

配列が割り当てられた位置を表す accelerator_view オブジェクトを取得します。 このプロパティは CPU 上でのみアクセスできます。

__declspec(property(get= get_accelerator_view)) Concurrency::accelerator_view accelerator_view;

array

array クラスの新しいインスタンスを初期化します。 array<T,N> の既定のコンストラクターがありません。 すべてのコンストラクターは CPU でのみ実行されます。 これらは、Direct3D ターゲットで実行することはできません。

explicit array(
    const Concurrency::extent<_Rank>& _Extent) restrict(cpu);

explicit array(
    int _E0) restrict(cpu);

explicit array(
    int _E0,
    int _E1) restrict(cpu);

explicit array(
    int _E0,
    int _E1,
    int _E2) restrict(cpu);

array(
    const Concurrency::extent<_Rank>& _Extent,
    Concurrency::accelerator_view _Av
    access_type _Cpu_access_type = access_type_auto) restrict(cpu);

array(
    int _E0,
    Concurrency::accelerator_view _Av
    access_type _Cpu_access_type = access_type_auto) restrict(cpu);

array(
    int _E0,
    int _E1,
    Concurrency::accelerator_view _Av
    access_type _Cpu_access_type = access_type_auto) restrict(cpu);

array(
    int _E0,
    int _E1,
    int _E2,
    Concurrency::accelerator_view _Av
    access_type _Cpu_access_type = access_type_auto) restrict(cpu);

array(
    const Concurrency::extent<_Rank>& _Extent,
    Concurrency::accelerator_view _Av,
    Concurrency::accelerator_view _Associated_Av) restrict(cpu);

array(
    int _E0,
    accelerator_view _Av,
    Concurrency::accelerator_view _Associated_Av) restrict(cpu);

array(
    int _E0,
    int _E1,
    Concurrency::accelerator_view _Av,
    Concurrency::accelerator_view _Associated_Av) restrict(cpu);

array(
    int _E0,
    int _E1,
    int _E2,
    Concurrency::accelerator_view _Av,
    Concurrency::accelerator_view _Associated_Av) restrict(cpu);

template <typename _InputIterator>
array(
    const Concurrency::extent<_Rank>& _Extent,
    _InputIterator _Src_first,
    _InputIterator _Src_last) restrict(cpu);

template <typename _InputIterator>
array(
    const Concurrency::extent<_Rank>& _Extent,
    _InputIterator _Src_first) restrict(cpu);

template <typename _InputIterator>
array(
    int _E0,
    _InputIterator _Src_first,
    _InputIterator _Src_last) restrict(cpu);

template <typename _InputIterator>
array(
    int _E0,
    _InputIterator _Src_first) restrict(cpu);

template <typename _InputIterator>
array(
    int _E0,
    int _E1,
    _InputIterator _Src_first,
    _InputIterator _Src_last) restrict(cpu);

template <typename _InputIterator>
array(
    int _E0,
    int _E1,
    _InputIterator _Src_first) restrict(cpu);

template <typename _InputIterator>
array(
    int _E0,
    int _E1,
    int _E2,
    _InputIterator _Src_first,
    _InputIterator _Src_last) restrict(cpu);

template <typename _InputIterator>
array(
    int _E0,
    int _E1,
    int _E2,
    _InputIterator _Src_first) restrict(cpu);

template <typename _InputIterator>
array(
    const Concurrency::extent<_Rank>& _Extent,
    _InputIterator _Src_first,
    _InputIterator _Src_last,
    Concurrency::accelerator_view _Av
    access_type _Cpu_access_type = access_type_auto) restrict(cpu);

template <typename _InputIterator>
array(
    const Concurrency::extent<_Rank>& _Extent,
    _InputIterator _Src_first,
    Concurrency::accelerator_view _Av
    access_type _Cpu_access_type = access_type_auto) restrict(cpu);

template <typename _InputIterator>
array(
    int _E0,
    _InputIterator _Src_first,
    _InputIterator _Src_last,
    Concurrency::accelerator_view _Av
    access_type _Cpu_access_type = access_type_auto) restrict(cpu);

template <typename _InputIterator>
array(
    int _E0,
    _InputIterator _Src_first,
    Concurrency::accelerator_view _Av
    access_type _Cpu_access_type = access_type_auto) restrict(cpu);

template <typename _InputIterator>
array(
    int _E0,
    int _E1,
    _InputIterator _Src_first,
    _InputIterator _Src_last,
    Concurrency::accelerator_view _Av
    access_type _Cpu_access_type = access_type_auto) restrict(cpu);

template <typename _InputIterator>
array(
    int _E0,
    int _E1,
    _InputIterator _Src_first,
    Concurrency::accelerator_view _Av
    access_type _Cpu_access_type = access_type_auto) restrict(cpu);

template <typename _InputIterator>
array(
    int _E0,
    int _E1,
    int _E2,
    _InputIterator _Src_first,
    _InputIterator _Src_last,
    Concurrency::accelerator_view _Av,
    access_type _Cpu_access_type = access_type_auto) restrict(cpu);

template <typename _InputIterator>
array(
    int _E0,
    int _E1,
    int _E2,
    _InputIterator _Src_first,
    Concurrency::accelerator_view _Av
    access_type _Cpu_access_type = access_type_auto) restrict(cpu);

template <typename _InputIterator>
array(
    const Concurrency::extent<_Rank>& _Extent,
    _InputIterator _Src_first,
    _InputIterator _Src_last,
    Concurrency::accelerator_view _Av,
    Concurrency::accelerator_view _Associated_Av) restrict(cpu);

template <typename _InputIterator>
array(
    const Concurrency::extent<_Rank>& _Extent,
    _InputIterator _Src_first,
    Concurrency::accelerator_view _Av,
    Concurrency::accelerator_view _Associated_Av) restrict(cpu);

template <typename _InputIterator>
array(
    int _E0,
    _InputIterator _Src_first,
    _InputIterator _Src_last,
    Concurrency::accelerator_view _Av,
    Concurrency::accelerator_view _Associated_Av) restrict(cpu);

template <typename _InputIterator>
array(
    int _E0, _InputIterator _Src_first,
    Concurrency::accelerator_view _Av,
    Concurrency::accelerator_view _Associated_Av) restrict(cpu);

template <typename _InputIterator>
array(
    int _E0,
    int _E1, _InputIterator _Src_first, _InputIterator _Src_last,
    Concurrency::accelerator_view _Av,
    Concurrency::accelerator_view _Associated_Av) restrict(cpu);

template <typename _InputIterator>
array(
    int _E0,
    int _E1, _InputIterator _Src_first,
    Concurrency::accelerator_view _Av,
    Concurrency::accelerator_view _Associated_Av) restrict(cpu);

template <typename _InputIterator>
array(
    int _E0,
    int _E1,
    int _E2, _InputIterator _Src_first, _InputIterator _Src_last,
    Concurrency::accelerator_view _Av,
    Concurrency::accelerator_view _Associated_Av) restrict(cpu);

template <typename _InputIterator>
array(
    int _E0,
    int _E1,
    int _E2, _InputIterator _Src_first,
    Concurrency::accelerator_view _Av,
    Concurrency::accelerator_view _Associated_Av) restrict(cpu);

explicit array(
    const array_view<const value_type, _Rank>& _Src) restrict(cpu);

array(
    const array_view<const value_type, _Rank>& _Src,
    accelerator_view _Av
    access_type _Cpu_access_type = access_type_auto) restrict(cpu);

array(
    const array_view<const value_type, _Rank>& _Src,
    accelerator_view _Av,
    accelerator_view _Associated_Av) restrict(cpu);

array(const array& _Other) restrict(cpu);

array(array&& _Other) restrict(cpu);

パラメーター

_Associated_Av
配列の優先ターゲットの位置を指定する accelerator_view。

_Av
配列の位置を指定する accelerator_view オブジェクト。

_Cpu_access_type
CPU 上の配列に必要な access_type。 このパラメーターには、CPU の access_type_auto 決定をランタイムに任せる access_type の既定値があります。 配列の実際の CPU access_typeget_cpu_access_type メソッドを使用してクエリを実行できます。

_Extent
配列の各次元の範囲。

_E0
このセクションの範囲の最上位のコンポーネント。

_E1
このセクションの範囲の最上位の次のコンポーネント。

_E2
このセクションの範囲の最下位のコンポーネント。

_InputIterator
入力反復子の型。

_Src
コピーするオブジェクト。

_Src_first
ソース コンテナーへの先頭の反復子。

_Src_last
ソース コンテナーへの終了の反復子。

_Other
その他のデータ ソース。

_Rank
セクションのランク。

value_type
コピーされた要素のデータ型。

associated_accelerator_view

array オブジェクトをインスタンス化するためにステージング コンストラクターが呼び出されたときにパラメーターとして渡される、2 番目の accelerator_view オブジェクトを取得します。

__declspec(property(get= get_associated_accelerator_view)) Concurrency::accelerator_view associated_accelerator_view;

copy_to

array の内容を別の array にコピーします。

void copy_to(
    array<value_type, _Rank>& _Dest) const ;

void copy_to(
    array_view<value_type, _Rank>& _Dest) const ;

パラメーター

_Dest
コピー先の array_view オブジェクト。

cpu_access_type

この配列に許可されている CPU access_type を取得します。

__declspec(property(get= get_cpu_access_type)) access_type cpu_access_type;

データ

array の生データへのポインターを返します。

value_type* data() restrict(amp, cpu);

const value_type* data() const restrict(amp, cpu);

戻り値

配列の生データへのポインター。

extent

array の形状を定義する extent オブジェクトを取得します。

__declspec(property(get= get_extent)) Concurrency::extent<_Rank> extent;

get_accelerator_view

array オブジェクトが割り当てられた位置を表す accelerator_view オブジェクトを返します。 このプロパティは CPU 上でのみアクセスできます。

Concurrency::accelerator_view get_accelerator_view() const;

戻り値

array オブジェクトが割り当てられた位置を表す accelerator_view オブジェクト。

get_associated_accelerator_view

array オブジェクトをインスタンス化するためにステージング コンストラクターが呼び出されたときにパラメーターとして渡される、2 番目の accelerator_view オブジェクトを取得します。

Concurrency::accelerator_view get_associated_accelerator_view() const ;

戻り値

ステージング コンストラクターに渡される 2 番目の accelerator_view オブジェクト。

get_cpu_access_type

この配列に対して許可される CPU access_type を返します。

access_type get_cpu_access_type() const restrict(cpu);

戻り値

get_extent

arrayextent オブジェクトを返します。

Concurrency::extent<_Rank> get_extent() const restrict(amp,cpu);

戻り値

extentarray オブジェクトです。

operator std::vector<value_type>

copy(*this, vector) を使用して、配列を std::vector オブジェクトに暗黙的に変換します。

operator std::vector<value_type>() const restrict(cpu);

パラメーター

value_type
ベクターの要素のデータ型。

戻り値

配列に含まれるデータのコピーを含む型 vector<T> のオブジェクト。

Operator()

パラメーターによって指定された要素の値を返します。

value_type& operator() (const index<_Rank>& _Index) restrict(amp,cpu);

const value_type& operator() (const index<_Rank>& _Index) cons  t restrict(amp,cpu);

value_type& operator() (int _I0, int _I1) restrict(amp,cpu);

const value_type& operator() (int _I0, int _I1) const restrict(amp,cpu)  ;

value_type& operator() (int _I0, int _I1, int _I2) restrict(amp,cpu);

const value_type& operator() (int _I0, int _I1, int _I2) const restrict(amp,cpu);

typename details::_Projection_result_type<value_type,_Rank>::_Result_type operator()(int _I) restrict(amp,cpu);

typename details::_Projection_result_type<value_type,_Rank>::_Const_result_type operator()(int _I) const restrict(amp,cpu);

パラメーター

_Index
要素の場所。

_I0
このセクションの原点の最上位のコンポーネント。

_I1
このセクションの原点の最上位の次のコンポーネント。

_I2
このセクションの原点の最下位のコンポーネント。

_I
要素の場所。

戻り値

パラメーターで指定される要素の値。

operator[]

指定したインデックス位置にある要素を返します。

value_type& operator[](const index<_Rank>& _Index) restrict(amp,cpu);

const value_type& operator[]
    (const index<_Rank>& _Index) const restrict(amp,cpu);

typename details::_Projection_result_type<value_type,_Rank>::_Result_type operator[](int _i) restrict(amp,cpu);

typename details::_Projection_result_type<value_type,_Rank>::_Const_result_type operator[](int _i) const restrict(amp,cpu);

パラメーター

_Index
インデックスです。

_I
インデックスです。

戻り値

指定したインデックス位置にある要素。

operator=

指定された array オブジェクトの内容をコピーします。

array& operator= (const array& _Other) restrict(cpu);

array& operator= (array&& _Other) restrict(cpu);

array& operator= (
    const array_view<const value_type, _Rank>& _Src) restrict(cpu);

パラメーター

_Other
コピー元の array オブジェクト。

_Src
コピー元の array オブジェクト。

戻り値

この array オブジェクトへの参照。

rank

array のランクを格納します。

static const int rank = _Rank;

reinterpret_as

必要に応じてソース配列とは値型が異なる可能性のある 1 次元 array_view を使用して配列を再解釈します。

構文

template <typename _Value_type2>
array_view<_Value_type2,1> reinterpret_as() restrict(amp,cpu);

template <typename _Value_type2>
array_view<const _Value_type2, 1> reinterpret_as() const restrict(amp,cpu);

パラメーター

_Value_type2
返されたデータのデータ型。

戻り値

要素型が T から ElementType に再解釈され、ランクが N から 1 に下げられた配列に基づく array_view または const array_view オブジェクト。

解説

ソース配列とは異なる値型が通常含まれている、線形の、1 次元配列のように、多次元配列を表示すると都合のよい場合があります。 これを実現するには、このメソッドを使用できます。 注意 異なる値型を使用して配列オブジェクトを再解釈することは、安全でない演算である可能性があります。 この機能を慎重に使用することをお勧めします。

コードの例は次のとおりです。

struct RGB { float r; float g; float b; };

array<RGB,3>  a = ...;
array_view<float,1> v = a.reinterpret_as<float>();

assert(v.extent == 3*a.extent);

section

指定された原点にある array オブジェクトのサブセクションを返し、これは必要に応じて範囲が指定されます。

array_view<value_type,_Rank> section(
    const Concurrency::index<_Rank>& _Section_origin,
    const Concurrency::extent<_Rank>& _Section_extent) restrict(amp,cpu);

array_view<const value_type,_Rank> section(
    const Concurrency::index<_Rank>& _Section_origin,
    const Concurrency::extent<_Rank>& _Section_extent) const restrict(amp,cpu);

array_view<value_type,_Rank> section(
    const Concurrency::extent<_Rank>& _Ext) restrict(amp,cpu);

array_view<const value_type,_Rank> section(
    const Concurrency::extent<_Rank>& _Ext) const restrict(amp,cpu);

array_view<value_type,_Rank> section(
    const index<_Rank>& _Idx) restrict(amp,cpu);

array_view<const value_type,_Rank> section(
    const index<_Rank>& _Idx) const restrict(amp,cpu);

array_view<value_type,1> section(
    int _I0,
    int _E0) restrict(amp,cpu);

array_view<const value_type,1> section(
    int _I0,
    int _E0) const restrict(amp,cpu);

array_view<value_type,2> section(
    int _I0,
    int _I1,
    int _E0,
    int _E1) restrict(amp,cpu);

array_view<const value_type,2> section(
    int _I0,
    int _I1,
    int _E0,
    int _E1) const restrict(amp,cpu);

array_view<value_type,3> section(
    int _I0,
    int _I1,
    int _I2,
    int _E0,
    int _E1,
    int _E2) restrict(amp,cpu);

array_view<const value_type,3> section(
    int _I0,
    int _I1,
    int _I2,
    int _E0,
    int _E1,
    int _E2) const restrict(amp,cpu);

パラメーター

_E0
このセクションの範囲の最上位のコンポーネント。

_E1
このセクションの範囲の最上位の次のコンポーネント。

_E2
このセクションの範囲の最下位のコンポーネント。

_Ext
セクションのエクステントを指定する extent オブジェクト。 原点は 0 です。

_Idx
原点の位置を指定する index オブジェクト。 サブセクションは残りの範囲です。

_I0
このセクションの原点の最上位のコンポーネント。

_I1
このセクションの原点の最上位の次のコンポーネント。

_I2
このセクションの原点の最下位のコンポーネント。

_Rank
セクションのランク。

_Section_extent
セクションのエクステントを指定する extent オブジェクト。

_Section_origin
原点の位置を指定する index オブジェクト。

value_type
コピーされた要素のデータ型。

戻り値

指定された原点にある array オブジェクトのサブセクションを返し、これは必要に応じて範囲が指定されます。 index オブジェクトのみを指定すると、サブセクションには index オブジェクトの要素のインデックスより大きなインデックスを持つ関連するグリッドのすべての要素が含まれます。

view_as

異なるランクの array_view として、この配列を再解釈します。

template <int _New_rank>
array_view<value_type,_New_rank> view_as(
    const Concurrency::extent<_New_rank>& _View_extent) restrict(amp,cpu);

template <int _New_rank>
array_view<const value_type,_New_rank> view_as(
    const Concurrency::extent<_New_rank>& _View_extent) const restrict(amp,cpu);

パラメーター

_New_rank
パラメーターとして渡された extent オブジェクトのランク。

_View_extent
新しい array_view オブジェクトを構築するために使用するエクステント。

value_type
元の array オブジェクトと返された array_view オブジェクトの両方にある要素のデータ型。

戻り値

構築される array_view オブジェクト。

関連項目

コンカレンシー名前空間 (C++ AMP)