Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Başka bir kapsayıcıda tutulan veriler üzerinde N boyutlu bir görünümü temsil eder.
Sözdizimi
template <
typename value_type,
int _Rank = 1
>
class array_view : public _Array_view_base<_Rank, sizeof(value_type)/sizeof(int)>;
template <
typename value_type,
int _Rank
>
class array_view<const value_type, _Rank> : public _Array_view_base<_Rank, sizeof(value_type)/sizeof(int)>;
Parametreler
value_type
Nesnedeki array_view öğelerin veri türü.
_Rütbe
Nesnenin array_view sırası.
Members
Ortak Oluşturucular
| İsim | Açıklama |
|---|---|
| array_view Oluşturucu |
array_view sınıfının yeni bir örneğini başlatır. için array<T,N>varsayılan oluşturucu yoktur. Tüm oluşturucular yalnızca CPU üzerinde çalışacak şekilde kısıtlanır ve Direct3D hedefinde yürütülemez. |
| ~array_view Yıkıcı Fonksiyon |
array_view nesnesini yok eder. |
Genel Yöntemler
| İsim | Açıklama |
|---|---|
| copy_to | Belirtilen hedefe, array_view nesnesinin içeriğini, copy(*this, dest) öğesini çağırarak kopyalar. |
| data | ham verilerine array_viewbir işaretçi döndürür. |
| veriyi_yok_say | Bu görünümü temel alan geçerli verileri atar. |
| get_extent | array_view nesnesinin extent nesnesini döndürür. |
| get_ref | Dizine alınan öğeye bir başvuru döndürür. |
| kaynak_hızlandırıcı_görünümü_al |
accelerator_view'u, array_view veri kaynağının bulunduğu yeri döndüren. |
| yenilemek |
array_view nesnesine, bağlı belleğinin array_view arabiriminin dışında değiştirildiğini bildirir. Bu yönteme yapılan bir çağrı, önbelleğe alınan tüm bilgileri eski olarak işler. |
| reinterpret_as | Nesnedeki array_view tüm öğeleri içeren tek boyutlu bir dizi döndürür. |
| bölüm | Belirtilen başlangıç noktasında ve isteğe bağlı olarak belirtilen boyuta sahip olan array_view nesnesinin bir alt bölümünü döndürür. |
| synchronize | Nesnede array_view yapılan değişiklikleri kaynak verilerine geri eşitler. |
| synchronize_async | Nesnede yapılan array_view değişiklikleri zaman uyumsuz şekilde kaynak verileriyle senkronize eder. |
| synchronize_to | Belirtilen array_view ile nesnesine yapılan tüm değişiklikleri senkronize eder. |
| synchronize_to_async | Nesnede yapılan array_view değişiklikleri, belirtilen accelerator_view ile zaman uyumsuz modda senkronize eder. |
| olarak_görüntüle |
array_view Bu array_view nesnenin verilerini kullanarak farklı bir dereceye sahip bir nesne üretir. |
Ortak İşleçler
| İsim | Açıklama |
|---|---|
| operator() | parametresi veya parametreleri tarafından belirtilen öğenin değerini döndürür. |
| operator[] | Parametreler tarafından belirtilen öğesini döndürür. |
| operator= | Belirtilen array_view nesnenin içeriğini bu nesneye kopyalar. |
Genel Sabitler
| İsim | Açıklama |
|---|---|
| rank Sabit |
array_view nesnesinin derecesini depolar. |
Veri Üyeleri
| İsim | Açıklama |
|---|---|
| kapsam |
extent nesnesinin şeklini tanımlayan array_view nesnesini alır. |
| source_accelerator_view |
veri kaynağının bulunduğu array_view öğesini alır |
| value_type |
array_view ve ilişkili dizinin değer türü. |
Açıklamalar
sınıfı, array_view bir dizi nesnesinde veya bir nesnenin alt bölümünde array yer alan verilerin görünümünü temsil eder.
Kaynak verilerin bulunduğu nesneye array_view (yerel olarak) veya farklı bir hızlandırıcıda veya bir tutarlılık etki alanında (uzaktan) erişebilirsiniz. Nesneye uzaktan eriştiğiniz zaman, görünümler kopyalanır ve gerektiğinde önbelleğe alınır. Otomatik önbelleğe almanın etkileri dışında, array_view nesneler array nesnelerinkine benzer bir performans profiline sahiptir. Verilere görünümler aracılığıyla erişirken hafif bir performans kaybı vardır.
Üç uzaktan kullanım senaryosu vardır:
Sistem bellek işaretçisine yönelik bir görünüm, bir parallel_for_each çağrısı yoluyla hızlandırıcıya geçirilir ve hızlandırıcıda erişilir.
Hızlandırıcıda bulunan bir diziye ait görüntü, bir
parallel_for_eachçağrısı aracılığıyla başka bir hızlandırıcıya iletilir ve orada erişilir.Bir hızlandırıcıda bulunan bir dizinin görünümüne CPU'da erişilir.
Bu senaryolardan herhangi birinde, atıfta bulunulan görünümler, çalışma zamanı esnasında uzak konuma kopyalanır ve array_view nesnesine yapılan çağrılar onları değiştirdiğinde, yerel konuma geri kopyalanır. Çalışma zamanı değişiklikleri geri kopyalama işlemini iyileştirir, yalnızca değiştirilen öğeleri kopyalayabilir veya değişmemiş bölümleri de kopyalayabilir. Bir veri kaynağındaki çakışan array_view nesnelerin uzak bir konumda bilgi tutarlılığını koruması garanti değildir.
Aynı veri kaynağına çok iş parçacıklı erişimi eşitlemeniz gerekir.
Çalışma zamanı, array_view nesnelerindeki verilerin önbelleğe alınmasıyla ilgili aşağıdaki garantileri sağlar:
Program akışına göre bir
arraynesnesine ve onun üzerindeki birarray_viewnesnesine tüm iyi senkronize edilmiş erişimler, seri bir şekilde gerçekleşmeden önce ilişkiyi takip eder.Tek bir
array_viewnesne üzerindeki aynı hızlandırıcıda çakışanarraynesnelere yapılan iyi senkronize edilmiş tüm erişimler,arraynesnesi aracılığıyla diğer adla ilişkilendirilir. Program düzenine uyan bir toplam gerçekleşmeden önce ilişki oluşturur. Önbelleğe alma işlemi yoktur.array_viewNesneler farklı hızlandırıcılarda yürütülüyorsa erişim sırası tanımlanmamıştır ve bir yarış durumu oluşturulur.
Sistem belleğinde işaretçi kullanarak bir array_view nesne oluşturduğunuzda, görünüm array_view nesnesini yalnızca işaretçi aracılığıyla array_view değiştirmeniz gerekir. Alternatif olarak, temel alınan yerel bellek, refresh() nesnesi yerine doğrudan değiştirilirse, sistem işaretçisine bağlı nesnelerden birini array_view üzerinde array_view çağırmanız gerekir.
Her iki eylem de nesneye array_view temel alınan yerel belleğin değiştirildiğini ve hızlandırıcıda bulunan tüm kopyaların güncel olmadığını bildirir. Bu yönergeleri izlerseniz, işaretçi tabanlı görünümler, veri paralel dizilerinin görünümlerinde sağlanan görünümlerle aynıdır.
Devralma Hiyerarşisi
_Array_view_shape
_Array_view_base
array_view
Gereksinimler
Üst Bilgisi: amp.h
Ad Alanı: Eşzamanlılık
~array_view
array_view nesnesini yok eder.
~array_view()restrict(amp,cpu);
Dizi_görünümü
array_view sınıfının yeni bir örneğini başlatır.
array_view(
array<value_type, _Rank>& _Src)restrict(amp,cpu);
array_view(
const array_view& _Other)restrict(amp,cpu);
explicit array_view(
const Concurrency::extent<_Rank>& _Extent) restrict(cpu);
template <
typename _Container
>
array_view(
const Concurrency::extent<_Rank>& _Extent,
_Container& _Src) restrict(cpu);
array_view(
const Concurrency::extent<_Rank>& _Extent,
value_type* _Src)restrict(amp,cpu);
explicit array_view(
int _E0) restrict(cpu);
template <
typename _Container
>
explicit array_view(
_Container& _Src,
typename std::enable_if<details::_Is_container<_Container>::type::value, void **>::type = 0) restrict(cpu);
template <
typename _Container
>
explicit array_view(
int _E0,
_Container& _Src) restrict(cpu);
explicit array_view(
int _E0,
int _E1) __CPU_ONLY;
template <
typename _Container
>
explicit array_view(
int _E0,
int _E1,
_Container& _Src) restrict(cpu);
explicit array_view(
int _E0,
int _E1,
int _E2) __CPU_ONLY;
template <
typename _Container
>
explicit array_view(
int _E0,
int _E1,
int _E2,
_Container& _Src);
explicit array_view(
int _E0,
_In_ value_type* _Src)restrict(amp,cpu);
template <
typename _Arr_type,
int _Size
>
explicit array_view(
_In_ _Arr_type (& _Src) [_Size]) restrict(amp,cpu);
explicit array_view(
int _E0,
int _E1,
_In_ value_type* _Src)restrict(amp,cpu);
explicit array_view(
int _E0,
int _E1,
int _E2,
_In_ value_type* _Src)restrict(amp,cpu);
array_view(
const array<value_type, _Rank>& _Src)restrict(amp,cpu);
array_view(
const array_view<value_type, _Rank>& _Src)restrict(amp,cpu);
array_view(
const array_view<const value_type, _Rank>& _Src)restrict(amp,cpu);
template <
typename _Container
>
array_view(
const Concurrency::extent<_Rank>& _Extent,
const _Container& _Src) restrict(cpu);
template <
typename _Container
>
explicit array_view(
const _Container& _Src,
typename std::enable_if<details::_Is_container<_Container>::type::value, void **>::type = 0) restrict(cpu);
array_view(
const Concurrency::extent<_Rank>& _Extent,
const value_type* _Src)restrict(amp,cpu);
template <
typename _Arr_type,
int _Size
>
explicit array_view(
const _In_ _Arr_type (& _Src) [_Size]) restrict(amp,cpu);
template <
typename _Container
>
array_view(
int _E0,
const _Container& _Src);
template <
typename _Container
>
array_view(
int _E0,
int _E1,
const _Container& _Src);
template <
typename _Container
>
array_view(
int _E0,
int _E1,
int _E2,
const _Container& _Src);
array_view(
int _E0,
const value_type* _Src)restrict(amp,cpu);
array_view(
int _E0,
int _E1,
const value_type* _Src) restrict(amp,cpu);
array_view(
int _E0,
int _E1,
int _E2,
const value_type* _Src) restrict(amp,cpu);
Parametreler
_Arr_type
Verilerin sağlandığı C stili bir dizinin öğe türü.
_Konteyner
Bir şablon bağımsız değişkeni, data() ve size() üyelerini destekleyen doğrusal bir kapsayıcıyı belirtmelidir.
_E0
Bu bölümün kapsamının en önemli bileşeni.
_E1
Bu bölümün kapsamının bir sonraki en önemli bileşeni.
_E2
Bu bölümün kapsamının en az önemli bileşeni.
_Kapsam
Bu array_view'nin her boyuttaki genişliği.
_Diğer
Yeni array_view<T,N>'i başlatmak için kullanılan array_view türünde bir nesne.
_Boyut
Verilerin sağlandığı C stili bir dizinin boyutu.
_Src
Yeni diziye kopyalanacak kaynak verilere ilişkin bir işaretçi.
copy_to
Belirtilen hedef nesneye array_view nesnesinin içeriğini copy(*this, dest) öğesini çağırarak kopyalar.
void copy_to(
array<value_type, _Rank>& _Dest) const;
void copy_to(
array_view<value_type, _Rank>& _Dest) const;
Parametreler
_Dest
Kopyalanacak nesne.
veriler
ham verilerine array_viewbir işaretçi döndürür.
value_type* data() const restrict(amp,
cpu);
const value_type* data() const restrict(amp,
cpu);
Dönüş Değeri
array_view'nin ham verilerine işaretçi.
discard_data
Bu görünümü temel alan geçerli verileri atar. Bu, görünümün geçerli içeriğini erişilen bir hedefe accelerator_view kopyalamaktan kaçınmak için kullanılan çalışma zamanına yönelik bir iyileştirme ipucudur ve mevcut içerik gerekli değilse kullanılması önerilir. Bu yöntem, restrict(amp) bağlamında kullanıldığında işlemsizdir.
void discard_data() const restrict(cpu);
kapsam
extent nesnesinin şeklini tanımlayan array_view nesnesini alır.
__declspec(property(get= get_extent)) Concurrency::extent<_Rank> extent;
get_extent
nesnesinin array_view nesnesini döndürür.
Concurrency::extent<_Rank> get_extent() const restrict(cpu, amp);
Dönüş Değeri
extent Nesnesinin array_view Nesnesi
get_ref
Dizine _Index tarafından alınmış öğeye bir referans alın. CPU'daki array_view'e erişim için kullanılan diğer dizin operatörlerinden farklı olarak, bu yöntem bu array_view'in içeriğini kendiliğinden CPU ile senkronize etmez. Uzak bir konumda array_view'e erişildikten sonra veya bu array_view'i içeren bir kopyalama işlemi gerçekleştirdikten sonra, kullanıcılar bu yöntemi kullanmadan önce array_view'i açıkça CPU ile eşitlemekten sorumludur. Bunun yapılmaması tanımlanmamış davranışla sonuçlanır.
value_type& get_ref(
const index<_Rank>& _Index) const restrict(amp, cpu);
Parametreler
_Dizin
Dizin.
Dönüş Değeri
_Index tarafından dizine alınan öğeye başvuru
kaynak_hızlandırıcı_görünümünü_al
array_view veri kaynağının bulunduğu accelerator_view döndürür. array_view bir veri kaynağı yoksa, bu API bir runtime_exception oluşturur
accelerator_view get_source_accelerator_view() const;
Dönüş Değeri
operator()
parametresi veya parametreleri tarafından belirtilen öğenin değerini döndürür.
value_type& operator() (
const index<_Rank>& _Index) const restrict(amp,cpu);
typename details::_Projection_result_type<value_type,_Rank>::_Result_type operator() (
int _I) const restrict(amp,cpu);
value_type& operator() (
int _I0,
int _I1) const restrict(amp,cpu);
value_type& operator() (
int _I0,
int _I1,
int _I2) const restrict(amp,cpu);
typename details::_Projection_result_type<value_type,_Rank>::_Const_result_type operator() (
int _I) const restrict(amp,cpu);
Parametreler
_Dizin
öğesinin konumu.
_I0
İlk boyuttaki dizin.
_I1
İkinci boyuttaki dizin.
_I2
Üçüncü boyuttaki dizin.
_Ben
öğesinin konumu.
Dönüş Değeri
parametresi veya parametreleri tarafından belirtilen öğenin değeri.
operatör[]
Parametreler tarafından belirtilen öğesini döndürür.
typename details::_Projection_result_type<value_type,_Rank>::_Const_result_type operator[] (
int _I) const restrict(amp,cpu);
value_type& operator[] (
const index<_Rank>& _Index) const restrict(amp,cpu);
Parametreler
_Dizin
Dizin.
_Ben
Dizin.
Dönüş Değeri
Dizindeki array_view veya en önemli boyuta yansıtılan öğenin değeri.
operator=
Belirtilen array_view nesnenin içeriğini bu nesneye kopyalar.
array_view& operator= (
const array_view& _Other) restrict(amp,cpu);
array_view& operator= (
const array_view<value_type, _Rank>& _Other) restrict(amp,cpu);
Parametreler
_Diğer
Kopyalanacak array_view nesne.
Dönüş Değeri
Bu array_view nesnesine bir referans.
sıra
array_view nesnesinin derecesini depolar.
static const int rank = _Rank;
yenileme
array_view nesnesine, bağlı belleğinin array_view arabiriminin dışında değiştirildiğini bildirir. Bu yönteme yapılan bir çağrı, önbelleğe alınan tüm bilgileri eski olarak işler.
void refresh() const restrict(cpu);
reinterpret_as
array_view, seçenek olarak kaynak array_view'den farklı bir değer türüne sahip olabilecek tek boyutlu bir array_view aracılığıyla yeniden yorumlanır.
Sözdizimi
template <
typename _Value_type2
>
array_view< _Value_type2, _Rank> reinterpret_as() const restrict(amp,cpu);
template <
typename _Value_type2
>
array_view<const _Value_type2, _Rank> reinterpret_as() const restrict(amp,cpu);
Parametreler
_Value_type2
Yeni array_view nesnenin veri türü.
Dönüş Değeri
array_view üzerinde, öğe tipi array_view'dan array_view'a dönüştürülen ve derecesi T'den 1'e düşürülen, bu _Value_type2 temel alınarak oluşturulmuş bir nesne veya const nesnesi.
Açıklamalar
Bazen çok boyutlu bir diziyi kaynak diziden farklı bir değer türüne sahip olabilecek doğrusal, tek boyutlu bir dizi olarak görüntülemek kullanışlı olabilir. Bu yöntemi kullanarak bunu bir array_view üzerinde gerçekleştirebilirsiniz.
Uyarı Array_view nesnesini farklı bir değer türü kullanarak yeniden yorumlamak güvenli olmayabilecek bir işlemdir. Bu işlev dikkatli kullanılmalıdır.
Bir örnek aşağıda verilmiştir:
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);
bölüm
Belirtilen başlangıç noktasında ve isteğe bağlı olarak belirtilen boyuta sahip olan array_view nesnesinin bir alt bölümünü döndürür.
array_view section(
const Concurrency::index<_Rank>& _Section_origin,
const Concurrency::extent<_Rank>& _Section_extent) const restrict(amp,cpu);
array_view section(
const Concurrency::index<_Rank>& _Idx) const restrict(amp,cpu);
array_view section(
const Concurrency::extent<_Rank>& _Ext) const restrict(amp,cpu);
array_view section(
int _I0,
int _E0) const restrict(amp,cpu);
array_view section(
int _I0,
int _I1,
int _E0,
int _E1) const restrict(amp,cpu);
array_view section(
int _I0,
int _I1,
int _I2,
int _E0,
int _E1,
int _E2) const restrict(amp,cpu);
Parametreler
_E0
Bu bölümün kapsamının en önemli bileşeni.
_E1
Bu bölümün kapsamının bir sonraki en önemli bileşeni.
_E2
Bu bölümün kapsamının en az önemli bileşeni.
_Ext
bölümün kapsamını belirten extent nesnesi. Çıkış noktası 0'dır.
_Idx
Kaynağın konumunu belirten dizin nesnesi. Alt bölüm, kapsamın geri kalanıdır.
_I0
Bu bölümün kaynağının en önemli bileşeni.
_I1
Bu bölümün kaynağının bir sonraki en önemli bileşeni.
_I2
Bu bölümün kaynağının en az önemli bileşeni.
_Rütbe
Bölümün sırası.
_Section_extent
bölümün kapsamını belirten extent nesnesi.
_Section_origin
Kaynağın konumunu belirten dizin nesnesi.
Dönüş Değeri
Belirtilen kaynakta olan ve isteğe bağlı olarak belirtilen uzantıya sahip olan nesnenin alt bölümü array_view . Yalnızca index nesne belirtildiğinde, alt bölüm, index nesnesindeki öğelerin dizinlerinden daha büyük dizinlere sahip olan, ilişkili ölçüdeki tüm öğeleri içerir.
kaynak_hızlandırıcı_görüntüleme
Bu array_view'in ilişkili olduğu kaynak accelerator_view'i alır.
__declspec(property(get= get_source_accelerator_view)) accelerator_view source_accelerator_view;
eşitle
Nesnede array_view yapılan değişiklikleri kaynak verilerine geri eşitler.
void synchronize(access_type _Access_type = access_type_read) const restrict(cpu);
void synchronize() const restrict(cpu);
Parametreler
_Erişim_türü
Hedeflenen access_type üzerindeki accelerator_view. Bu parametrenin varsayılan değeri vardır access_type_read.
synchronize_async
Nesnede yapılan array_view değişiklikleri zaman uyumsuz şekilde kaynak verileriyle senkronize eder.
concurrency::completion_future synchronize_async(access_type _Access_type = access_type_read) const restrict(cpu);
concurrency::completion_future synchronize_async() const restrict(cpu);
Parametreler
_Erişim_türü
Hedeflenen access_type üzerindeki accelerator_view. Bu parametrenin varsayılan değeri vardır access_type_read.
Dönüş Değeri
İşlemin tamamlanmasının beklendiği bir gelecek.
şuna senkronize et
Bu array_view'de yapılan tüm değişiklikleri belirtilen accelerator_view ile senkronize eder.
void synchronize_to(
const accelerator_view& _Accl_view,
access_type _Access_type = access_type_read) const restrict(cpu);
void synchronize_to(
const accelerator_view& _Accl_view) const restrict(cpu);
Parametreler
_Accl_view
Eşitlenecek hedef accelerator_view.
_Erişim_türü
Hedef accelerator_view üzerinde istenen erişim_tipi. Bu parametrenin varsayılan değeri access_type_read.
synchronize_to_async
Bu array_view'a yapılan tüm değişiklikleri zaman uyumsuz olarak belirtilen accelerator_view'a senkronize eder.
concurrency::completion_future synchronize_to_async(
const accelerator_view& _Accl_view,
access_type _Access_type = access_type_read) const restrict(cpu);
concurrency::completion_future synchronize_to_async(
const accelerator_view& _Accl_view) const restrict(cpu);
Parametreler
_Accl_view
Eşitlenecek hedef accelerator_view.
_Erişim_türü
Hedef accelerator_view üzerinde istenen erişim_tipi. Bu parametrenin varsayılan değeri access_type_read.
Dönüş Değeri
İşlemin tamamlanmasının beklendiği bir gelecek.
değer_tipi
array_view ve ilişkili dizinin değer türü.
typedef typenamevalue_type value_type;
olarak_görüntüle
Bu array_view farklı bir sıra derecesi olan bir array_view olarak yeniden yorumlar.
template <
int _New_rank
>
array_view<value_type,_New_rank> view_as(
const Concurrency::extent<_New_rank>& _View_extent) const 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);
Parametreler
_New_rank
Yeni array_view nesnenin sırası.
_View_extent
Yeniden şekillendirme extent.
value_type
Hem özgün dizi nesnesindeki hem de döndürülen array_view nesnedeki öğelerin veri türü.
Dönüş Değeri
Oluşturulan array_view nesne.