Compartir a través de


array_view (Clase)

Representa una vista de n dimensiones de los datos almacenados en otro contenedor.

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)>;

Parámetros

  • _Value_type
    El tipo de datos de los elementos en el objeto array_view.

  • _Rank
    El rango del objeto array_view.

Members

Hh305260.collapse_all(es-es,VS.110).gifConstructores públicos

Nombre

Descripción

array_view::array_view (Constructor)

Inicializa una nueva instancia de la clase array_view.No hay un constructor público predeterminado para array<T,N>.Todos los constructores se ven forzados a procesar sólo en la CPU y no se pueden ejecutar en un destino Direct3D.

array_view::~array_view (Destructor)

Destruye el objeto array_view.

Hh305260.collapse_all(es-es,VS.110).gifMétodos públicos

Nombre

Descripción

array_view::copy_to (Método)

Copia el contenido del objeto array_view al destino especificado mediante una llamada a copy(*this, dest).

array_view::data (Método)

Devuelve un puntero a los datos sin formato array_view.

array_view::discard_data (Método)

Desecha los datos actuales subyacientes a esta vista.

array_view::get_extent (Método)

Devuelve el objeto de extensión del objeto de array_view.

array_view::refresh (Método)

Notifica al objeto array_view que su memoria enlazada se ha modificado fuera de la interfaz de array_view.Una llamada a este método convierte toda la información almacenada en la caché en obsoleta.

array_view::reinterpret_as (Método)

Devuelve una matriz unidimensional que contiene todos los elementos en el objeto array_view.

array_view::section (Método)

Devuelve una subsección de objeto array_view que está en el origen especificado y, opcionalmente, que tiene la extensión especificada.

array_view::synchronize (Método)

Vuelve a sincronizar cualquier modificación realizada al objeto array_view a los datos de origen.

array_view::synchronize_async (Método)

De forma asíncrona vuelva a sincronizar cualquier modificación realizada al objeto array_view a los datos de origen.

array_view::view_as (Método)

Genera un objeto array_view de un rango diferente utilizando los datos de este objeto array_view.

Hh305260.collapse_all(es-es,VS.110).gifOperadores públicos

Nombre

Descripción

array_view::operator() (Operador)

Devuelve el valor del elemento especificado por el parámetro o los parámetros.

array_view::operator[] (Operador)

Devuelve el elemento especificado por los parámetros.

array_view::operator= (Operador)

Copia el contenido del objeto especificado array_view en éste.

Hh305260.collapse_all(es-es,VS.110).gifConstantes públicas

Nombre

Descripción

array_view::rank (Constante)

Almacena el rango del objeto array_view.

Hh305260.collapse_all(es-es,VS.110).gifMiembros de datos

Nombre

Descripción

array_view::extent (Miembro de datos)

Consigue el objeto extent que define la forma del objeto array_view.

Comentarios

La clase array_view representa una vista de los datos incluidos en un objeto matriz o una subsección de un objeto array.

Se puede acceder al objeto array_view donde se encuentran (localmente) los datos de origen o a otro acelerador o a un dominio de coherencia (remotamente).Cuando se tiene acceso al objeto de forma remota, las vistas se copian y se almacenan en la caché si es necesario.Salvo los efectos del almacenamiento en caché automático, los objetos array_view tienen un perfil de rendimiento similar al de los objetos array.Hay una pequeña reducción del rendimiento cuando se tiene acceso a los datos a mediante las vistas.

Hay tres escenarios de uso remoto:

  • Se pasa una vista a un puntero de memoria del sistema mediante una llamada parallel_for_each a un acelerador y se accede desde el acelerador.

  • Se pasa una vista a una matriz ubicada en un acelerador mediante una llamada parallel_for_each a otro acelerador y se accede desde allí.

  • Se accede a una vista a una matriz ubicada en un acelerador desde la CPU.

En cualquiera de estos escenarios, las vistas a las que se hace referencia se copian por el runtime en una ubicación remota y, si se modifican por las llamadas al objeto array_view, se vuelven a copiar a la ubicación local.El runtime puede optimizar el proceso de volver a copiar los cambios, puede copiar únicamente los elementos modificados, o puede también copiar partes que no se han cambiado.Los objetos superpuestos array_view en un origen de datos no garantiza que se mantenga la integridad referencial en una ubicación remota.

Se debe sincronizar cualquier acceso multiproceso al mismo origen de datos.

El runtime crea las siguientes garantías con respecto al almacenamiento en la caché de datos de los objetos array_view:

  • Todos los accesos bien sincronizados a un objeto array y un objeto array_view en él obedecen, en el orden del programa, un relación en serie de "ocurre antes de".

  • Todos los accesos bien sincronizados al superponer los objetos array_view en el mismo acelerador en un único objeto array tienen alias a través del objeto array.Inducen una relación total"ocurre antes" que obedece al orden del programa.No hay ningún almacenamiento en caché.Si los objetos array_view se están ejecutando en distintos aceleradores, el orden de acceso es indefinido, creando una condición de carrera.

Cuando se crea un objeto array_view mediante un puntero en la memoria del sistema, se debe cambiar el objeto array_view de vista sólo a través del puntero array_view.O se debe llamar a refresh()en uno de los objetos array_view que se asocian al puntero del sistema, si la memoria nativa subyacente cambia directamente, en vez de a través del objeto array_view.Cualquier de las dos acciones notifica al objeto array_view que la memoria nativa subyacente cambia y que cualquier copia ubicada en un acelerador está obsoleta.Si se siguen estas instrucciones, las vistas basadas en punteros serán idénticas que las proporcionadas a las vistas de matrices de datos paralelos.

Jerarquía de herencia

_Array_view_shape

_Array_view_base

array_view

Requisitos

Encabezado: amp.h

Espacio de nombres: Simultaneidad

Vea también

Referencia

Espacio de nombres de simultaneidad (C++ AMP)