array::array – konstruktor
Inicializuje novou instanci třídy array.Pro třídu array<T,N> neexistuje žádný výchozí konstruktor.Všechny konstruktory jsou spouštěny pouze na CPU.Nelze je spustit v cíli 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);
Parametry
_Associated_Av
Objekt typu accelerator_view určující preferované cílové umístění pole._Av
Objekt accelerator_view určující umístění pole._Cpu_access_type
Požadovaný access_type pro pole procesoru.Tento parametr má výchozí hodnotu access_type_auto a zanechává tak stanovení procesoru access_type pro modul runtime.access_type aktuálního procesoru pro pole může být dotázán pomocí metody get_cpu_access_type._Extent
Rozsah v každém rozměru pole._E0
Nejvýznamnější komponenta rozsahu tohoto oddílu._E1
Druhá nejvýznamnější komponenta rozsahu tohoto oddílu._E2
Nejméně významná komponenta rozsahu tohoto oddílu._InputIterator
Typ vstupního iterátoru._Src
Kopírovaný objekt._Src_first
Počáteční iterátor do zdrojového kontejneru._Src_last
Koncový iterátor do zdrojového kontejneru._Other
Jiný zdroj dat._Rank
Řád oddílu._Value_type
Typ dat kopírovaných prvků.
Poznámky
Pracovní konstruktory přijímají dva objekty accelerator_view jako parametry.Pracovní pole se používají jako nápověda pro optimalizaci opakovaného kopírování mezi dvěma akcelerátory (mezi CPU a akcelerátorem Direct3D).Pracovní pole jsou optimalizována pro přenos dat a nemají stabilní uživatelskou paměť.Opírají se o pracovní vyrovnávací paměti DirectX, které mají správné hardwarové zarovnání, aby byla zajištěna efektivita přenosů dat mezi CPU a akcelerátorem pomocí přímého přístupu do paměti (DMA).Vlastnost accelerator_view pracovního pole vrací hodnotu prvního argumentu akcelerátoru, s nímž bylo pole vytvořeno.Jak ukazuje následující kód, nelze změnit nebo zkontrolovat obsah pracovního pole, pokud se právě účastní operace přenosu dat.
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());
}
};
Požadavky
Hlavička: amp.h
Obor názvů: Souběžnost