Sdílet prostřednictvím


Funkce oboru názvů Concurrency (AMP)

all_memory_fence

Blokuje provádění všech vláken na dlaždici, dokud se nedokončí všechny přístupy k paměti. Tím zajistíte, že všechny přístupy k paměti budou viditelné pro ostatní vlákna na dlaždici vlákna a budou spuštěny v pořadí programu.

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

Parametry

_Bariéra
Objekt tile_barrier .

amp_uninitialize

Neinicializuje modul runtime C++ AMP. Je legální tuto funkci volat vícekrát během životnosti aplikací. Volání libovolného rozhraní API C++ AMP po volání této funkce znovu inicializuje modul runtime C++ AMP. Všimněte si, že použití objektů C++ AMP napříč voláními této funkce je neplatné a výsledkem bude nedefinované chování. Souběžné volání této funkce a všech dalších rozhraní API AMP je také neplatné a výsledkem by bylo nedefinované chování.

void __cdecl amp_uninitialize();

atomic_compare_exchange

Atomicky porovná hodnotu uloženou v umístění paměti určeném v prvním argumentu pro rovnost s hodnotou druhého zadaného argumentu a pokud jsou hodnoty stejné, hodnota v umístění paměti se změní na hodnotu třetího zadaného 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
Umístění, ze kterého se má porovnat jedna z hodnot, je přečteno a na které se má nová hodnota (pokud existuje) uložit.

_Expected_value
Umístění, ze kterého se má porovnávat druhá hodnota, se čte.

value
Hodnota, která se má uložit do umístění paměti zadaného _Dest v případě _Dest , že je rovna _Expected_value.

Vrácená hodnota

trueje-li operace úspěšná; v opačném případě . false

funkce atomic_exchange (C++ AMP)

Nastaví hodnotu cílového umístění jako atomické operace.

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
Ukazatel na cílové umístění.

value
Nová hodnota.

Vrácená hodnota

Původní hodnota cílového umístění.

funkce atomic_fetch_add (C++ AMP)

Atomicky přidejte hodnotu k hodnotě umístění paměti.

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
Ukazatel na umístění paměti.

value
Hodnota, která se má přidat.

Vrácená hodnota

Původní hodnota umístění paměti.

funkce atomic_fetch_and (C++ AMP)

Atomicky provádí bitové operace AND hodnoty a hodnoty umístění paměti.

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
Ukazatel na umístění paměti.

value
Hodnota, kterou chcete použít ve bitovém výpočtu AND.

Vrácená hodnota

Původní hodnota umístění paměti.

atomic_fetch_dec

Atomicky dekrementuje hodnotu uloženou v zadaném umístění paměti.

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

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

Parametry

_Dest
Umístění v paměti hodnoty, která se má dekrementovat.

Vrácená hodnota

Původní hodnota uložená v umístění paměti.

atomic_fetch_inc

Atomicky zvýší hodnotu uloženou v zadaném umístění paměti.

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

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

Parametry

_Dest
Umístění v paměti hodnoty, která se má zvýšit.

Vrácená hodnota

Původní hodnota uložená v umístění paměti.

atomic_fetch_max

Atomicky vypočítá maximální hodnotu mezi hodnotou uloženou v umístění paměti zadaném v prvním argumentu a hodnotou zadanou v druhém argumentu a uloží ji do stejného umístění paměti.

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
Umístění, ze kterého se má porovnat jedna z hodnot, je přečteno a na které se má uložit maximum těchto dvou hodnot.

value
Hodnota, která se má porovnat s hodnotou v zadaném umístění.

Vrácená hodnota

Původní hodnota uložená v zadaném umístění.

atomic_fetch_min

Atomicky vypočítá minimální hodnotu mezi hodnotou uloženou v umístění paměti zadaném v prvním argumentu a hodnotou zadanou v druhém argumentu a uloží ji do stejného umístění paměti.

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
Umístění, ze kterého se má porovnat jedna z hodnot, je přečteno a na které se má uložit minimum těchto dvou hodnot.

value
Hodnota, která se má porovnat s hodnotou v zadaném umístění.

Vrácená hodnota

Původní hodnota uložená v zadaném umístění.

atomic_fetch_or funkce (C++ AMP)

Atomicky provádí bitové operace OR s hodnotou a hodnotou umístění paměti.

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
Ukazatel na umístění paměti.

value
Hodnota, kterou chcete použít ve bitovém výpočtu OR.

Vrácená hodnota

Původní hodnota umístění paměti.

