Funkcje przestrzeni nazw współbieżności (AMP)

all_memory_fence

Blokuje wykonywanie wszystkich wątków na kafelku do momentu ukończenia dostępu do wszystkich pamięci. Gwarantuje to, że wszystkie dostępy do pamięci są widoczne dla innych wątków na kafelku wątku i są wykonywane w kolejności programu.

inline void all_memory_fence(const tile_barrier& _Barrier) restrict(amp);

Parametry

_Barierę
Obiekt tile_barrier.

amp_uninitialize

Uninitializuje środowisko uruchomieniowe C++ AMP. Jest to legalne, aby wywołać tę funkcję wielokrotnie w okresie istnienia aplikacji. Wywołanie dowolnego interfejsu API AMP języka C++ po wywołaniu tej funkcji spowoduje ponowne zainicjowanie środowiska uruchomieniowego C++ AMP. Należy pamiętać, że używanie obiektów AMP języka C++ w wywołaniach tej funkcji jest niedozwolone i spowoduje to niezdefiniowane zachowanie. Ponadto równoczesne wywoływanie tej funkcji i innych interfejsów API AMP jest nielegalne i spowodowałoby niezdefiniowane zachowanie.

void __cdecl amp_uninitialize();

atomic_compare_exchange

Niepodzielne porównuje wartość przechowywaną w lokalizacji pamięci określonej w pierwszym argumencie równości z wartością drugiego określonego argumentu, a jeśli wartości są takie same, wartość w lokalizacji pamięci zostanie zmieniona na wartość trzeciego określonego argumentu.

inline bool atomic_compare_exchange(
    _Inout_ int* _Dest,
    _Inout_ int* _Expected_value,
    int value
    ) restrict(amp)

inline bool atomic_compare_exchange(
    _Inout_ unsigned int* _Dest,
    _Inout_ unsigned int* _Expected_value,
    unsigned int value
    ) restrict(amp)

Parametry

_Dest
Lokalizacja, z której należy porównać jedną z wartości, jest odczytywana i do której ma być przechowywana nowa wartość, jeśli istnieje.

_Expected_value
Lokalizacja, z której jest porównywana druga wartość, jest odczytywana.

wartość
Wartość, która ma być przechowywana w lokalizacji pamięci określonej przez _Dest parametr , jeśli _Dest jest równa _Expected_value.

Wartość zwracana

true jeśli operacja zakończyła się pomyślnie; w przeciwnym razie, false.

atomic_exchange, funkcja (C++ AMP)

Ustawia wartość lokalizacji docelowej jako operację niepodzielna.

inline int atomic_exchange(
    _Inout_ int* _Dest,
    int value
    ) restrict(amp)

inline unsigned int atomic_exchange(
    _Inout_ unsigned int* _Dest,
    unsigned int value
    ) restrict(amp)

inline float atomic_exchange(
    _Inout_ float* _Dest,
    float value
    ) restrict(amp)

Parametry

_Dest
Wskaźnik do lokalizacji docelowej.

wartość
Nowa wartość.

Wartość zwracana

Oryginalna wartość lokalizacji docelowej.

atomic_fetch_add, funkcja (C++ AMP)

Niepodzielne dodawanie wartości do wartości lokalizacji pamięci.

inline int atomic_fetch_add(
    _Inout_ int* _Dest,
    int value
    ) restrict(amp)

inline unsigned int atomic_fetch_add(
    _Inout_ unsigned int* _Dest,
    unsigned int value
    ) restrict(amp)

Parametry

_Dest
Wskaźnik do lokalizacji pamięci.

wartość
Wartość do dodania.

Wartość zwracana

Oryginalna wartość lokalizacji pamięci.

atomic_fetch_and, funkcja (C++ AMP)

Niepodzielne wykonuje bitową operację AND wartości i wartości lokalizacji pamięci.

inline int atomic_fetch_and(
    _Inout_ int* _Dest,
    int value
    ) restrict(amp)

inline unsigned int atomic_fetch_and(
    _Inout_ unsigned int* _Dest,
    unsigned int value
    ) restrict(amp)

Parametry

_Dest
Wskaźnik do lokalizacji pamięci.

wartość
Wartość do użycia w obliczeniach bitowych AND.

Wartość zwracana

Oryginalna wartość lokalizacji pamięci.

atomic_fetch_dec

Niepodzielne dekrementuje wartość przechowywaną w określonej lokalizacji pamięci.

inline int atomic_fetch_dec(_Inout_ int* _Dest
    ) restrict(amp)

inline unsigned int atomic_fetch_dec(_Inout_ unsigned int* _Dest) restrict(amp);

Parametry

_Dest
Lokalizacja w pamięci wartości, która ma zostać zdekrementowana.

Wartość zwracana

Oryginalna wartość przechowywana w lokalizacji pamięci.

