Udostępnij za pośrednictwem


array::array — Konstruktor

Inicjuje nowe wystąpienie klasy array.Brak domyślnego konstruktora dla array<T,N>.Wszystkie konstruktory są uruchamiane tylko na procesorze.Nie mogą być wykonywane docelowo na 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
    Widok accelerator_view, który określa preferowaną lokalizację docelową tablicy.

  • _Av
    Obiekt accelerator_view, który określa lokalizację tablicy.

  • _Cpu_access_type
    Żądany access_type dla tablicy na CPU.Ten parametr ma wartość domyślną access_type_auto pozostawiającą wyznaczanie CPU access_type dla czasu wykonywania.Rzeczywisty procesor CPU access_type dla tablicy może być poddawany zapytaniom przy użyciu metody get_cpu_access_type.

  • _Extent
    Zakres dla każdego wymiaru tablicy.

  • _E0
    Najbardziej znaczący składnik z zakresu sekcji.

  • _E1
    Drugi najbardziej znaczący składnik z zakresu sekcji.

  • _E2
    Najmniej znaczący składnik z zakresu sekcji.

  • _InputIterator
    Typ iteratora wejściowego.

  • _Src
    Obiekt do skopiowania.

  • _Src_first
    Początkowy iterator do kontenera źródłowego.

  • _Src_last
    Końcowy iterator do kontenera źródłowego.

  • _Other
    Inne źródło danych.

  • _Rank
    Ranga sekcji.

  • _Value_type
    Typ danych elementów, które są kopiowane.

Uwagi

Konstruktory tymczasowe pobierają dwa obiekty accelerator_view jako parametry konstruktora.Tablice tymczasowe są używane jako wskazówka do optymalizowania powtarzających się kopii pomiędzy dwoma akceleratorami (między akceleratorem procesora i akceleratorem Direct3D).Tablice tymczasowe są zoptymalizowane do transferu danych i nie mają stabilnej pamięci przestrzeni użytkownika.Są one wspierane przez bufory tymczasowe DirectX, które mają odpowiednie wyrównanie sprzętu, aby upewnić się, że istnieje wydajny transfer bezpośredniego dostępu do pamięci, pomiędzy procesorem i akceleratorem.Właściwość accelerator_view tablicy tymczasowej zwraca wartość pierwszego argumentu akceleratora, przy użyciu którego został stworzony akcelerator.Nie można zmienić lub zbadać zawartości tablicy tymczasowej, jeśli jest zaangażowana w operację transferu, jak pokazano w poniższym kodzie.

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

Wymagania

Nagłówek: amp.h

Przestrzeń nazw: Concurrency

Zobacz też

Informacje

array — Klasa