Freigeben über


Concurrency-Namespace (C++ AMP)

Stellt Klassen und Funktionen bereit, die die Ausführung von C++-Code auf datenparalleler Hardware beschleunigen. Weitere Informationen finden Sie unter C++ AMP Overview

Syntax

namespace Concurrency;

Mitglieder

Namespaces

Name Beschreibung
Concurrency::direct3d-Namespace Stellt Funktionen bereit, welche die D3D-Interoperabilität unterstützen. Ermöglicht die einfache Verwendung von D3D-Ressourcen für Berechnungen in AMP-Code sowie die Verwendung von in AMP erstellten Ressourcen in D3D-Code, ohne dass redundante Zwischenkopien erstellt werden. Sie können C++ AMP verwenden, um die berechnungsintensiven Abschnitte Ihrer DirectX-Anwendungen inkrementell zu beschleunigen und die D3D-API für Daten nutzen, die aus AMP-Berechnungen resultieren.
Concurrency::fast_math Namespace Funktionen im fast_math Namespace sind nicht C99-konform. Für jede Funktion werden nur Versionen mit einfacher Genauigkeit bereitgestellt. Diese Funktionen verwenden die intrinsischen DirectX-Funktionen, die schneller sind als die entsprechenden Funktionen im precise_math-Namespace und keine Unterstützung für doppelte Genauigkeit auf dem Beschleuniger erfordern, sie sind jedoch weniger genau. Für jede Funktion gibt es zwei Versionen für Kompatibilität auf Quellcode-Ebene mit C99-Code. Beide Versionen akzeptieren und geben Einzelpräzisionswerte zurück.
Concurrency::Graphics-Namespace Stellt Typen und Funktionen bereit, die für die Grafikprogrammierung vorgesehen sind.
Concurrency::precise_math Namespace Funktionen im precise_math Namespace sind C99-konform. Für jede Funktion sind Versionen mit einfacher und doppelter Genauigkeit enthalten. Diese Funktionen – einschließlich der Einfachpräzisionsfunktionen – erfordern erweiterte Unterstützung bei doppelter Genauigkeit auf dem Beschleuniger.

Klassen

Name Beschreibung
Accelerator-Klasse Stellt eine Abstraktion eines physischen DP-optimierten Rechenknotens dar.
Accelerator-View-Klasse Stellt die Abstraktion eines virtuellen Geräts für einen datenparallelen C++ AMP-Beschleuniger dar.
accelerator_view_removed-Klasse Die Ausnahme, die ausgelöst wird, wenn ein zugrunde liegender DirectX-Aufruf aufgrund des Windows-TDR-Mechanismus (Timeout Detection and Recovery) fehlschlägt.
array-Klasse Ein Datenaggregat auf einem accelerator_view-Objekt in der Rasterdomäne. Es ist eine Auflistung von Variablen, eine für jedes Element in einer "grid"-Domäne. Jede Variable enthält einen Wert, der einem C++-Typ entspricht.
array_view-Klasse Stellt eine Ansicht der Daten in einem Array<T,N> dar.
completion_future Klasse Stellt ein "Future"-Objekt dar, das einem asynchronen Vorgang in C++ AMP entspricht.
Extent-Klasse Stellt einen Vektor von n ganzzahligen Werten dar, die die Grenzen eines n-dimensionalen Raums mit dem Ursprung 0 angeben. Die Werte im Koordinatenvektor sind vom wichtigsten zum am wenigsten wichtigen Wert sortiert. Im kartesischen 3-dimensionalen Raum stellt der "extent"-Vektor (7,5,3) beispielsweise einen Raum dar, in dem die z-Koordinate im Bereich von 0 bis 7, die y-Koordinate im Bereich von 0 bis 5 und die x-Koordinate im Bereich von 0 bis 3 liegt.
index-Klasse Definiert einen n-dimensionalen Indexpunkt.
invalid_compute_domain-Klasse Die Ausnahme, die ausgelöst wird, wenn die Laufzeit einen Kernel nicht mithilfe der "compute"-Domäne starten kann, die auf der parallel_for_each-Aufrufsite angegeben wird.
out_of_memory-Klasse Die Ausnahme, die ausgelöst wird, wenn eine Methode aufgrund unzureichenden System- oder Gerätearbeitsspeichers fehlschlägt.
runtime_exception-Klasse Der Basistyp für Ausnahmen in der C++ AMP-Bibliothek.
TileBarrier-Klasse Eine Fähigkeitsklasse, die nur vom System erstellt werden kann und einem unterteilten parallel_for_each-Lambda als Bestandteil des tiled_index-Parameters übergeben wird. Sie stellt eine einzige Methode, die Methode wait(), bereit, die dazu dient, die Ausführung von Threads zu synchronisieren, die in der Threadgruppe (Kachel) ausgeführt werden.
tiled_extent-Klasse Ein tiled_extent-Objekt ist ein extent-Objekt mit einer bis zu drei Dimensionen, das den Raum in ein-, zwei- oder dreidimensionale Kacheln unterteilt.
tiled_index-Klasse Stellt einen Index für ein tiled_grid-Objekt bereit. Diese Klasse verfügt über Eigenschaften, über die auf ein Element relativ zum lokalen Kachelursprung und relativ zum globalen Ursprung zugegriffen werden kann.
Uninitialized_Object-Klasse Die Ausnahme, die ausgelöst wird, wenn ein nicht initialisiertes Objekt verwendet wird.
unsupported_feature-Klasse Die Ausnahme, die ausgelöst wird, wenn eine nicht unterstützte Funktion verwendet wird.

Enumerationen