atomic_fetch_inc

Niepodzielne zwiększa wartość przechowywaną w określonej lokalizacji pamięci.

inline int atomic_fetch_inc(_Inout_ int* _Dest) restrict(amp);

inline unsigned int atomic_fetch_inc(_Inout_ unsigned int* _Dest) restrict(amp);

Parametry

_Dest
Lokalizacja w pamięci wartości, która ma być zwiększana.

Wartość zwracana

Oryginalna wartość przechowywana w lokalizacji pamięci.

atomic_fetch_max

Niepodziealnie oblicza maksymalną wartość między wartością przechowywaną w lokalizacji pamięci określonej w pierwszym argumencie a wartością określoną w drugim argumencie i przechowuje ją w tej samej lokalizacji pamięci.

inline int atomic_fetch_max(
    _Inout_ int* _Dest,
    int value
    ) restrict(amp)

inline unsigned int atomic_fetch_max(
    _Inout_ unsigned int* _Dest,
    unsigned int value
    ) restrict(amp)

Parametry

_Dest
Lokalizacja, z której należy porównać jedną z wartości, jest odczytywana i do której mają być przechowywane maksymalnie dwie wartości.

wartość
Wartość, która ma być porównywana z wartością w określonej lokalizacji.

Wartość zwracana

Oryginalna wartość przechowywana w określonej lokalizacji.

atomic_fetch_min

Niepodziealnie oblicza wartość minimalną między wartością przechowywaną w lokalizacji pamięci określonej w pierwszym argumencie a wartością określoną w drugim argumencie i przechowuje ją w tej samej lokalizacji pamięci.

inline int atomic_fetch_min(
    _Inout_ int* _Dest,
    int value
    ) restrict(amp)

inline unsigned int atomic_fetch_min(
    _Inout_ unsigned int* _Dest,
    unsigned int value
    ) restrict(amp)

Parametry

_Dest
Lokalizacja, z której należy porównać jedną z wartości, jest odczytywana i do której mają być przechowywane co najmniej dwie wartości.

wartość
Wartość, która ma być porównywana z wartością w określonej lokalizacji.

Wartość zwracana

Oryginalna wartość przechowywana w określonej lokalizacji.

atomic_fetch_or, funkcja (C++ AMP)

Niepodzielne wykonuje bitową operację OR z wartością i wartością lokalizacji pamięci.

inline int atomic_fetch_or(
    _Inout_ int* _Dest,
    int value
    ) restrict(amp)

inline unsigned int atomic_fetch_or(
    _Inout_ unsigned int* _Dest,
    unsigned int value
    ) restrict(amp)

Parametry

_Dest
Wskaźnik do lokalizacji pamięci.

wartość
Wartość do użycia w obliczeniach bitowych OR.

Wartość zwracana

Oryginalna wartość lokalizacji pamięci.

atomic_fetch_sub, funkcja (C++ AMP)

Niepodzielne odejmowanie wartości z lokalizacji pamięci.

inline int atomic_fetch_sub(
    _Inout_ int* _Dest,
    int value
    ) restrict(amp)

inline unsigned int atomic_fetch_sub(
    _Inout_ unsigned int* _Dest,
    unsigned int value
    ) restrict(amp)

Parametry

_Dest
Wskaźnik do lokalizacji docelowej.

wartość
Wartość do odjęciu.

Wartość zwracana

Oryginalna wartość lokalizacji pamięci.

atomic_fetch_xor, funkcja (C++ AMP)

Niepodzielne wykonuje bitową operację XOR wartości i lokalizacji pamięci.

inline int atomic_fetch_xor(
    _Inout_ int* _Dest,
    int value
    ) restrict(amp)

inline unsigned int atomic_fetch_xor(
    _Inout_ unsigned int* _Dest,
    unsigned int value
    ) restrict(amp)

Parametry

_Dest
Wskaźnik do lokalizacji pamięci.

wartość
Wartość do użycia w obliczeniach XOR.

Wartość zwracana

Oryginalna wartość lokalizacji pamięci.

kopiowanie

Kopiuje obiekt C++ AMP. Wszystkie wymagania dotyczące synchronicznego transferu danych są spełnione. Nie można kopiować danych podczas uruchamiania kodu w akceleratorze. Ogólna forma tej funkcji to copy(src, dest).

template <typename value_type, int _Rank>
void copy(
    const array<value_type, _Rank>& _Src,
    array<value_type, _Rank>& _Dest);

template <typename InputIterator, typename value_type, int _Rank>
void copy(
    InputIterator _SrcFirst,
    InputIterator _SrcLast,
    array<value_type, _Rank>& _Dest);

template <typename InputIterator, typename value_type, int _Rank>
void copy(
    InputIterator _SrcFirst,
    array<value_type, _Rank>& _Dest);

