DEENESPTFRRUARHIKOZHNL

module ara::shwa — Safe Hardware Acceleration

Diese Seite wurde vollständig KI-generiert auf Basis von SWS Safe Hardware Acceleration (R25-11) — kein offizieller AUTOSAR-Text und keine automatisch extrahierte API-Seite wie die übrigen Module. Als Interpretation gekennzeichnete Aussagen sind Schlussfolgerungen aus den Quellen.

Guide du moduleGÉNÉRÉ PAR IA

Permet l'utilisation sûre et standardisée d'accélérateurs matériels hétérogènes pour des calculs parallèles aux données.
GÉNÉRÉ PAR IA non vérifié Modèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : cc6d229c7f27 Provenance Questions ouvertes (1)
Ancre causale : R25-11 Valable à partir de R25-11 Synthétisé pour cette version de spécification.
traduit du guide allemandGénéré par l'IAgemini-3.8-flash-low · 2026-10-13 · Original allemand

Permet l'utilisation sûre et standardisée d'accélérateurs matériels hétérogènes pour des calculs parallèles aux données.

Le cluster adaptatif shwa fournit une bibliothèque locale au processus pour le pilotage fonctionnellement sûr d'accélérateurs de calcul hétérogènes tels que les GPU et les NPU (AUTOSAR_AP_EXP_SWArchitecture p. 127). Il permet la sélection indépendante du périphérique des unités d'exécution, la gestion de tampons de mémoire n-dimensionnels ainsi que la mise en file d'attente asynchrone de tâches de calcul parallèles via des files d'attente d'exécution ([AP_SWS_SHWA_00309], [AP_SWS_SHWA_00912]). En cas d'erreurs d'exécution de tâches, aucune sémantique de rollback n'existe, raison pour laquelle les données de tampon concernées sont considérées comme modifiées de manière indéterminée ([AP_SWS_SHWA_00604]).

Le cluster fonctionnel Safe Hardware Acceleration (shwa) fournit pour l'AUTOSAR Adaptive Platform un modèle d'exécution standardisé et fonctionnellement sûr pour les unités de calcul hétérogènes telles que les GPU, les NPU, les DSP et les FPGA (AUTOSAR_AP_EXP_SWArchitecture p. 132). Implémenté sous forme de bibliothèque intégrée au processus (In-Process), shwa permet aux Adaptive Applications ainsi qu'à d'autres clusters fonctionnels de contrôler directement et sans latence les ressources de calcul haute performance (AUTOSAR_AP_EXP_SWArchitecture p. 127, SWS_SafeHardwareAcceleration p. 23).

Les plateformes matérielles et les périphériques cibles sont abstraits via Platform et Device ([AP_SWS_SHWA_01107], [AP_SWS_SHWA_00308]). Au moyen de classes de stratégie telles que GpuSelector ou AcceleratorSelector, les applications peuvent sélectionner de manière flexible les cibles de calcul adaptées ([AP_SWS_SHWA_00407], [AP_SWS_SHWA_00413]). Les tampons de données sont alloués via Buffer dans des espaces d'indices à N dimensions (Range), tandis que les accès structurés en lecture et en écriture s'effectuent avec une sécurité de type via Accessor et Id ([AP_SWS_SHWA_00209], [AP_SWS_SHWA_00007], [AP_SWS_SHWA_00707]).

Allocation de mémoire tampon, soumission au noyau et synchronisationApplicationBufferfile d'attenteTaskHandlerEventUse Case: Préparation des tampons et des files d'attenteCreate(bufferRange, propList)Result<unique_ptr<Buffer>>Create(device, errorHandler)Result<unique_ptr<Queue>>Use Case: Définition et soumission de tâchesParallelFor(bufferSize, cfg)Submit(cfg, handler)Create()Result<Event>Use Case: SynchronisationWait()Result<void>

Diagramme de séquence : déroulement de bout en bout de l'allocation de tampon, de la soumission de kernel (Submit) et de la synchronisation asynchrone. Sources : AP_SWS_SHWA_00209, AP_SWS_SHWA_00909, AP_SWS_SHWA_00912, AP_SWS_SHWA_00604.