Name Beschreibung
access_type-Aufzählung Gibt den Datenzugriffstyp an.
queuing_mode-Aufzählung Gibt die auf dem Beschleuniger unterstützten Warteschlangenmodi an.

Operatoren

Operator Beschreibung
operator== Operator (C++ AMP) Bestimmt, ob die angegebenen Datenstrukturen gleich sind.
operator!= Operator (C++ AMP) Bestimmt, ob die angegebenen Datenstrukturen ungleich sind.
operator+ Operator (C++ AMP) Berechnet die komponentenbezogene Summe der angegebenen Argumente.
operator- Operator (C++ AMP) Berechnet die Differenz zwischen den angegebenen Argumenten pro Komponente.
operator* Operator (C++ AMP) Berechnet das komponentenbezogene Produkt der angegebenen Argumente.
Operator/ Operator (C++ AMP) Berechnet den komponentenbezogenen Quotienten der angegebenen Argumente.
Operator% Operator (C++ AMP) Berechnet den Modul des angegebenen ersten Arguments dividiert durch das zweite angegebene Argument.

Funktionen

Name Beschreibung
all_memory_fence Blockiert die Ausführung aller Threads in einer Kachel, bis alle Speicherzugriffe abgeschlossen sind.
amp_uninitialize Hebt die Initialisierung der C++ AMP-Laufzeit auf.
atomic_compare_exchange Überladen. Wenn der Wert, der am angegebenen Speicherort abgelegt ist, mit dem ersten angegebenen Wert übereinstimmt, wird der zweite angegebene Wert als atomischen Vorgang an demselben Speicherort abgelegt.
atomic_exchange Überladen. Legt den Wert, der am angegebenen Speicherort abgelegt ist, als atomischen Vorgang auf den angegebenen Wert fest.
atomic_fetch_add Überladen. Legt den Wert, der am angegebenen Speicherort abgelegt ist, als atomischen Vorgang auf die Summe dieses Werts und auf einen angegebenen Wert fest.
atomic_fetch_and Überladen. Legt den Wert, der am angegebenen Speicherort abgelegt ist, als atomischen Vorgang auf das bitweise and dieses Werts und auf einen angegebenen Wert fest.
atomic_fetch_dec Überladen. Dekrementiert den Wert, der am angegebenen Speicherort abgelegt ist, und speichert das Ergebnis als atomischen Vorgang an demselben Speicherort.
atomic_fetch_inc Überladen. Inkrementiert den Wert, der am angegebenen Speicherort abgelegt ist, und speichert das Ergebnis als atomischen Vorgang an demselben Speicherort.
atomic_fetch_max Überladen. Legt den Wert, der am angegebenen Speicherort gespeichert ist, als atomare Operation auf den größeren der beiden Werte fest: den dort gespeicherten Wert oder einen angegebenen Wert.
atomic_fetch_min Überladen. Legt den am angegebenen Speicherort gespeicherten Wert als atomare Operation auf den kleineren Wert von diesem und einem angegebenen Wert fest.
atomic_fetch_or Überladen. Legt den Wert, der am angegebenen Speicherort abgelegt ist, als atomischen Vorgang auf das bitweise or dieses Werts und auf einen angegebenen Wert fest.
atomic_fetch_sub Überladen. Legt den Wert, der am angegebenen Speicherort abgelegt ist, als atomischen Vorgang auf die Differenz dieses Werts und auf einen angegebenen Wert fest.
atomic_fetch_xor Überladen. Legt den Wert, der am angegebenen Speicherort abgelegt ist, als atomischen Vorgang auf das bitweise xor dieses Werts und auf einen angegebenen Wert fest.
kopieren Kopiert ein C++ AMP-Objekt. Alle Anforderungen der synchronen Datenübertragung werden erfüllt. Es können keine Daten kopiert werden, wenn Code auf einem Beschleuniger ausgeführt wird. Das allgemeine Format dieser Funktion ist copy(src, dest).
copy_async Kopiert ein C++AMP-Objekt und gibt completion_future zurück, auf die gewartet werden kann. Es können keine Daten kopiert werden, wenn Code auf einem Beschleuniger ausgeführt wird. Das allgemeine Format dieser Funktion ist copy(src, dest).
direct3d_abort Bricht die Ausführung einer Funktion mit der Einschränkungsklausel restrict(amp) ab.
direct3d_errorf Druckt eine formatierte Zeichenfolge in das Visual Studio Ausgabefenster und löst eine runtime_exception Ausnahme aus, die dieselbe Formatierungszeichenfolge verwendet.
direct3d_printf Druckt eine formatierte Zeichenfolge in das Visual Studio Ausgabefenster. Sie wird von einer Funktion mit der Einschränkungsklausel restrict(amp) aufgerufen.
global_memory_fence Blockiert die Ausführung aller Threads in einer Kachel, bis alle globalen Speicherzugriffe abgeschlossen sind.
parallel_for_each-Funktion (C++ AMP) Führt eine Funktion in der Rechendomäne aus.
tile_static_memory_fence Blockiert die Ausführung aller Threads in einer Kachel, bis alle Speicherzugriffe vom Typ tile_static abgeschlossen sind.

Konstanten

Name Beschreibung
HLSL_MAX_NUM_BUFFERS Konstante Die maximale Anzahl der von DirectX zugelassenen Puffer.
MODULENAME_MAX_LENGTH Konstante Speichert die maximale Länge des Modulnamens. Dieser Wert muss für den Compiler und die Laufzeit identisch sein.

Anforderungen

Kopfzeile: amp.h

Siehe auch

Referenz (C++ AMP)