funkce atomic_fetch_sub (C++ AMP)

Atomicky odečte hodnotu z umístění paměti.

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
Ukazatel na cílové umístění.

value
Hodnota, která se má odečíst.

Vrácená hodnota

Původní hodnota umístění paměti.

funkce atomic_fetch_xor (C++ AMP)

Atomicky provádí bitové operace XOR hodnoty a umístění paměti.

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
Ukazatel na umístění paměti.

value
Hodnota, kterou chcete použít ve výpočtu XOR.

Vrácená hodnota

Původní hodnota umístění paměti.

kopírování

Zkopíruje objekt C++ AMP. Jsou splněny všechny synchronní požadavky na přenos dat. Při spouštění kódu v akcelerátoru nemůžete kopírovat data. Obecná forma této funkce je 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
Objekt, do který chcete kopírovat.

_DestIter
Výstupní iterátor na počáteční pozici v cíli.

InputIterator
Typ vstupního iterátoru.

OutputIterator
Typ výstupního iterátoru.

_Hodnost
Pořadí objektu, do které se má kopírovat, nebo z objektu, do které se má kopírovat.

_Src
Chcete-li objekt kopírovat.

_SrcFirst
Počáteční iterátor do zdrojového kontejneru.

_SrcLast
Koncový iterátor do zdrojového kontejneru.

value_type
Datový typ prvků, které jsou zkopírovány.

copy_async

Zkopíruje objekt C++ AMP a vrátí completion_future objekt, na který lze čekat. Při spouštění kódu v akcelerátoru nemůžete kopírovat data. Obecná forma této funkce je 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
Objekt, do který chcete kopírovat.

_DestIter
Výstupní iterátor na počáteční pozici v cíli.

InputIterator
Typ vstupního iterátoru.

OutputIterator
Typ výstupního iterátoru.

_Hodnost
Pořadí objektu, do které se má kopírovat, nebo z objektu, do které se má kopírovat.

_Src
Chcete-li objekt kopírovat.

_SrcFirst
Počáteční iterátor do zdrojového kontejneru.

_SrcLast
Koncový iterátor do zdrojového kontejneru.

value_type
Datový typ prvků, které jsou zkopírovány.

Vrácená hodnota

Na future<void> to může čekat.

direct3d_abort

Přeruší provádění funkce klauzulí restrict(amp) omezení. Když modul runtime AMP zjistí volání, vyvolá výjimku runtime_exception s chybovou zprávou Reference Rasterizer: Shader abort instrukce hit.

void direct3d_abort() restrict(amp);

direct3d_errorf

Vytiskne formátovaný řetězec do okna výstupu sady Visual Studio. Volá se z funkce s klauzulí restrict(amp) omezení. Když modul runtime AMP zjistí volání, vyvolá runtime_exception výjimku se stejným řetězcem formátování.

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

direct3d_printf

Vytiskne formátovaný řetězec do okna výstupu sady Visual Studio. Volá se z funkce s klauzulí restrict(amp) omezení.

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

global_memory_fence

Blokuje provádění všech vláken na dlaždici, dokud se nedokončí všechny globální přístupy k paměti. Tím zajistíte, že globální přístupy k paměti budou viditelné pro jiná vlákna na dlaždici vlákna a budou spuštěny v pořadí programu.

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

Parametry

_Bariéra
Objekt tile_barrier

funkce parallel_for_each (C++ AMP)

Spustí funkci napříč výpočetní doménou. Další informace naleznete v tématu Přehled 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
Objekt accelerator_view pro spuštění paralelního výpočtu.

_Compute_domain
Objekt extent , který obsahuje data pro výpočet.

_Dim0
Rozměr objektu tiled_extent .

_Dim1
Rozměr objektu tiled_extent .

_Dim2
Rozměr objektu tiled_extent .

_Jádra
Lambda nebo objekt funkce, který přebírá argument typu "index<_Rank>" a provádí paralelní výpočty.

_Kernel_type
Lambda nebo functor.

_Hodnost
Pořadí rozsahu.

tile_static_memory_fence

Blokuje provádění všech vláken na dlaždici, dokud se nedokončí všechny nevyrovnané tile_static přístupy k paměti. Tím zajistíte, že tile_static přístupy k paměti budou viditelné pro jiná vlákna na dlaždici vlákna a že se přístupy spustí v pořadí programu.

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

Parametry

_Bariéra
Objekt tile_barrier.

Viz také

Obor názvů Concurrency (C++ AMP)