Les ordres de calcul sont définis via TaskHandler sous la forme d'une tâche unique ou d'une boucle parallèle et transmis au périphérique via des files d'attente (Queue) ([AP_SWS_SHWA_01203], [AP_SWS_SHWA_00912]). Le retour fournit un objet Event pour des synchronisations bloquantes ou limitées dans le temps ([AP_SWS_SHWA_00604], [AP_SWS_SHWA_00606]). DeviceMonitor sert à la surveillance au moment de l'exécution et reflète l'état matériel actuel (kReady, kNotAccesible, kFailure, kUnknown) ([AP_SWS_SHWA_01407], [AP_SWS_SHWA_00103]).

Les erreurs sont signalées de manière déterministe via ara::core::Result et ShwaErrorCode ([AP_SWS_SHWA_01301]). Si l'exécution d'une tâche échoue, les opérations ne possèdent aucune sémantique de rollback, de sorte que les tampons associés doivent être classés comme modifiés de manière indéterminée ([AP_SWS_SHWA_00604], [AP_SWS_SHWA_00914]).

Rôle architectural et limites système de Safe Hardware Acceleration

Au sein de l'AUTOSAR Adaptive Platform, le cluster fonctionnel Safe Hardware Acceleration (shwa) fournit un modèle d'exécution et d'abstraction standardisé et fonctionnellement sûr pour les unités de calcul hétérogènes telles que les GPU, DSP, NPU et FPGA (AUTOSAR_AP_EXP_SWArchitecture p. 132). Contrairement aux clusters de plateforme basés sur des démons comme Platform Health Management, shwa est conçu comme une bibliothèque locale au processus, non basée sur des démons (bibliothèque In-Process) (AUTOSAR_AP_EXP_SWArchitecture p. 127). De ce fait, l'environnement d'exécution opère directement dans l'espace d'adressage POSIX du processus utilisateur consommateur et découple les ordres de calcul des pilotes d'accélérateurs sous-jacents sans latence IPC (AUTOSAR_AP_SWS_SafeHardwareAcceleration p. 23).

