다음을 통해 공유


array 클래스

데이터를 가속기로 이동하는 데 사용되는 데이터 컨테이너를 나타냅니다.

구문

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

매개 변수

value_type
데이터의 요소 형식입니다.

_Rank
배열의 순위입니다.

멤버

공용 생성자

속성 설명
array 생성자 array 클래스의 새 인스턴스를 초기화합니다.
~array 소멸자 개체를 array 삭제합니다.

공용 메서드

이름 설명
copy_to 배열의 내용을 다른 배열에 복사합니다.
data 배열의 원시 데이터에 대한 포인터를 반환합니다.
get_accelerator_view 배열이 할당된 위치를 나타내는 accelerator_view 개체를 반환합니다. 이 속성은 CPU에서만 액세스할 수 있습니다.
get_associated_accelerator_view 개체를 인스턴스화하기 위해 스테이징 생성자를 호출할 때 매개 변수로 전달되는 두 번째 accelerator_view 개체를 array 가져옵니다.
get_cpu_access_type 배열의 access_type 반환합니다. 이 메서드는 CPU에서만 액세스할 수 있습니다.
get_extent 배열의 익스텐트 개체를 반환합니다.
reinterpret_as 개체의 모든 요소를 포함하는 1차원 배열을 array 반환합니다.
section 지정된 원점 및 필요에 따라 지정된 익스텐트를 가진 개체의 array 하위 섹션을 반환합니다.
view_as 개체에서 생성된 array_view 개체를 array 반환합니다.

Public 연산자

속성 설명
operator std::vector<value_type> 배열을 std::vector 개체로 암시적으로 변환하는 데 사용됩니다copy(*this, vector).
operator() 매개 변수로 지정된 요소 값을 반환합니다.
operator[] 지정된 인덱스에있는 요소를 반환합니다.
operator= 지정된 array 개체의 콘텐츠를 이 항목으로 복사합니다.

공용 상수

속성 설명
rank 상수 배열의 순위를 저장합니다.

공용 데이터 멤버

속성 설명
accelerator_view 배열이 할당된 위치를 나타내는 accelerator_view 개체를 가져옵니다. 이 속성은 CPU에서만 액세스할 수 있습니다.
associated_accelerator_view 개체를 인스턴스화하기 위해 스테이징 생성자를 호출할 때 매개 변수로 전달되는 두 번째 accelerator_view 개체를 array 가져옵니다.
cpu_access_type CPU가 배열의 스토리지에 액세스하는 방법을 나타내는 access_type 가져옵니다.
extent 배열의 모양을 정의하는 익스텐션을 가져옵니다.

설명

이 형식 array<T,N> 은 액셀러레이터 또는 CPU와 같은 특정 위치에 있는 조밀하고 일반적인(들쭉날쭉하지 않은) N차원 배열을 나타냅니다. 배열에 있는 요소의 데이터 형식은 T대상 가속기와 호환되는 형식이어야 합니다. 배열의 rank( N배열은 정적으로 결정되고 형식의 일부임)이지만 배열의 범위는 런타임에 의해 결정되며 클래스 extent<N>를 사용하여 표현됩니다.

일부 기능은 순위 1, 2 및 3이 있는 개체용 array 으로 특수화되어 있지만 배열에는 차원이 있을 수 있습니다. 차원 인수를 생략하면 기본값은 1입니다.

배열 데이터는 메모리에 연속적으로 배치됩니다. 중요도가 가장 낮은 차원의 요소가 메모리에 인접합니다.

배열이 다른 배열에 복사될 때 전체 복사가 수행되므로 배열은 논리적으로 값 형식으로 간주됩니다. 두 배열은 동일한 데이터를 가리키지 않습니다.

array<T,N> 형식은 다음과 같은 여러 시나리오에서 사용됩니다.

  • 가속기에서 계산에 사용할 수 있는 데이터 컨테이너입니다.

  • 호스트 CPU에 메모리를 보관하는 데이터 컨테이너로서 다른 배열과 복사하는 데 사용할 수 있습니다.

  • 호스트-디바이스 복사본에서 빠른 중간자 역할을 하는 스테이징 개체입니다.

상속 계층 구조

array

요구 사항

헤더: amp.h

네임스페이스: 동시성

~배열

개체를 array 삭제합니다.

~array() restrict(cpu);

accelerator_view

배열이 할당된 위치를 나타내는 accelerator_view 개체를 가져옵니다. 이 속성은 CPU에서만 액세스할 수 있습니다.

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

