Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Representa um contêiner de dados usado para mover dados para um acelerador.
Sintaxe
template <typename value_type, int _Rank>
friend class array;
Parâmetros
value_type
O tipo de elemento dos dados.
_Rank
A classificação da matriz.
Membros
Construtores Públicos
| Nome | Descrição |
|---|---|
| array Construtor | Inicializa uma nova instância da classe array. |
| ~array Destruidor | Destrói o array objeto. |
Métodos Públicos
| Nome | Descrição |
|---|---|
| copy_to | Copia o conteúdo da matriz para outra matriz. |
| Dados | Retorna um ponteiro para os dados brutos da matriz. |
| get_accelerator_view | Retorna o objeto accelerator_view que representa o local onde a matriz está alocada. Esta propriedade pode ser acessada somente na CPU. |
| get_associated_accelerator_view | Obtém o segundo objeto accelerator_view que é passado como um parâmetro quando um construtor de preparo é chamado para instanciar o array objeto. |
| get_cpu_access_type | Retorna o access_type da matriz. Este método pode ser acessado somente na CPU. |
| get_extent | Retorna o objeto extent da matriz. |
| reinterpret_as | Retorna uma matriz unidimensional que contém todos os elementos no array objeto. |
| secção | Retorna uma subseção do array objeto que está na origem especificada e, opcionalmente, que tem a extensão especificada. |
| view_as | Retorna um objeto array_view que é construído a partir do array objeto. |
Operadores Públicos
| Nome | Descrição |
|---|---|
operator std::vector<value_type> |
Usa copy(*this, vector) para converter implicitamente a matriz em um objeto std::vetor . |
| operador(es) | Retorna o valor do elemento especificado pelos parâmetros. |
| operador[] | Retorna o elemento que está no índice especificado. |
| operador= | Copia o conteúdo do objeto especificado array para este. |
Constantes Públicas
| Nome | Descrição |
|---|---|
| rank Constante | Armazena a classificação da matriz. |
Membros de Dados Públicos
| Nome | Descrição |
|---|---|
| accelerator_view | Obtém o objeto accelerator_view que representa o local onde a matriz está alocada. Esta propriedade pode ser acessada somente na CPU. |
| associated_accelerator_view | Obtém o segundo objeto accelerator_view que é passado como um parâmetro quando um construtor de preparo é chamado para instanciar o array objeto. |
| cpu_access_type | Obtém o access_type que representa como a CPU pode acessar o armazenamento da matriz. |
| Extensão | Obtém a extensão que define a forma da matriz. |
Observações
O tipo array<T,N> representa uma matriz N-dimensional densa e regular (não irregular) que está localizada em um local específico, como um acelerador ou a CPU. O tipo de dados dos elementos na matriz é T, que deve ser de um tipo compatível com o acelerador de destino. Embora a classificação, N, (da matriz seja determinada estaticamente e faça parte do tipo, a extensão da matriz é determinada pelo tempo de execução e é expressa usando a classe extent<N>.
Uma matriz pode ter qualquer número de dimensões, embora algumas funcionalidades sejam especializadas para array objetos com classificação um, dois e três. Se você omitir o argumento de dimensão, o padrão será 1.
Os dados da matriz são dispostos de forma contígua na memória. Elementos que diferem por um na dimensão menos significativa são adjacentes na memória.
As matrizes são logicamente consideradas como tipos de valor, porque quando uma matriz é copiada para outra matriz, uma cópia profunda é executada. Duas matrizes nunca apontam para os mesmos dados.
O array<T,N> tipo é usado em vários cenários:
Como um contêiner de dados que pode ser usado em cálculos em um acelerador.
Como um contêiner de dados para armazenar memória na CPU do host (que pode ser usada para copiar de e para outras matrizes).
Como um objeto de preparo para atuar como um intermediário rápido em cópias de host para dispositivo.
Hierarquia de herança
array
Requerimentos
Cabeçalho: amp.h
Namespace: simultaneidade
~matriz
Destrói o array objeto.
~array() restrict(cpu);
accelerator_view
Obtém o objeto accelerator_view que representa o local onde a matriz está alocada. Esta propriedade pode ser acessada somente na CPU.
__declspec(property(get= get_accelerator_view)) Concurrency::accelerator_view accelerator_view;
matriz
Inicializa uma nova instância da classe de matriz. Não há nenhum construtor padrão para array<T,N>. Todos os construtores são executados apenas na CPU. Eles não podem ser executados em um destino 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);
Parâmetros
_Associated_Av
Um accelerator_view que especifica o local de destino preferencial da matriz.
_Av
Um objeto accelerator_view que especifica o local da matriz.
_Cpu_access_type
O access_type desejado para o array na CPU. Este parâmetro tem um valor padrão de deixar a determinação da CPU access_type para o tempo de access_type_auto execução. A CPU access_type real para a matriz pode ser consultada usando o get_cpu_access_type método.
_Extent
A extensão em cada dimensão da matriz.
_E0
O componente mais significativo da extensão desta seção.
_E1
O componente mais significativo da extensão desta seção.
_E2
A componente menos significativa da extensão desta secção.
_InputIterator
O tipo do iterador de entrada.
_Src
Para se opor à cópia.
_Src_first
Um iterador inicial no contêiner de origem.
_Src_last
Um iterador final no contêiner de origem.
_Other
Outra fonte de dados.
_Rank
A classificação da secção.
value_type
O tipo de dados dos elementos que são copiados.
associated_accelerator_view
Obtém o segundo objeto accelerator_view que é passado como um parâmetro quando um construtor de preparo é chamado para instanciar o array objeto.
__declspec(property(get= get_associated_accelerator_view)) Concurrency::accelerator_view associated_accelerator_view;
copy_to
Copia array o conteúdo do para outro array.
void copy_to(
array<value_type, _Rank>& _Dest) const ;
void copy_to(
array_view<value_type, _Rank>& _Dest) const ;
Parâmetros
_Dest
O array_view objeto para o qual copiar.
cpu_access_type
Obtém o access_type de CPU permitido para essa matriz.
__declspec(property(get= get_cpu_access_type)) access_type cpu_access_type;
dados
Retorna um ponteiro para os dados brutos do array.
value_type* data() restrict(amp, cpu);
const value_type* data() const restrict(amp, cpu);
Valor de retorno
Um ponteiro para os dados brutos da matriz.
extensão
Obtém o objeto de extensão que define a forma do arrayarquivo .
__declspec(property(get= get_extent)) Concurrency::extent<_Rank> extent;
get_accelerator_view
Retorna o objeto accelerator_view que representa o local onde o array objeto está alocado. Esta propriedade pode ser acessada somente na CPU.
Concurrency::accelerator_view get_accelerator_view() const;
Valor de retorno
O accelerator_view objeto que representa o local onde o array objeto está alocado.
get_associated_accelerator_view
Obtém o segundo objeto accelerator_view que é passado como um parâmetro quando um construtor de preparo é chamado para instanciar o array objeto.
Concurrency::accelerator_view get_associated_accelerator_view() const ;
Valor de retorno
O segundo objeto accelerator_view passou para o construtor de preparo.
get_cpu_access_type
Retorna a access_type da CPU permitida para essa matriz.
access_type get_cpu_access_type() const restrict(cpu);
Valor de retorno
get_extent
Devolve o objeto extent do arrayficheiro .
Concurrency::extent<_Rank> get_extent() const restrict(amp,cpu);
Valor de retorno
O extent objeto do array.
operator std::vector<value_type>
Usa copy(*this, vector) para converter implicitamente a matriz em um objeto std::vetor.
operator std::vector<value_type>() const restrict(cpu);
Parâmetros
value_type
O tipo de dados dos elementos do vetor.
Valor de retorno
Um objeto do tipo vector<T> que contém uma cópia dos dados contidos na matriz.
operador()
Retorna o valor do elemento especificado pelos parâmetros.
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);
Parâmetros
_Index
A localização do elemento.
_I0
O componente mais significativo da origem desta seção.
_I1
O componente mais significativo da origem desta seção.
_I2
A componente menos significativa da origem desta secção.
_Eu
A localização do elemento.
Valor de retorno
O valor do elemento especificado pelos parâmetros.
operador[]
Retorna o elemento que está no índice especificado.
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);
Parâmetros
_Index
O índice.
_Eu
O índice.
Valor de retorno
O elemento que está no índice especificado.
operador=
Copia o conteúdo do objeto especificado 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);
Parâmetros
_Other
O array objeto do qual copiar.
_Src
O array objeto do qual copiar.
Valor de retorno
Uma referência a isso array objeto.
classificar
Armazena a classificação do array.
static const int rank = _Rank;
reinterpret_as
Reinterpreta a matriz por meio de uma array_view unidimensional, que opcionalmente pode ter um tipo de valor diferente da matriz de origem.
Sintaxe
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);
Parâmetros
_Value_type2
O tipo de dados dos dados retornados.
Valor de retorno
Um array_view ou const array_view objeto baseado na matriz, com o tipo de elemento reinterpretado de T para ElementType e a classificação reduzida de N para 1.
Observações
Às vezes, é conveniente visualizar uma matriz multidimensional como se fosse uma matriz linear unidimensional, possivelmente com um tipo de valor diferente da matriz de origem. Você pode usar esse método para conseguir isso. Atenção Reinterpretar um objeto de matriz usando um tipo de valor diferente é uma operação potencialmente insegura. Recomendamos que utilize esta funcionalidade cuidadosamente.
O código a seguir fornece um exemplo.
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);
seção
Retorna uma subseção do array objeto que está na origem especificada e, opcionalmente, que tem a extensão especificada.
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);
Parâmetros
_E0
O componente mais significativo da extensão desta seção.
_E1
O componente mais significativo da extensão desta seção.
_E2
A componente menos significativa da extensão desta secção.
_Ext
O objeto extent que especifica a extensão da seção. A origem é 0.
_Idx
O objeto de índice que especifica o local da origem. A subsecção é o resto da extensão.
_I0
O componente mais significativo da origem desta seção.
_I1
O componente mais significativo da origem desta seção.
_I2
A componente menos significativa da origem desta secção.
_Rank
A classificação da secção.
_Section_extent
O objeto extent que especifica a extensão da seção.
_Section_origin
O objeto de índice que especifica o local da origem.
value_type
O tipo de dados dos elementos que são copiados.
Valor de retorno
Retorna uma subseção do array objeto que está na origem especificada e, opcionalmente, que tem a extensão especificada. Quando apenas o index objeto é especificado, a subseção contém todos os elementos na grade associada que têm índices maiores do que os índices dos elementos no index objeto.
view_as
Reinterpreta essa matriz como uma array_view de uma classificação diferente.
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);
Parâmetros
_New_rank
A classificação do extent objeto passado como um parâmetro.
_View_extent
A extensão que é usada para construir o novo objeto array_view .
value_type
O tipo de dados dos elementos no objeto original array e no objeto retornado array_view .
Valor de retorno
O array_view objeto que é construído.