La conception architecturale de l'interface s'inspire des standards modernes de calcul hétérogène tels que SYCL et OpenCL, tout en adaptant strictement ces paradigmes aux exigences déterministes et axées sur la sécurité de l'AUTOSAR Adaptive Platform (AUTOSAR_AP_EXP_SafeHardwareAccelerationAPI p. 15). Les constructeurs de toutes les classes d'interface primaires sont déclarés privés ; les instances ne peuvent être créées que via des méthodes de fabrique statiques nommées du type Create() (EXP_SafeHardwareAccelerationAPI p. 15). La quasi-totalité des opérations signale son succès ou des états d'erreur spécifiques au système via le type de retour ara::core::Result ([AP_SWS_SHWA_00308], EXP_SafeHardwareAccelerationAPI p. 15). Outre les Adaptive Applications régulières, d'autres clusters fonctionnels (par exemple des clusters de traitement d'images ou de perception) peuvent également intégrer directement les interfaces C++ de shwa pour des charges de travail HPC hautement parallèles (SWS_SafeHardwareAcceleration p. 23).

SafeHardwareAccelerationArchitecture cluster_app_process POSIX Process (Adaptive Application / Functional Cluster) cluster_shwa_lib ara::shwa (In-Process Library) cluster_hardware Hardware Targets app Application Logic platform Platform & Device Management (Platform, Device, DeviceSelector) app->platform memory Data Management (Buffer, Accessor, Range, Id) app->memory execution Task Execution & Scheduling (Queue, TaskHandler, Event) app->execution safety Safety & Health Monitoring (DeviceMonitor, ErrorHandler) app->safety platform->execution memory->execution gpu GPU execution->gpu npu NPU / VPU execution->npu dsp DSP / FPGA execution->dsp cpu Host CPU execution->cpu safety->gpu safety->npu

Diagramme de contexte : intégration de ara::shwa en tant que bibliothèque In-Process dans l'espace de processus POSIX pour le pilotage d'accélérateurs hétérogènes. Sources : AUTOSAR_AP_EXP_SWArchitecture p. 127, SWS_SafeHardwareAcceleration p. 22.

Topologie matérielle, découverte de plateforme et sélection de périphérique

La topologie des accélérateurs de calcul intégrés dans l'ensemble du système est abstraite via l'interface Platform ([AP_SWS_SHWA_01107]). Via l'opération statique Platform::GetPlatforms(), l'application détermine d'abord toutes les plateformes d'exécution enregistrées, puis interroge au moyen de Platform::GetDevices() les unités de calcul associées respectives ([AP_SWS_SHWA_01108], AUTOSAR_AP_EXP_SWArchitecture p. 132). Chaque cible d'exécution physique ou logique est représentée dans le système par un objet Device ([AP_SWS_SHWA_00302]). Un Device propose des méthodes d'inspection pour classifier le type de matériel, notamment IsCpu() ([AP_SWS_SHWA_00310]), IsGpu() ([AP_SWS_SHWA_00311]) et IsAccelerator() ([AP_SWS_SHWA_00312]), ainsi que des requêtes détaillées génériques via le modèle de fonction GetInfo() ([AP_SWS_SHWA_00313]).

Pour le choix ciblé d'unités de calcul appropriées, shwa met à disposition le modèle de sélection polymorphe DeviceSelector ([AP_SWS_SHWA_00402], [AP_SWS_SHWA_00403]). Grâce aux implémentations standard GpuSelector ([AP_SWS_SHWA_00406], [AP_SWS_SHWA_00407]), CpuSelector ([AP_SWS_SHWA_00409], [AP_SWS_SHWA_00410]) et AcceleratorSelector ([AP_SWS_SHWA_00412], [AP_SWS_SHWA_00413]), les systèmes peuvent filtrer les cibles de calcul selon des priorités prédéfinies ou des évaluations d'adéquation heuristiques. La méthode de fabrique Device::Create(deviceSelector) relie directement ce mécanisme de sélection à l'instanciation de périphérique ([AP_SWS_SHWA_00309]).

Interrogation de la topologie et création d'un dispositif de calculApplicationPlatformDeviceSelectorAppareilGetPlatforms()Result<Vector<Platform>>GetDevices()Result<Vector<Device>>Use Case: Sélection et instanciationSelectDevice()Result<Device>Create(deviceSelector)Result<Device>

Diagramme de séquence : détermination de la topologie, sélection d'une cible de calcul et instanciation d'un périphérique logique. Sources : AP_SWS_SHWA_01107, AP_SWS_SHWA_01108, AP_SWS_SHWA_00407, AP_SWS_SHWA_00309.

Gestion de la mémoire et accès multidimensionnel aux données avec Buffer et Accessor

Pour les opérations de calcul parallèles sur des architectures hétérogènes, shwa sépare strictement la conservation physique des données de l'accès logique (AUTOSAR_AP_EXP_SafeHardwareAccelerationAPI p. 15). Les zones de mémoire sont encapsulées via le modèle Buffer<DataT, Dimensions, AllocatorT> ([AP_SWS_SHWA_00202]). L'étendue d'une mémoire dans l'espace uni-, bi- ou tridimensionnel est définie par la structure Range<Dimensions> ([AP_SWS_SHWA_01007], [AP_SWS_SHWA_01008], [AP_SWS_SHWA_01009]), dont les dimensions peuvent être interrogées via GetDimension0(), GetDimension1() et GetDimension2() ([AP_SWS_SHWA_01010], [AP_SWS_SHWA_01011], [AP_SWS_SHWA_01012]). Un tampon peut soit être créé à neuf avec sa propre mémoire ou son propre allocateur ([AP_SWS_SHWA_00209], [AP_SWS_SHWA_00210]), soit intégrer des pointeurs de mémoire hôte existants (hostData) comme données d'entrée ou de sortie ([AP_SWS_SHWA_00211], [AP_SWS_SHWA_00213], [AP_SWS_SHWA_00214]). Les tampons propriétaires sont généralement renvoyés par Buffer::Create() sous forme de std::unique_ptr (EXP_SafeHardwareAccelerationAPI p. 15).

L'accès proprement dit en lecture et en écriture aux données de tampon ne s'effectue pas directement via des pointeurs, mais via des objets typés Accessor ([AP_SWS_SHWA_00007], [AP_SWS_SHWA_00008]). Le mode d'accès est déterminé par l'énumération AccessMode, qui comprend les valeurs kRead, kWrite et kReadWrite ([AP_SWS_SHWA_00101]). L'adressage de points d'indice discrets dans l'espace à N dimensions s'effectue au moyen du type Id<Dimensions> ([AP_SWS_SHWA_00707], [AP_SWS_SHWA_00708], [AP_SWS_SHWA_00709]) avec les accesseurs et mutateurs de coordonnées correspondants ([AP_SWS_SHWA_00710], [AP_SWS_SHWA_00711]). Pour manipuler des éléments de tableau individuels, Accessor met à disposition l'opérateur d'indexation operator[] ([AP_SWS_SHWA_00009], [AP_SWS_SHWA_00010]) ainsi que les méthodes de synchronisation Get() ([AP_SWS_SHWA_00012]) et Set() ([AP_SWS_SHWA_00011]). La transmission d'instances de PropertyList permet d'adjoindre de manière déclarative des propriétés de mémoire et des attributs d'accès spécifiques ([AP_SWS_SHWA_00802], [AP_SWS_SHWA_00015], [AP_SWS_SHWA_00215]).

Définition des tâches, ordonnancement des commandes et exécution via des files d'attente

L'exécution de calculs sur des périphériques accélérateurs est coordonnée par le biais de files d'attente de commandes de type Queue ([AP_SWS_SHWA_00902]). Une Queue est liée à un Device ou à un DeviceSelector déterminé via sa méthode factory Create(), et configurée de manière facultative avec un ErrorHandler ainsi qu'une PropertyList ([AP_SWS_SHWA_00908], [AP_SWS_SHWA_00909]). La méthode GetDevice() renvoie le périphérique de calcul couplé à la file d'attente ([AP_SWS_SHWA_00910]). Le comportement d'exécution de la file d'attente peut être vérifié via IsInOrder() ([AP_SWS_SHWA_00911]) : dans le cas d'une file d'attente in-order, les tâches de calcul enfilées sont traitées de manière strictement séquentielle (AUTOSAR_AP_EXP_SWArchitecture p. 133).

La définition de charges de travail concrètes s'effectue à l'aide de TaskHandler ([AP_SWS_SHWA_01202]). Le gestionnaire de tâches distingue les tâches unitaires atomiques (SingleTask(), [AP_SWS_SHWA_01203]) des grilles de calcul parallèles aux données (ParallelFor(), [AP_SWS_SHWA_01204]). La cible de l'exécution peut être définie via l'énumération Target soit comme un accélérateur (kDevice), soit comme une tâche hôte CPU (kHostTask) ([AP_SWS_SHWA_00102]). La soumission à la file d'attente s'effectue via la méthode Queue::Submit() ([AP_SWS_SHWA_00912]). Pour les pipelines plus complexes, Submit() prend également en charge la spécification d'une file d'attente secondaire afin de représenter les dépendances entre différents pipelines matériels ([AP_SWS_SHWA_00913], AUTOSAR_AP_SWS_SafeHardwareAcceleration p. 23).

Allocation de mémoire tampon, soumission au noyau et synchronisationApplicationBufferfile d'attenteTaskHandlerEventUse Case: Préparation des tampons et des files d'attenteCreate(bufferRange, propList)Result<unique_ptr<Buffer>>Create(device, errorHandler)Result<unique_ptr<Queue>>Use Case: Définition et soumission de tâchesParallelFor(bufferSize, cfg)Submit(cfg, handler)Create()Result<Event>Use Case: SynchronisationWait()Result<void>

Diagramme de séquence : déroulement de bout en bout de l'allocation de tampon, de la soumission de kernel (Submit) et de la synchronisation asynchrone. Sources : AP_SWS_SHWA_00209, AP_SWS_SHWA_00909, AP_SWS_SHWA_00912, AP_SWS_SHWA_00604.

Synchronisation basée sur les événements et surveillance de l'état du matériel

Chaque soumission via Queue::Submit() renvoie un objet Event qui sert de point d'ancrage de synchronisation asynchrone ([AP_SWS_SHWA_00912], [AP_SWS_SHWA_00602]). Un appelant peut soit attendre la fin du calcul matériel de manière bloquante au moyen de Event::Wait() ([AP_SWS_SHWA_00604]), soit effectuer une synchronisation limitée dans le temps via WaitFor(ms) ([AP_SWS_SHWA_00606]). Plusieurs événements peuvent être surveillés de manière agrégée via Event::Wait(const Vector<Event>&) ([AP_SWS_SHWA_00605]). En alternative, la file d'attente elle-même propose des méthodes de synchronisation collective : Queue::Wait() bloque jusqu'à ce que toutes les tâches précédemment enfilées soient traitées ([AP_SWS_SHWA_00914]), tandis que Queue::WaitFor(ms) limite l'attente à un délai d'expiration prédéfini ([AP_SWS_SHWA_00917]).

Afin de garantir la fiabilité et la sécurité fonctionnelle des accélérateurs matériels au moment de l'exécution, shwa définit le composant de surveillance DeviceMonitor ([AP_SWS_SHWA_01402]). Les instances sont créées via des méthodes Create() statiques associées à un Device ou à un DeviceSelector ([AP_SWS_SHWA_01407], [AP_SWS_SHWA_01408]). L'état matériel actuel est interrogé via la méthode DeviceMonitor::Status() ([AP_SWS_SHWA_01409]). L'énumération DeviceStatus comprend quatre états standardisés : kReady (0, opérationnel), kNotAccesible (1, non accessible), kFailure (2, état d'erreur) et kUnknown (255, état non déterminable) ([AP_SWS_SHWA_00103]). Ce mécanisme de surveillance constitue le fondement des analyses de sécurité et du health-monitoring conformément à l'ISO 26262 (AUTOSAR_AP_EXP_SafeHardwareAccelerationAPI p. 15).

