Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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.