Sdílet prostřednictvím


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

Viz také

Referenční dokumentace

array – třída