Aracılığıyla paylaş


array_view Sınıfı

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ı.

Üyeler

Ortak Oluşturucular

Veri Akışı Adı 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ı Nesneyi yok eder array_view .

Genel Yöntemler

Veri Akışı Adı Açıklama
copy_to öğesini çağırarak copy(*this, dest)nesnenin array_view içeriğini belirtilen hedefe kopyalar.
data ham verilerine array_viewbir işaretçi döndürür.
discard_data 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.
get_source_accelerator_view veri kaynağının array_view bulunduğu accelerator_view döndürür.
yenilemek Nesneye array_view , bağlı belleğinin arabirimin array_view 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.
section Belirtilen kaynakta ve isteğe bağlı olarak, belirtilen uzantıya sahip olan nesnenin bir alt bölümü array_view 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 olarak kaynak verilerine eşitler.
synchronize_to Nesnede array_view yapılan tüm değişiklikleri belirtilen accelerator_view eşitler.
synchronize_to_async Nesnede yapılan array_view değişiklikleri zaman uyumsuz olarak belirtilen accelerator_view eşitler.
view_as array_view Bu array_view nesnenin verilerini kullanarak farklı bir dereceye sahip bir nesne üretir.

Ortak İşleçler

Veri Akışı Adı Açıklama
operator() parametresi veya parametreleri tarafından belirtilen öğenin değerini döndürür.
işleç[] Parametreler tarafından belirtilen öğesini döndürür.
operator= Belirtilen array_view nesnenin içeriğini bu nesneye kopyalar.

Genel Sabitler

Veri Akışı Adı Açıklama
rank Sabiti Nesnenin derecesini array_view depolar.

Veri Üyeleri

Veri Akışı Adı Açıklama
kapsam Nesnenin extent şeklini array_view tanımlayan nesneyi alır.
source_accelerator_view veri kaynağının array_view bulunduğu accelerator_view alır
value_type ve ilişkili dizinin değer türü array_view .

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 nesneler, array_view nesnelerinkine benzer bir performans profiline array sahiptir. Verilere görünümler aracılığıyla erişirken küçük bir performans cezası vardır.

Üç uzaktan kullanım senaryosu vardır:

  • Sistem bellek işaretçisine yönelik bir görünüm, bir hızlandırıcıya parallel_for_each çağrısı yoluyla geçirilir ve hızlandırıcıdan erişilir.

  • Hızlandırıcıda bulunan bir dizi görünümü, başka bir parallel_for_each hızlandırıcıya yapılan çağrı yoluyla geçirilir ve buradan erişilir.

  • CPU'da hızlandırıcıda bulunan bir dizi görünümüne erişilir.

Bu senaryolardan herhangi birinde başvuruda bulunan görünümler çalışma zamanı tarafından uzak konuma kopyalanır ve nesneye array_view yapılan çağrılar tarafından değiştirilirse 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ı, nesnelerdeki verilerin array_view önbelleğe alınmasını sağlamak için aşağıdaki garantileri verir:

  • Program sırasına göre bir array nesneye ve array_view nesneye tüm iyi eşitlenmiş erişimler seri gerçekleşmeden önce ilişkisine uyar.

  • Tek array bir nesne üzerinde aynı hızlandırıcıda çakışan array_view nesnelere iyi eşitlenmiş tüm erişimler, nesne aracılığıyla array diğer adla eklenir. Program düzenine uyan bir toplam gerçekleşmeden önce ilişki oluşturur. Önbelleğe alma işlemi yoktur. array_view Nesneler 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 nesne yerine array_view doğrudan değiştirilirse, sistem işaretçisine bağlı nesnelerden birini array_view çağırmanız refresh() 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 bilgi: amp.h

Ad Alanı: Eşzamanlılık

~array_view

Nesneyi yok eder array_view .

~array_view()restrict(amp,cpu);

