array_view 類別
代表保留於另一個容器裡的資料在 N 維下的檢視。
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)>;
參數
_Value_type
array_view 物件內項目的資料類型。_Rank
array_view 物件的順位。
Members
公用建構函式
名稱 |
描述 |
---|---|
初始化 array_view 類別的新執行個體。 array<T,N> 沒有預設的建構函式。 所有建構函式都受到限制,只能在 CPU 上執行,而無法在 Direct3D 目標上執行。 |
|
終結 array_view 物件。 |
公用方法
名稱 |
描述 |
---|---|
藉由呼叫 copy(*this, dest),將 array_view 物件的內容複製到指定的目的端。 |
|
傳回 array_view的原始資料的指標。 |
|
捨棄做為此檢視基礎的目前資料。 |
|
傳回 array_view 物件的範圍物件。 |
|
傳回索引項目的參考。 |
|
傳回 array_view 資料來源所位在的 accelerator_view。 |
|
告知 array_view 物件所繫結的記憶體中已從 array_view 介面外修改。 呼叫此方法會讓所有快取的資訊失效。 |
|
array_view 會傳回包含二維字串陣列的物件。 |
|
傳回指定之來源的子區段 array_view 物件,且可選擇性指定範圍。 |
|
同步處理對 array_view 物件所做的任何修改,使其還原為來源資料。 |
|
非同步地將對 array_view 所做的任何修改與其來源資料同步處理。 |
|
將對 array_view 物件進行的任何修改同步處理至指定的 accelerator_view。 |
|
非同步會將對 array_view 物件進行的任何修改同步處理至指定的 accelerator_view。 |
|
利用此 array_view 物件的資料產生一個不同陣序的 array_view 物件。 |
公用運算子
名稱 |
描述 |
---|---|
傳回由一或多個參數指定的項目的值。 |
|
傳回參數指定的項目。 |
|
將指定之 array_view 物件的內容複製到這個物件。 |
公用常數
名稱 |
描述 |
---|---|
儲存 array_view 物件的順位。 |
資料成員
名稱 |
描述 |
---|---|
取得定義 array_view 物件圖形的 extent 物件。 |
|
取得 array_view 資料來源所位在的 accelerator_view |
|
array_view 和繫結陣列的實值類型。 |
備註
array_view 類別代表深入 array 物件或array物件子區段中所含資料的檢視。
您可以存取來源資料所在的 array_view 物件 (本機) 或不同的加速器或連貫網域 (遠端)。 當您以遠端方式存取物件時,檢視依需要複製和快取。 除了自動快取的效果不同以外,array_view 物件與 array 物件的效能設定檔相同。 當您透過檢視表存取資料時,效能會稍微受到影響。
有三個遠端使用情節:
系統記憶體指標的檢視是透過對加速器的 parallel_for_each 呼叫來傳遞,並在加速器上進行存取。
位於加速器之陣列的檢視是藉由對另一個加速器的 parallel_for_each 呼叫來傳遞,並在那裡進行存取。
位於加速器之陣列的檢視是在 CPU 上進行存取。
在任何一種情況下,執行階段會將參考的檢視複製到遠端位置,如果由 array_view 物件的呼叫進行修改,則複製回本機位置。 執行階段可能會最佳化重新複製變更的流程、可能只會複製變更的項目,也可能會一併複製未變更的部分。 某個資料來源的重疊 array_view 物件沒有在遠端位置保證維護參考完整性。
您必須同步處理對相同資料來源的任何多執行緒存取。
執行階段會對有關快取 array_view 物件中資料做出下列保證:
對其中 array 物件和 array_view 物件的所有適當同步存取 (依照程式順序) 會遵守循序的發生次序 (Happens-Before) 關聯性。
在單一 array 物件上,對相同加速器之重疊 array_view 物件的所有適當同步存取是透過 array 物件指定別名。 它們會引發整個 occurs-before 關聯性,該關聯性會遵守程式順序。 沒有快取。 如果 array_view 物件在不同的加速器上執行,則存取順序尚未定義,因此建立競爭條件。
當您使用系統記憶體中的指標建立 array_view 物件時,只能透過 array_view 指標變更檢視 array_view 物件。 或者,您必須呼叫以附加至系統指標的其中一個 refresh()array_view 物件,如果基礎原生記憶體直接變更,而不是透過 array_view 物件。
任一動作都會告知 array_view 物件,基礎原生記憶體發生變更,以及任何位於加速器上的複本皆已過時。 如果您遵循這些方針,提供給資料平行陣列檢視的指標檢視會是相同的。
繼承階層架構
_Array_view_shape
_Array_view_base
array_view
需求
**標頭:**amp.h
**命名空間:**並行