DeviceStatusLifecycle Init kReady kReady (0) Init->kReady kNotAccesible kNotAccesible (1) kReady->kNotAccesible Hardware getrennt / belegt kFailure kFailure (2) kReady->kFailure Hardwarefehler / Timeout kUnknown kUnknown (255) kReady->kUnknown Status unbestimmbar kNotAccesible->kReady Wiederhergestellt kNotAccesible->kFailure Schwerer Defekt kFailure->kUnknown Status unbestimmbar kUnknown->kReady Status revalidiert

Diagramme d'état : cycle de vie et transitions d'état de DeviceStatus selon ara::shwa::DeviceMonitor. Sources : AP_SWS_SHWA_00103, AP_SWS_SHWA_01409.

Comportement en cas d'erreur et diagnostic

Le concept de traitement des erreurs de shwa repose sur le domaine d'erreur ShwaErrorDomain spécifique à AUTOSAR ([AP_SWS_SHWA_01307]), qui peut être obtenu via GetShwaDomain() ([AP_SWS_SHWA_01311]). Les codes d'erreur spécifiques sont représentés par l'énumération standardisée ShwaErrorCode ([AP_SWS_SHWA_01301]). Parmi ceux-ci figurent des erreurs d'exécution fondamentales telles que kRuntime, des interruptions de calcul sur l'accélérateur telles que kTaskExecutionFailure, des erreurs d'allocation de mémoire telles que kMemoryNotAllocated, des violations de l'intégrité de la mémoire telles que kIntegrityCorrupted, des conflits de ressources temporaires tels que kResourceBusy ainsi que des modes d'accès non valides tels que kInvalidAccessMode ([AP_SWS_SHWA_01301]). Les codes d'erreur sont construits de manière sécurisée du point de vue des types avec MakeErrorCode() ([AP_SWS_SHWA_01312]) et fournissent des descriptions textuelles via Name() et Message() ([AP_SWS_SHWA_01308], [AP_SWS_SHWA_01309]).