array_view

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
ve size() üyelerini destekleyen data() doğrusal bir kapsayıcı belirtmesi gereken bir şablon bağımsız değişkeni.

_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_viewboyutun her boyutunun kapsamı.

_Diğer
Yeni array_viewöğesinin başlatıldığı türde array_view<T,N> 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

öğesini çağırarak copy(*this, dest)nesnenin array_view içeriğini belirtilen hedef nesneye 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

ham verilerinin işaretçisi array_view.

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, kısıtla (amp) bağlamında kullanıldığında işlem yapılmaz

void discard_data() const restrict(cpu);

kapsam

Nesnenin extent şeklini array_view tanımlayan nesneyi alır.

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

get_extent

Nesnenin extent nesnesini array_view döndürür.

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

Dönüş Değeri

extent Nesnenin array_view nesnesi

get_ref

_Index tarafından dizine alınan öğeye başvuru alın. CPU'da array_view erişmek için diğer dizin işleçlerinden farklı olarak, bu yöntem bu array_view içeriğini örtük olarak CPU ile eşitlemez. Uzak bir konumdaki array_view eriştiğinde veya bu array_view içeren bir kopyalama işlemi gerçekleştirdikten sonra kullanıcılar bu yöntemi çağırmadan önce array_view 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

get_source_accelerator_view

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.

işleç[]

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 nesneye bir başvuru.

rütbe

Nesnenin derecesini array_view depolar.

static const int rank = _Rank;

yenileme

Nesneye array_view , bağlı belleğinin arabirimin array_view 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

seçenek olarak kaynak array_view farklı bir değer türüne sahip olabilecek tek boyutlu bir array_view aracılığıyla array_view yeniden yorumlar.

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 Öğe türü öğesi türünden öğesine dönüştürülen ve derecenin N'den T 1'e _Value_type2düşürüldüğü, bunu array_viewtemel alan bir nesne veya const array_view 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);

section

Belirtilen kaynakta ve isteğe bağlı olarak, belirtilen uzantıya sahip olan nesnenin bir alt bölümü array_view 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 ilişkili ölçüde nesnedeki öğelerin dizinlerinden daha büyük dizinleri olan tüm öğeleri index içerir.

source_accelerator_view

Bu array_view ilişkili olduğu kaynak accelerator_view alır.

__declspec(property(get= get_source_accelerator_view)) accelerator_view source_accelerator_view;

synchronize

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

_Access_type
Hedef accelerator_view hedef access_type. Bu parametrenin varsayılan değeri vardır access_type_read.

synchronize_async

Nesnede yapılan array_view değişiklikleri zaman uyumsuz olarak kaynak verilerine eşitler.

concurrency::completion_future synchronize_async(access_type _Access_type = access_type_read) const restrict(cpu);

concurrency::completion_future synchronize_async() const restrict(cpu);

Parametreler

_Access_type
Hedef accelerator_view hedef access_type. Bu parametrenin varsayılan değeri vardır access_type_read.

Dönüş Değeri

İşlemin tamamlanmasının beklendiği bir gelecek.

synchronize_to

Bu array_view yapılan tüm değişiklikleri belirtilen accelerator_view eşitler.

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.

_Access_type
Hedef accelerator_view istenen access_type. Bu parametrenin varsayılan değeri access_type_read.

synchronize_to_async

Bu array_view yapılan tüm değişiklikleri zaman uyumsuz olarak belirtilen accelerator_view eşitler.

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.

_Access_type
Hedef accelerator_view istenen access_type. Bu parametrenin varsayılan değeri access_type_read.

Dönüş Değeri

İşlemin tamamlanmasının beklendiği bir gelecek.

value_type

array_view ve ilişkili dizinin değer türü.

typedef typenamevalue_type value_type;

view_as

Bunu array_view farklı bir array_view derecelendirme 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şturduğunuz array_view nesne.

Ayrıca bkz.

Eşzamanlılık Ad Alanı (C++ AMP)