template <typename OutputIterator, typename value_type, int _Rank>
void copy(
    const array<value_type, _Rank>& _Src,
   OutputIterator _DestIter);

template <typename value_type, int _Rank>
void copy(
    const array<value_type, _Rank>& _Src,
    array_view<value_type, _Rank>& _Dest);

template <typename value_type, int _Rank>
void copy(
    const array_view<const value_type, _Rank>& _Src,
    array<value_type, _Rank>& _Dest);

template <typename value_type, int _Rank>
void copy(
    const array_view<value_type, _Rank>& _Src,
    array<value_type, _Rank>& _Dest);

template <typename value_type, int _Rank>
void copy(
    const array_view<const value_type, _Rank>& _Src,
    array_view<value_type, _Rank>& _Dest);

template <typename value_type, int _Rank>
void copy(
    const array_view<value_type, _Rank>& _Src,
    array_view<value_type, _Rank>& _Dest);

template <typename InputIterator, typename value_type, int _Rank>
void copy(
    InputIterator _SrcFirst,
    InputIterator _SrcLast,
    array_view<value_type, _Rank>& _Dest);

template <typename InputIterator, typename value_type, int _Rank>
void copy(
    InputIterator _SrcFirst,
    array_view<value_type, _Rank>& _Dest);

template <typename OutputIterator, typename value_type, int _Rank>
void copy(
    const array_view<value_type, _Rank>& _Src,
    OutputIterator _DestIter);

Parametry

_Dest
Obiekt do skopiowania.

_DestIter
Iterator danych wyjściowych do pozycji początkowej w miejscu docelowym.

InputIterator
Typ iteratora wejściowego.

OutputIterator
Typ iteratora wyjściowego.

_Rank
Ranga obiektu do skopiowania z lub obiektu do skopiowania.

_Src
Aby obiekt skopiować.

_SrcFirst
Iterator początkowy do kontenera źródłowego.

_SrcLast
Iterator końcowy do kontenera źródłowego.

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

copy_async

Kopiuje obiekt C++ AMP i zwraca obiekt completion_future , na który można czekać. Nie można kopiować danych podczas uruchamiania kodu w akceleratorze. Ogólna forma tej funkcji to copy(src, dest).

template <typename value_type, int _Rank>
concurrency::completion_future copy_async(
    const array<value_type, _Rank>& _Src,
    array<value_type, _Rank>& _Dest);

template <typename InputIterator, typename value_type, int _Rank>
concurrency::completion_future copy_async(InputIterator _SrcFirst, InputIterator _SrcLast,
    array<value_type, _Rank>& _Dest);

template <typename InputIterator, typename value_type, int _Rank>
concurrency::completion_future copy_async(InputIterator _SrcFirst,
    array<value_type, _Rank>& _Dest);

template <typename OutputIterator, typename value_type, int _Rank>
concurrency::completion_future copy_async(
    const array<value_type, _Rank>& _Src, OutputIterator _DestIter);

template <typename value_type, int _Rank>
concurrency::completion_future copy_async(
    const array<value_type, _Rank>& _Src,
    array_view<value_type, _Rank>& _Dest);

template <typename value_type, int _Rank>
concurrency::completion_future copy_async(
    const array_view<const value_type, _Rank>& _Src,
    array<value_type, _Rank>& _Dest);

template <typename value_type, int _Rank>
concurrency::completion_future copy_async(
    const array_view<value_type, _Rank>& _Src,
    array<value_type, _Rank>& _Dest);

template <typename value_type, int _Rank>
concurrency::completion_future copy_async(
    const array_view<const value_type, _Rank>& _Src,
    array_view<value_type, _Rank>& _Dest);

template <typename value_type, int _Rank>
concurrency::completion_future copy_async(
    const array_view<value_type, _Rank>& _Src,
    array_view<value_type, _Rank>& _Dest);

template <typename InputIterator, typename value_type, int _Rank>
concurrency::completion_future copy_async(InputIterator _SrcFirst, InputIterator _SrcLast,
    array_view<value_type, _Rank>& _Dest);

template <typename InputIterator, typename value_type, int _Rank>
concurrency::completion_future copy_async(InputIterator _SrcFirst,
    array_view<value_type, _Rank>& _Dest);

template <typename OutputIterator, typename value_type, int _Rank>
concurrency::completion_future copy_async(
    const array_view<value_type, _Rank>& _Src, OutputIterator _DestIter);

Parametry

_Dest
Obiekt do skopiowania.

_DestIter
Iterator danych wyjściowych do pozycji początkowej w miejscu docelowym.

InputIterator
Typ iteratora wejściowego.

OutputIterator
Typ iteratora wyjściowego.

_Rank
Ranga obiektu do skopiowania z lub obiektu do skopiowania.

_Src
Aby obiekt skopiować.

