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