Bagikan melalui


Kelas array

Mewakili kontainer data yang digunakan untuk memindahkan data ke akselerator.

Sintaks

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

Parameter

value_type
Jenis elemen data.

_Rank
Peringkat array.

Anggota

Konstruktor Publik

Nama Deskripsi
Konstruktor array Menginisialisasi instans baru kelas array.
~array Destructor array Menghancurkan objek.

Metode Publik

Nama Deskripsi
copy_to Menyalin konten array ke array lain.
data Mengembalikan penunjuk ke data mentah array.
get_accelerator_view Mengembalikan objek accelerator_view yang mewakili lokasi tempat array dialokasikan. Properti ini hanya dapat diakses pada CPU.
get_associated_accelerator_view Mendapatkan objek accelerator_view kedua yang diteruskan sebagai parameter ketika konstruktor penahapan dipanggil untuk membuat array instans objek.
get_cpu_access_type Mengembalikan access_type array. Metode ini hanya dapat diakses pada CPU.
get_extent Mengembalikan objek jangkauan array.
reinterpret_as Mengembalikan array satu dimensi yang berisi semua elemen dalam array objek.
bagian Mengembalikan sub bagian dari array objek yang berada di asal yang ditentukan dan, secara opsional, yang memiliki tingkat yang ditentukan.
view_as Mengembalikan objek array_view yang dibangun dari array objek.

Operator Publik

Nama Deskripsi
operator std::vector<value_type> Menggunakan untuk mengonversi array secara implisit copy(*this, vector) menjadi objek std::vector .
operator() Mengembalikan nilai elemen yang ditentukan oleh parameter.
operator[] Mengembalikan elemen yang berada di indeks yang ditentukan.
operator= Menyalin isi objek array yang ditentukan ke dalam objek ini.

Konstanta Publik

Nama Deskripsi
Konstanta peringkat Menyimpan peringkat array.

Anggota Data Publik

Nama Deskripsi
accelerator_view Mendapatkan objek accelerator_view yang mewakili lokasi tempat array dialokasikan. Properti ini hanya dapat diakses pada CPU.
associated_accelerator_view Mendapatkan objek accelerator_view kedua yang diteruskan sebagai parameter ketika konstruktor penahapan dipanggil untuk membuat array instans objek.
cpu_access_type Mendapatkan access_type yang mewakili bagaimana CPU dapat mengakses penyimpanan array.
Sejauh Mendapatkan jangkauan yang menentukan bentuk array.

Keterangan

Jenis array<T,N> mewakili array N-dimensi yang padat dan reguler (tidak berjatuhan) yang terletak di lokasi tertentu, seperti akselerator atau CPU. Jenis data elemen dalam array adalah T, yang harus dari jenis yang kompatibel dengan akselerator target. Meskipun peringkat, N, (dari array ditentukan secara statis dan merupakan bagian dari jenis, tingkat array ditentukan oleh runtime dan dinyatakan dengan menggunakan kelas extent<N>.

Array dapat memiliki sejumlah dimensi, meskipun beberapa fungsionalitas dikhususkan untuk array objek dengan peringkat satu, dua, dan tiga. Jika Anda menghilangkan argumen dimensi, defaultnya adalah 1.

Data array diletakkan secara berdada dalam memori. Elemen yang berbeda satu per satu dalam dimensi yang paling tidak signifikan berdekatan dalam memori.

Array secara logis dianggap sebagai jenis nilai, karena ketika array disalin ke array lain, salinan mendalam dilakukan. Dua array tidak pernah menunjuk ke data yang sama.

array<T,N> Jenis ini digunakan dalam beberapa skenario:

  • Sebagai kontainer data yang dapat digunakan dalam komputasi pada akselerator.

  • Sebagai kontainer data untuk menyimpan memori pada CPU host (yang dapat digunakan untuk menyalin ke dan dari array lain).

  • Sebagai objek penahapan untuk bertindak sebagai perantara cepat dalam salinan host-ke-perangkat.

Hierarki Warisan

array

Persyaratan

Header: amp.h

Namespace: Konkurensi

~Array

array Menghancurkan objek.

~array() restrict(cpu);

accelerator_view

Mendapatkan objek accelerator_view yang mewakili lokasi tempat array dialokasikan. Properti ini hanya dapat diakses pada CPU.

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

array

Menginisialisasi instans baru kelas array. Tidak ada konstruktor default untuk array<T,N>. Semua konstruktor hanya dijalankan pada CPU. Mereka tidak dapat dieksekusi pada target 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);

Parameter

_Associated_Av
accelerator_view yang menentukan lokasi target array pilihan.

_Av
Objek accelerator_view yang menentukan lokasi array.

_Cpu_access_type
access_type yang diinginkan untuk array pada CPU. Parameter ini memiliki nilai access_type_auto default meninggalkan penentuan CPU access_type ke runtime. CPU access_type aktual untuk array dapat dikueri menggunakan get_cpu_access_type metode .

_Sejauh
Sejauh mana dalam setiap dimensi array.

_E0
Komponen paling signifikan dari luasnya bagian ini.

_E1
Komponen berikutnya yang paling signifikan dari tingkat bagian ini.

_E2
Komponen paling tidak signifikan dari tingkat bagian ini.

_InputIterator
Jenis iterator input.

_Src
Untuk objek yang akan disalin.

_Src_first
Iterator awal ke dalam kontainer sumber.

_Src_last
Iterator akhir ke dalam kontainer sumber.

_Other
Sumber data lainnya.

_Rank
Peringkat bagian .

value_type
Jenis data elemen yang disalin.

associated_accelerator_view

Mendapatkan objek accelerator_view kedua yang diteruskan sebagai parameter ketika konstruktor penahapan dipanggil untuk membuat array instans objek.

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

