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
.
Návratová hodnota
true
je-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.
Návratová 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.
Návratová 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.
Návratová 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.
Návratová 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.
Návratová 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í.
Návratová 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í.
Návratová 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.
Návratová 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.
Návratová 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.
Návratová 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.
Návratová 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ádro
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.