Share via


Fungsi namespace konkurensi (AMP)

all_memory_fence

Memblokir eksekusi semua utas dalam petak hingga semua akses memori selesai. Ini memastikan bahwa semua akses memori terlihat oleh utas lain dalam utas, dan dijalankan dalam urutan program.

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

Parameter

_Barrier
Objek tile_barrier.

amp_uninitialize

Membatalkan inisialisasi runtime C++ AMP. Adalah legal untuk memanggil fungsi ini beberapa kali selama masa pakai aplikasi. Memanggil C++ AMP API apa pun setelah memanggil fungsi ini akan menginisialisasi ulang runtime C++ AMP. Perhatikan bahwa tidak sah menggunakan objek C++ AMP di seluruh panggilan ke fungsi ini dan melakukannya akan mengakibatkan perilaku yang tidak terdefinisi. Selain itu, secara bersamaan memanggil fungsi ini dan API AMP lainnya ilegal dan akan mengakibatkan perilaku yang tidak terdefinisi.

void __cdecl amp_uninitialize();

atomic_compare_exchange

Secara atom membandingkan nilai yang disimpan di lokasi memori yang ditentukan dalam argumen pertama untuk kesetaraan dengan nilai argumen kedua yang ditentukan, dan jika nilainya sama, nilai di lokasi memori diubah ke argumen ketiga yang ditentukan.

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)

Parameter

_Dest
Lokasi dari mana salah satu nilai yang akan dibandingkan dibaca, dan ke mana nilai baru, jika ada, akan disimpan.

_Expected_value
Lokasi dari mana nilai kedua yang akan dibandingkan dibaca.

value
Nilai yang akan disimpan ke lokasi memori yang ditentukan oleh jika _Dest sama dengan ._Dest_Expected_value

Tampilkan Nilai

true jika operasi berhasil; jika tidak, false.

Fungsi atomic_exchange (C++ AMP)

Menetapkan nilai lokasi tujuan sebagai operasi atom.

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)

Parameter

_Dest
Penunjuk ke lokasi tujuan.

value
Nilai baru.

Tampilkan Nilai

Nilai asli lokasi tujuan.

Fungsi atomic_fetch_add (C++ AMP)

Tambahkan nilai secara atomik ke nilai lokasi memori.

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)

Parameter

_Dest
Penunjuk ke lokasi memori.

value
Nilai yang akan ditambahkan.

Tampilkan Nilai

Nilai asli lokasi memori.

Fungsi atomic_fetch_and (C++ AMP)

Secara atomik melakukan operasi bitwise AND dari nilai dan nilai lokasi memori.

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)

Parameter

_Dest
Penunjuk ke lokasi memori.

value
Nilai yang digunakan dalam perhitungan BITWISE AND.

Tampilkan Nilai

Nilai asli lokasi memori.

atomic_fetch_dec

Secara atomik mengurangi nilai yang disimpan di lokasi memori yang ditentukan.

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

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

Parameter

_Dest
Lokasi dalam memori nilai yang akan diderementasi.

Tampilkan Nilai

Nilai asli disimpan di lokasi memori.

atomic_fetch_inc

Secara atomik menaikkan nilai yang disimpan di lokasi memori yang ditentukan.

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

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

Parameter

_Dest
Lokasi dalam memori nilai yang akan dinaikkan.

Tampilkan Nilai

Nilai asli disimpan di lokasi memori.

atomic_fetch_max

Secara atom menghitung nilai maksimum antara nilai yang disimpan di lokasi memori yang ditentukan dalam argumen pertama dan nilai yang ditentukan dalam argumen kedua, dan menyimpannya di lokasi memori yang sama.

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)

Parameter

_Dest
Lokasi dari mana salah satu nilai yang akan dibandingkan dibaca, dan yang maksimum dari dua nilai akan disimpan.

value
Nilai yang akan dibandingkan dengan nilai di lokasi yang ditentukan.

Tampilkan Nilai

Nilai asli disimpan di lokasi yang ditentukan.

atomic_fetch_min

Secara atomik menghitung nilai minimum antara nilai yang disimpan di lokasi memori yang ditentukan dalam argumen pertama dan nilai yang ditentukan dalam argumen kedua, dan menyimpannya di lokasi memori yang sama.

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)

Parameter

_Dest
Lokasi dari mana salah satu nilai yang akan dibandingkan dibaca, dan yang minimum dari dua nilai akan disimpan.

value
Nilai yang akan dibandingkan dengan nilai di lokasi yang ditentukan.

Tampilkan Nilai

Nilai asli disimpan di lokasi yang ditentukan.

Fungsi atomic_fetch_or (C++ AMP)

Secara atomik melakukan operasi BITWISE OR dengan nilai dan nilai lokasi memori.

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)