배열

배열 클래스의 새 인스턴스를 초기화합니다. 에 대한 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 결정을 런타임에 그대로 두는 기본값 access_type_auto 을 둡니다. 배열의 실제 CPU access_type 는 메서드를 사용하여 get_cpu_access_type 쿼리할 수 있습니다.

_범위
배열의 각 차원에 있는 익스텐트입니다.

_E0
이 섹션의 범위에서 가장 중요한 구성 요소입니다.

_E1
이 섹션의 범위에서 가장 중요한 다음 구성 요소입니다.

_E2
이 섹션의 익스텐트 중 가장 중요하지 않은 구성 요소입니다.

_InputIterator
입력 반복기의 형식입니다.

_Src
복사할 개체입니다.

_Src_first
원본 컨테이너에 대한 시작 반복기입니다.

_Src_last
원본 컨테이너로의 끝 반복기입니다.

_Other
기타 데이터 원본입니다.

_Rank
섹션의 순위입니다.

value_type
복사되는 요소의 데이터 형식입니다.

associated_accelerator_view

개체를 인스턴스화하기 위해 스테이징 생성자를 호출할 때 매개 변수로 전달되는 두 번째 accelerator_view 개체를 array 가져옵니다.

__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);

Return Value

배열의 원시 데이터에 대한 포인터입니다.

extent

모양을 정의하는 익 스텐트 개체를 array가져옵니다.

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

get_accelerator_view

개체가 할당된 위치를 나타내는 accelerator_view 개체를 array 반환합니다. 이 속성은 CPU에서만 액세스할 수 있습니다.

Concurrency::accelerator_view get_accelerator_view() const;

Return Value

accelerator_view 개체가 할당된 array 위치를 나타내는 개체입니다.

get_associated_accelerator_view

개체를 인스턴스화하기 위해 스테이징 생성자를 호출할 때 매개 변수로 전달되는 두 번째 accelerator_view 개체를 array 가져옵니다.

Concurrency::accelerator_view get_associated_accelerator_view() const ;

Return Value

스테이징 생성자에 전달된 두 번째 accelerator_view 개체입니다.

get_cpu_access_type

이 배열에 허용되는 CPU access_type 반환합니다.

access_type get_cpu_access_type() const restrict(cpu);

Return Value

get_extent

익스텐 트 개체를 반환합니다 array.

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

Return Value

extent 의 개체입니다array.

operator std::vector<value_type>

배열을 std::vector 개체로 암시적으로 변환하는 데 사용됩니다 copy(*this, vector) .

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

매개 변수

value_type
벡터 요소의 데이터 형식입니다.

Return Value

배열에 포함된 데이터의 복사본을 포함하는 형식 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
요소의 위치입니다.

Return Value

매개 변수로 지정된 요소 값입니다.

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
인덱스입니다.

Return Value

지정된 인덱스에있는 요소입니다.

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 복사할 개체입니다.

Return Value

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
반환된 데이터의 데이터 형식입니다.

Return Value

배열을 기반으로 하는 array_view 또는 const array_view 개체이며, 요소 형식이 T에서 ElementType으로 재해석되고 순위가 N에서 1로 줄어듭니다.

설명

경우에 따라 원본 배열과 다른 값 형식을 가진 선형 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
이 섹션의 익스텐트 중 가장 중요하지 않은 구성 요소입니다.

_내선
구역의 익스텐트 범위를 지정하는 익스텐트 개체입니다. 원본은 0입니다.

_Idx
원본의 위치를 지정하는 인덱스 개체입니다. 하위 섹션은 나머지 범위입니다.

_I0
이 섹션의 원점에서 가장 중요한 구성 요소입니다.

_I1
이 섹션의 원점에서 가장 중요한 다음 구성 요소입니다.

_I2
이 섹션의 원점 중 가장 중요하지 않은 구성 요소입니다.

_Rank
섹션의 순위입니다.

_Section_extent
구역의 익스텐트 범위를 지정하는 익스텐트 개체입니다.

_Section_origin
원본의 위치를 지정하는 인덱스 개체입니다.

value_type
복사되는 요소의 데이터 형식입니다.

Return Value

지정된 원점 및 필요에 따라 지정된 익스텐트를 가진 개체의 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 된 개체 모두에 있는 요소의 데이터 형식입니다.

Return Value

생성되는 array_view 개체입니다.

참고 항목

Concurrency 네임스페이스(C++ AMP)