Les erreurs lors de l'exécution asynchrone ou lors de l'attente d'événements (Event::Wait() ou Queue::Wait()) ont de graves répercussions sur la cohérence des données : si un kTaskExecutionFailure ou un kRuntime survient pendant le calcul, les opérations concernées ne possèdent aucune sémantique de rollback et les données dans les tampons associés sont considérées comme modifiées de manière indéterminée ([AP_SWS_SHWA_00604], [AP_SWS_SHWA_00914]). Pour les notifications asynchrones, la classe ErrorHandler est utilisée, dont le callback est déclenché au moyen de HandleError() ([AP_SWS_SHWA_00507], [AP_SWS_SHWA_00508]). Si l'application requiert un traitement des exceptions, les erreurs peuvent être converties en une ShwaException via ThrowAsException() ([AP_SWS_SHWA_01303], [AP_SWS_SHWA_01310]).

Justifications détaillées complémentaires et références aux spécifications

L'architecture et les exigences du cluster shwa sont entièrement justifiées par des exigences normatives et les documents explicatifs associés. Le tableau 1 résume les concepts clés ainsi que leurs références déterminantes.

Domaine thématiqueÉléments de spécification importantsRéférences justificatives
Architecture & mise à dispositionBibliothèque in-process, classification fonctionnelle dans la catégorie SafetyAUTOSAR_AP_EXP_SWArchitecture S. 127, AUTOSAR_AP_EXP_SWArchitecture S. 132
Topologie & sélectionPlatform, Device, DeviceSelector, GpuSelector, CpuSelector[AP_SWS_SHWA_01107], [AP_SWS_SHWA_00308], [AP_SWS_SHWA_00403]
Mémoire & accès aux donnéesBuffer, Accessor, Range, Id, AccessMode[AP_SWS_SHWA_00209], [AP_SWS_SHWA_00007], [AP_SWS_SHWA_01007], [AP_SWS_SHWA_00101]
Planification des tâches & synchronisationQueue, TaskHandler, Event[AP_SWS_SHWA_00908], [AP_SWS_SHWA_01202], [AP_SWS_SHWA_00604]
Surveillance du matériel & erreursDeviceMonitor, DeviceStatus, ShwaErrorCode, ErrorHandler[AP_SWS_SHWA_01407], [AP_SWS_SHWA_00103], [AP_SWS_SHWA_01301], [AP_SWS_SHWA_00507]