_SrcFirst
Iterator początkowy do kontenera źródłowego.

_SrcLast
Iterator końcowy do kontenera źródłowego.

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

Wartość zwracana

Element future<void> , który można zaczekać.

direct3d_abort

Przerywa wykonywanie funkcji z klauzulą restrict(amp) ograniczenia. Gdy środowisko uruchomieniowe AMP wykryje wywołanie, zgłasza runtime_exception wyjątek z komunikatem o błędzie "Odwołanie do rasterizatora: uściślić instrukcję abort".

void direct3d_abort() restrict(amp);

direct3d_errorf

Drukuje sformatowany ciąg w oknie danych wyjściowych programu Visual Studio. Jest wywoływana z funkcji z klauzulą restrict(amp) ograniczenia. Gdy środowisko uruchomieniowe AMP wykryje wywołanie, zgłasza wyjątek runtime_exception z tym samym ciągiem formatowania.

void direct3d_errorf(
    const char *,
...) restrict(amp);

direct3d_printf

Drukuje sformatowany ciąg w oknie danych wyjściowych programu Visual Studio. Jest wywoływana z funkcji z klauzulą restrict(amp) ograniczenia.

void direct3d_printf(
    const char *,
...) restrict(amp);

global_memory_fence

Blokuje wykonywanie wszystkich wątków na kafelku do momentu ukończenia dostępu do całej pamięci globalnej. Dzięki temu dostęp do pamięci globalnej jest widoczny dla innych wątków na kafelku wątku i jest wykonywany w kolejności programu.

inline void global_memory_fence(const tile_barrier& _Barrier) restrict(amp);

Parametry

_Barierę
Obiekt tile_barrier

parallel_for_each, funkcja (C++ AMP)

Uruchamia funkcję w domenie obliczeniowej. Aby uzyskać więcej informacji, zobacz C++ AMP Overview (Omówienie języka C++ AMP).

template <int _Rank, typename _Kernel_type>
void parallel_for_each(
    const extent<_Rank>& _Compute_domain,
    const _Kernel_type& _Kernel);

template <int _Dim0, int _Dim1, int _Dim2, typename _Kernel_type>
void parallel_for_each(
    const tiled_extent<_Dim0, _Dim1, _Dim2>& _Compute_domain,
   const _Kernel_type& _Kernel);

template <int _Dim0, int _Dim1, typename _Kernel_type>
void parallel_for_each(
    const tiled_extent<_Dim0, _Dim1>& _Compute_domain,
    const _Kernel_type& _Kernel);

template <int _Dim0, typename _Kernel_type>
void parallel_for_each(
    const tiled_extent<_Dim0>& _Compute_domain,
    const _Kernel_type& _Kernel);

template <int _Rank, typename _Kernel_type>
void parallel_for_each(
    const accelerator_view& _Accl_view,
    const extent<_Rank>& _Compute_domain,
    const _Kernel_type& _Kernel);

template <int _Dim0, int _Dim1, int _Dim2, typename _Kernel_type>
void parallel_for_each(
    const accelerator_view& _Accl_view,
    const tiled_extent<_Dim0, _Dim1, _Dim2>& _Compute_domain,
    const _Kernel_type& _Kernel);

template <int _Dim0, int _Dim1, typename _Kernel_type>
void parallel_for_each(
    const accelerator_view& _Accl_view,
    const tiled_extent<_Dim0, _Dim1>& _Compute_domain,
    const _Kernel_type& _Kernel);

template <int _Dim0, typename _Kernel_type>
void parallel_for_each(
    const accelerator_view& _Accl_view,
    const tiled_extent<_Dim0>& _Compute_domain,
    const _Kernel_type& _Kernel);

Parametry

_Accl_view
Obiekt accelerator_view do uruchamiania obliczeń równoległych.

_Compute_domain
extent Obiekt, który zawiera dane obliczeń.

_Dim0
Wymiar tiled_extent obiektu.

_Dim1
Wymiar tiled_extent obiektu.

_Dim2
Wymiar tiled_extent obiektu.

_Jądra
Obiekt lambda lub funkcji, który przyjmuje argument typu "index<_Rank>" i wykonuje obliczenia równoległe.

_Kernel_type
Lambda lub functor.

_Rank
Ranga zakresu.

tile_static_memory_fence

Blokuje wykonywanie wszystkich wątków na kafelku do momentu ukończenia wszystkich zaległych tile_static dostępu do pamięci. Gwarantuje to, że tile_static dostęp do pamięci jest widoczny dla innych wątków na kafelku wątku i że dostępy są wykonywane w kolejności programu.

inline void tile_static_memory_fence(const tile_barrier& _Barrier) restrict(amp);

Parametry

_Barierę
Obiekt tile_barrier.

Zobacz też

Przestrzeń nazw współbieżności (C++ AMP)