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.