L'instanciation typique d'un pipeline et le découplage de plusieurs files d'attente au sein d'une application sont illustrés en détail dans la spécification (SWS_SafeHardwareAcceleration p. 22, AUTOSAR_AP_SWS_SafeHardwareAcceleration p. 23). La stricte séparation des ressources de mémoire et de calcul garantit ainsi un comportement déterministe dans les domaines d'application automobiles critiques pour la sécurité (AUTOSAR_AP_EXP_SafeHardwareAccelerationAPI p. 15).

Ce guide a été généré par un assistant de curation par IA sur la base de la spécification AUTOSAR Adaptive R25-11.

Spezifikation: AUTOSAR_AP_SWS_SafeHardwareAcceleration.pdf (R25-11) · 160 API-Records

class: 18 function: 120 enumeration: 4 type alias: 3 header file: 15

ara::shwa

AcceleratorSelector manages accelerator selection for operations on HWA if available.

Accessor classe

Accessor manages read and write access to allocated memory by Buffer. Designed as not copyable, since it’s owning resources. Intended to be managed exclusively by std::unique_ptr, which may be moved. ≙ std::unique_ptr

Buffer classe

Buffer manages memory allocation for operations on the host or/and HWA. Designed as not copyable, since it’s owning resources. Intended to be managed exclusively by std::unique_ptr, which may be moved. ≙ std::unique_ptr

