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

tipe_nilai
Jenis elemen data.

_Pangkat
Peringkat array.

Anggota

Konstruktor Publik

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

Metode Publik

Nama Deskripsi
copy_to Menyalin isi array ke array lain.
data Mengembalikan penunjuk ke data mentah pada 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 staging dipanggil untuk membuat objek array instans.
get_cpu_access_type (mendapatkan jenis akses CPU) Mengembalikan tipe akses dari access_type array. Metode ini hanya dapat diakses pada CPU.
get_extent Mengembalikan objek dimensi dari array.
reinterpret_as Mengembalikan array satu dimensi yang berisi semua elemen dalam array objek.
bagian Mengembalikan subbagian dari objek array yang berada pada asal yang ditentukan dan, secara opsional, memiliki ukuran yang ditentukan.
lihat_sebagai 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 Umum

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 staging dipanggil untuk membuat objek array instans.
cpu_access_type Mendapatkan access_type yang mewakili bagaimana CPU dapat mengakses penyimpanan array.
Cakupan Mendapatkan cakupan yang menentukan bentuk array.

Keterangan

Jenis array<T,N> mewakili array N-dimensi yang padat dan reguler (tidak terpecah-pecah) 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 dimensi, N, dari array ditentukan secara statis dan merupakan bagian dari tipe, ukuran 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 berdampingan 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 sementara untuk bertindak sebagai perantara cepat dalam penyalinan dari host ke perangkat.

Hierarki Pewarisan

array

Persyaratan

Header : amp.h

Namespace: Konkurensi

~array

array Menghancurkan objek.

~array() restrict(cpu);

tampilan akselerator

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 instance baru dari 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
Tipe akses yang diinginkan untuk array pada CPU. Parameter ini memiliki nilai default access_type_auto, menyerahkan penentuan CPU access_type kepada runtime. CPU access_type aktual untuk array dapat dikueri menggunakan get_cpu_access_type metode .

_Sejauh
Ukuran dalam setiap dimensi array.

_E0
Komponen paling signifikan dari luasnya bagian ini.

_E1
Komponen paling signifikan kedua dari rentang bagian ini.

_E2
Komponen paling tidak signifikan dari jangkauan bagian ini.

_InputIterator
Jenis dari iterator input.

_Src
Menolak penggandaan.

_Src_first
Iterator awal pada kontainer sumber.

_Src_last
Iterator yang berakhir pada kontainer sumber.

_Lain
Sumber data lainnya.

_Pangkat
Peringkat dari bagian tersebut.

tipe_nilai
Jenis data elemen yang disalin.

tampilan_percepatan_terkait

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

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

salin_ke

Menyalin isi dari array ke array yang lain.

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.

jenis_akses_cpu

Mendapatkan jenis akses prosesor yang diizinkan untuk array ini.

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

data

Mengembalikan pointer 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 luas yang mendefinisikan bentuk array.

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

dapatkan_tampilan_akselerator

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.

dapatkan_tampilan_akselerator_terkait

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

Concurrency::accelerator_view get_associated_accelerator_view() const ;

Tampilkan Nilai

Objek accelerator_view kedua diteruskan ke konstruktor penahapan.

get_cpu_access_type (mendapatkan_tipe_akses_cpu)

Mengembalikan access_type CPU yang diizinkan untuk array ini.

access_type get_cpu_access_type() const restrict(cpu);

Tampilkan Nilai

dapatkan_cakupan

Mengembalikan objek cakupan dari array.

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

Tampilkan Nilai

Objek extent dari array.

operator std::vector<value_type>

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

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

Parameter

tipe_nilai
Jenis data dari elemen-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

_Indeks
Lokasi elemen .

_I0
Komponen paling signifikan dari asal usul bagian ini.

_I1
Komponen kedua paling signifikan dari asal bagian ini.

_I2
Komponen paling tidak signifikan dari asal bagian ini.

_Saya
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

_Indeks
Indeks.

_Saya
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

_Lain
Objek array yang akan disalin.

_Src
Objek array yang akan disalin.

Tampilkan Nilai

Referensi ke objek ini array .

pangkat

Menyimpan peringkat array.

static const int rank = _Rank;

reinterpretasikan_sebagai

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 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 subbagian dari objek array yang berada pada asal yang ditentukan dan, secara opsional, memiliki ukuran 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 paling signifikan kedua dari rentang bagian ini.

_E2
Komponen paling tidak signifikan dari jangkauan bagian ini.

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

_Idx
Objek indeks yang menentukan lokasi asal. Subbagian adalah bagian tersisa dari ruang lingkup.

_I0
Komponen paling signifikan dari asal usul bagian ini.

_I1
Komponen kedua paling signifikan dari asal bagian ini.

_I2
Komponen paling tidak signifikan dari asal bagian ini.

_Pangkat
Peringkat dari bagian tersebut.

_Section_extent
Objek jangkauan yang menentukan luasnya bagian.

_Section_origin
Objek indeks yang menentukan lokasi asal.

tipe_nilai
Jenis data elemen yang disalin.

Tampilkan Nilai

Mengembalikan subbagian dari objek array yang berada pada asal yang ditentukan dan, secara opsional, memiliki ukuran yang ditentukan. Ketika hanya objek index yang ditentukan, subbagian berisi semua elemen dalam kisi terkait yang memiliki indeks lebih besar dari indeks elemen dalam objek index.

lihat_sebagai

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
Tingkat dari objek yang extent diterima sebagai parameter.

_View_extent
Jangkauan yang digunakan untuk membangun objek array_view baru.

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