array::array, constructeur
Initialise une nouvelle instance de la classe array. Il n'existe pas de constructeur public par défaut pour array<T,N>. Tous les constructeurs sont exécutés sur l'UC uniquement. Ils ne peuvent pas être exécutés sur une cible 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);
Paramètres
_Associated_Av
Un accelerator_view qui spécifie l'emplacement cible par défaut du tableau._Av
Un objet accelerator_view qui spécifie l'emplacement du tableau._Cpu_access_type
L'access_type souhaité pour le tableau sur l'UC. Ce paramètre a une valeur par défaut de access_type_auto permettant la détermination d'UC access_type sur le runtime. L'access_type d'UC réel pour le tableau peut être interrogé à l'aide de la méthode get_cpu_access_type._Extent
Objet extent dans chaque dimension du tableau._E0
L'élément le plus significatif de l'extent de cette section._E1
L'élément suivant l'élément le plus significatif de l'extent de cette section._E2
L'élément le moins significatif de l'étendue de cette section._InputIterator
Type de l'itérateur d'entrée._Src
L'objet à copier._Src_first
Un itérateur de départ dans le conteneur source._Src_last
Un itérateur de fin dans le conteneur source._Other
Autre source de données._Rank
Rang de la section._Value_type
Type de données des éléments copiés.
Remarques
Les constructeurs temporaires ont deux objets accelerator_view comme paramètres de constructeur. Les tableaux temporaires sont utilisés comme un indicateur pour optimiser les copies répétées entre deux accélérateurs (entre le processeur et un accélérateur Direct3D). Les tableaux temporaires sont optimisés pour le transfert de données et n'ont pas d'espace mémoire utilisateur stable. Ils sont stockés par les mémoires tampons temporaires DirectX qui ont l'alignement matériel correct pour s'assurer qu'il existe un transfert efficace de mémoire à accès direct (DMA) entre le processeur et l'accélérateur. La propriété accelerator_view d'un tableau temporaire retourne la valeur du premier argument d'accélérateur avec lequel il a été créé. Vous ne pouvez pas modifier ni examiner le contenu d'un tableau temporaire lorsqu'il est impliqué dans une opération de transfert, comme indiqué dans le code suivant.
class SimulationServer
{
array<float,2> acceleratorArray;
array<float,2> stagingArray;
public:
SimulationServer(const accelerator_view& av)
:acceleratorArray(extent<2>(1000,1000), av),
stagingArray(extent<2>(1000,1000), accelerator("cpu"),
accelerator("gpu"))
{
}
void OnCompute()
{
array<float,2> &a = acceleratorArray;
ApplyNetworkChanges(stagingArray.data());
// Starting here, you can't change or examine contents.
a = stagingArray;
parallel_for_each(a.extents, [&](index<2> idx)
{
// Update a[idx] according to simulation.
}
stagingArray = a;
// Starting here, you can change or examine contents.
SendToClient(stagingArray.data());
}
};
Configuration requise
En-tête : amp.h
Espace de noms d'accès : Concurrency