CpuSelector manages CPU selection for operations on HWA if available Allows to get a device from any supported backends for which the device type is CPU.

Device classe

Device class represents HWA device. Provides access to the device but not controlling it. Designed as copyable since not owning resources.

DeviceMonitor API class. Designed as copyable since not owning resources.

Class allowing to choose the most appropriate device of the available ones. This is a callable object taking a device reference and returning an integer rank. One of the device with the highest non-negative value is selected.

ErrorHandler manages asynchronous error handling for operations on HWA.

Event classe

Event class helps to manage task execution synchronization between HWA and Host application. Can be created only inside of the Queue otherwise it’s meaningless.

GpuSelector manages GPU selection for operations on HWA if available Select a device from any supported backends for which the device type is GPU.

Id classe

Id API class. Designed as copyable since not owning resources.

Platform classe

Platform class is responsible for extracting different HWA platforms available for current application and listing Devices bind to each platform. Designed as copyable since not owning resources.

Property List class is designed to enable vendor specific SHWA functionality extension and adjustment. Properties are not standardized and can be defined by Vendor. Class using Property list is obliged to have HasProperty() and GetProperty() methods defined.

Queue classe

Queue API provides the functionality for parallel processing on selected Device. Designed as not copyable, since it’s owning resources. Intended to be managed exclusively by std::unique_ ptr, which may be moved. ≙ std::unique_

Range classe

Defines size of Buffer for one, two or three dimensions. Designed as copyable since not owning resources.

Defines the error domain for Safe Hardware Acceleration.

Exception type could be thrown by application or other FC using Safe Hardware Acceleration. Safe Hardware Acceleration API is exception free and can only return an ErrorCode, but user code can transform this error to exception and throw if it’s alligned with system error handling architecture.

Handles tasks execution on the selected Device Can be created only inside of the Queue otherwise it’s meaningless.

GetShwaDomain fonction

Liest die durch die Signatur bezeichnete Information oder Eigenschaft aus dem Objekt.

constexpr const ara::core::ErrorDomain & GetShwaDomain () noexcept;
MakeErrorCode fonction

Die Spezifikation definiert diese Deklaration mit der in der Signatur ausgewiesenen Semantik.

constexpr ara::core::ErrorCode MakeErrorCode (ShwaErrorCode code, ara::core::ErrorDomain::SupportDataType data) noexcept;
AccessMode énumération

Die Enumeration definiert die folgenden standardisierten Werte.

enum class AccessMode : std::uint32_t {...};
DeviceStatus énumération

Die Enumeration definiert die folgenden standardisierten Werte.

enum class DeviceStatus : std::uint32_t {...};
ShwaErrorCode énumération

Die Enumeration definiert die folgenden standardisierten Werte.

enum class ShwaErrorCode : ara::core::ErrorDomain::CodeType {...};
Target énumération

Die Enumeration definiert die folgenden standardisierten Werte.

enum class Target : std::uint32_t {...};

Namespaces

Collaboration d'architecture

G Zusammenspiel bei einer Task-Einreichung app Adaptive Application buf Buffer app->buf 1: Create(range) acc Accessor app->acc 3: Create(buffer, handler) queue Queue app->queue 2: Create(device, error handler) app->queue 4: Submit(lambda) queue->app 7: Result<Event> handler TaskHandler queue->handler 5: invoke task device Device handler->device 6: ParallelFor / SingleTask error ErrorHandler device->error 6a: async error (if any)

Klickbare Knoten führen zu den Klassenseiten. Quellen: SWS SHWA §7.1, SWS SHWA §7.3, SWS SHWA §7.6. Teilweise Interpretation: Die Kollaboration verdichtet die in den Quellen separat beschriebenen Rollen.

Fichiers d'en-tête (chapitre 8)