Parameter

_Dest
Penunjuk ke lokasi memori.

value
Nilai yang digunakan dalam perhitungan BITWISE OR.

Tampilkan Nilai

Nilai asli lokasi memori.

Fungsi atomic_fetch_sub (C++ AMP)

Secara atom mengurangi nilai dari lokasi memori.

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)

Parameter

_Dest
Penunjuk ke lokasi tujuan.

value
Nilai yang akan dikurangi.

Tampilkan Nilai

Nilai asli lokasi memori.

Fungsi atomic_fetch_xor (C++ AMP)

Secara atomis melakukan operasi XOR bitwise dari nilai dan lokasi memori.

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)

Parameter

_Dest
Penunjuk ke lokasi memori.

value
Nilai yang akan digunakan dalam perhitungan XOR.

Tampilkan Nilai

Nilai asli lokasi memori.

menyalin

Menyalin objek AMP C++. Semua persyaratan transfer data sinkron terpenuhi. Anda tidak dapat menyalin data saat menjalankan kode pada akselerator. Bentuk umum dari fungsi ini adalah 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);

Parameter

_Dest
Objek yang akan disalin.

_DestIter
Iterator output ke posisi awal di tujuan.

InputIterator
Jenis iterator input.

OutputIterator
Jenis iterator output.

_Rank
Peringkat objek yang akan disalin dari atau objek yang akan disalin.

_Src
Untuk objek yang akan disalin.

_SrcFirst
Iterator awal ke dalam kontainer sumber.

_SrcLast
Iterator akhir ke dalam kontainer sumber.

value_type
Jenis data elemen yang disalin.

copy_async

Menyalin objek C++ AMP dan mengembalikan objek completion_future yang dapat ditunggu. Anda tidak dapat menyalin data saat menjalankan kode pada akselerator. Bentuk umum dari fungsi ini adalah 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);

Parameter

_Dest
Objek yang akan disalin.

_DestIter
Iterator output ke posisi awal di tujuan.

InputIterator
Jenis iterator input.

OutputIterator
Jenis iterator output.

_Rank
Peringkat objek yang akan disalin dari atau objek yang akan disalin.

_Src
Untuk objek yang akan disalin.

_SrcFirst
Iterator awal ke dalam kontainer sumber.

_SrcLast
Iterator akhir ke dalam kontainer sumber.

value_type
Jenis data elemen yang disalin.

Tampilkan Nilai

Yang future<void> bisa ditunggu.

direct3d_abort

Membatalkan eksekusi fungsi dengan restrict(amp) klausul pembatasan. Saat runtime AMP mendeteksi panggilan, itu menimbulkan pengecualian runtime_exception dengan pesan kesalahan "Reference Rasterizer: Shader abort instruction hit".

void direct3d_abort() restrict(amp);

direct3d_errorf

Mencetak string yang diformat ke jendela output Visual Studio. Ini dipanggil dari fungsi dengan restrict(amp) klausul pembatasan. Saat runtime AMP mendeteksi panggilan, runtime tersebut memunculkan pengecualian runtime_exception dengan string pemformatan yang sama.

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

direct3d_printf

Mencetak string yang diformat ke jendela output Visual Studio. Ini dipanggil dari fungsi dengan restrict(amp) klausul pembatasan.

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

global_memory_fence

Memblokir eksekusi semua utas dalam petak hingga semua akses memori global selesai. Ini memastikan bahwa akses memori global terlihat oleh utas lain dalam utas, dan dijalankan dalam urutan program.

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

Parameter

_Barrier
Objek tile_barrier

Fungsi parallel_for_each (C++ AMP)

Menjalankan fungsi di seluruh domain komputasi. Untuk informasi selengkapnya, lihat Gambaran Umum 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);

Parameter

_Accl_view
Objek accelerator_view untuk menjalankan komputasi paralel.

_Compute_domain
Objek extent yang berisi data untuk komputasi.

_Dim0
Dimensi tiled_extent objek.

_Dim1
Dimensi tiled_extent objek.

_Dim2
Dimensi tiled_extent objek.

_Kernel
Objek lambda atau fungsi yang mengambil argumen jenis "indeks<_Rank>" dan melakukan komputasi paralel.

_Kernel_type
Lambda atau functor.

_Rank
Pangkat sejauh ini.

tile_static_memory_fence

Memblokir eksekusi semua utas dalam petak hingga semua akses memori yang tile_static luar biasa telah selesai. Ini memastikan bahwa tile_static akses memori terlihat oleh utas lain di ubin utas, dan bahwa akses dijalankan dalam urutan program.

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

Parameter

_Barrier
Objek tile_barrier.

Baca juga

Namespace Konkurensi (C++ AMP)