copy_to

Menyalin konten ke konten lainnya array array.

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

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

Parameter

_Dest
Objek array_view untuk disalin.

cpu_access_type

Mendapatkan access_type CPU yang diizinkan untuk array ini.

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

data

Mengembalikan penunjuk ke data mentah .array

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

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

Tampilkan Nilai

Penunjuk ke data mentah array.

Sejauh

Mendapatkan objek tingkat yang mendefinisikan bentuk array.

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

get_accelerator_view

Mengembalikan objek accelerator_view yang mewakili lokasi tempat array objek dialokasikan. Properti ini hanya dapat diakses pada CPU.

Concurrency::accelerator_view get_accelerator_view() const;

Tampilkan Nilai

Objek accelerator_view yang mewakili lokasi tempat array objek dialokasikan.

get_associated_accelerator_view

Mendapatkan objek accelerator_view kedua yang diteruskan sebagai parameter ketika konstruktor penahapan dipanggil untuk membuat array instans objek.

Concurrency::accelerator_view get_associated_accelerator_view() const ;

Tampilkan Nilai

Objek accelerator_view kedua diteruskan ke konstruktor penahapan.

get_cpu_access_type

Mengembalikan access_type CPU yang diizinkan untuk array ini.

access_type get_cpu_access_type() const restrict(cpu);

Tampilkan Nilai

get_extent

Mengembalikan objek tingkat dari array.

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

Tampilkan Nilai

Objek extent dari array.

operator std::vector<value_type>

Menggunakan untuk mengonversi array secara implisit copy(*this, vector) menjadi objek std::vector.

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

Parameter

value_type
Jenis data elemen vektor.

Tampilkan Nilai

Objek jenis vector<T> yang berisi salinan data yang terkandung dalam array.

operator()

Mengembalikan nilai elemen yang ditentukan oleh parameter.

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

Parameter

_Index
Lokasi elemen .

_I0
Komponen paling signifikan dari asal bagian ini.

_I1
Komponen berikutnya yang paling signifikan dari asal bagian ini.

_I2
Komponen paling tidak signifikan dari asal bagian ini.

_I
Lokasi elemen .

Tampilkan Nilai

Nilai elemen yang ditentukan oleh parameter.

operator[]

Mengembalikan elemen yang berada di indeks yang ditentukan.

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

Parameter

_Index
Indeks.

_I
Indeks.

Tampilkan Nilai

Elemen yang berada di indeks yang ditentukan.

operator=

Menyalin isi objek yang ditentukan 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);

Parameter

_Other
Objek array yang akan disalin.

_Src
Objek array yang akan disalin.

Tampilkan Nilai

Referensi ke objek ini array .

rank

Menyimpan peringkat array.

static const int rank = _Rank;

reinterpret_as

Menginterpretasikan ulang array melalui array_view satu dimensi, yang secara opsional mungkin memiliki jenis nilai yang berbeda dari array sumber.

Sintaks

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

Parameter

_Value_type2
Jenis data dari data yang dikembalikan.

Tampilkan Nilai

Objek array_view atau const array_view yang didasarkan pada array, dengan jenis elemen diinterpretasikan ulang dari T ke ElementType dan peringkat berkurang dari N ke 1.

Keterangan

Terkadang lebih mudah untuk melihat array multi-dimensi seolah-olah itu adalah array linier satu dimensi, mungkin dengan jenis nilai yang berbeda dari array sumber. Anda dapat menggunakan metode ini untuk mencapai hal ini. Perhatian Menginterpretasikan ulang objek array dengan menggunakan jenis nilai yang berbeda adalah operasi yang berpotensi tidak aman. Kami menyarankan agar Anda menggunakan fungsionalitas ini dengan hati-hati.

Kode berikut memberikan contoh.

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

bagian

Mengembalikan sub bagian dari array objek yang berada di asal yang ditentukan dan, secara opsional, yang memiliki tingkat yang ditentukan.

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

Parameter

_E0
Komponen paling signifikan dari luasnya bagian ini.

_E1
Komponen berikutnya yang paling signifikan dari tingkat bagian ini.

_E2
Komponen paling tidak signifikan dari tingkat bagian ini.

_Ext
Objek jangkauan yang menentukan luasnya bagian. Asalnya adalah 0.

_Idx
Objek indeks yang menentukan lokasi asal. Sub bagian adalah sisa dari jangkauan.

_I0
Komponen paling signifikan dari asal bagian ini.

_I1
Komponen berikutnya yang paling signifikan dari asal bagian ini.

_I2
Komponen paling tidak signifikan dari asal bagian ini.

_Rank
Peringkat bagian .

_Section_extent
Objek jangkauan yang menentukan luasnya bagian.

_Section_origin
Objek indeks yang menentukan lokasi asal.

value_type
Jenis data elemen yang disalin.

Tampilkan Nilai

Mengembalikan sub bagian dari array objek yang berada di asal yang ditentukan dan, secara opsional, yang memiliki tingkat yang ditentukan. Ketika hanya index objek yang ditentukan, sub bagian berisi semua elemen dalam kisi terkait yang memiliki indeks yang lebih besar dari indeks elemen dalam index objek.

view_as

Menginterpretasikan ulang array ini sebagai array_view dari peringkat yang berbeda.

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

Parameter

_New_rank
Peringkat objek yang extent diteruskan sebagai parameter.

_View_extent
Jangkauan yang digunakan untuk membangun objek array_view baru.

value_type
Jenis data elemen di objek asli array dan objek yang dikembalikan array_view .

Tampilkan Nilai

Objek array_view yang dibangun.

Lihat juga

Namespace Konkurensi (C++ AMP)