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.
160 API-Records in Kapitel 8: 18 Klassen, 120 Funktionen, 4 Enumerationen und 3 Typ-Aliasse.
User GuideAI-GEGENEREERD
Maakt de veilige uitbesteding van rekenintensieve taken aan gespecialiseerde hardwareversnellers mogelijk.
DOOR AI GEGENEREERDongecontroleerdModel: gemini-3.8-flash-medium · Inspanning: medium · Temperatuur: niet regelbaar · Prompt: 94872e9e2305HerkomstOpen vragen (2)
vertaald uit de Duitse handleidinggemini-3.8-flash-low · 2026-10-13 · Duits origineel
Maakt de veilige uitbesteding van rekenintensieve taken aan gespecialiseerde hardwareversnellers mogelijk.
De namespace ara::shwa biedt interfaces voor veilige hardwareversnelling en maakt het doelgericht uitbesteden van parallelle rekentaken aan apparaten zoals GPU's of CPU's mogelijk via het doelformaat Target ([AP_SWS_SHWA_00102]). Applicaties selecteren versnellers via selectors, maken exclusief beheerde uitvoeringswachtrijen aan en regelen de geheugentoegang via buffer-accessors. Als centrale randvoorwaarde geldt een strikt eigendomsmodel met niet-kopieerbare resources en een uitzonderingsvrije foutsynchronisatie/-signalering via ShwaErrorCode ([AP_SWS_SHWA_01301]).
Context
De namespace ara::shwa (Safe Hardware Acceleration) stelt binnen het AUTOSAR Adaptive Platform interfaces beschikbaar om rekenintensieve taken uit te besteden aan gespecialiseerde hardwareversnellers. De module maakt de integratie van verschillende versnellerstypes zoals grafische processors (GPU), digitale signaalprocessors of dedicated centrale processors (CPU) mogelijk.
De detectie van de systeemomgeving vindt plaats via de klasse Platform, die de op de ECU beschikbare hardwareplatformen vaststelt en de bijbehorende Device-instanties opsomt. De selectie van een geschikt apparaat kan dynamisch of statisch via gespecialiseerde selectors worden gestuurd: DeviceSelector fungeert als aanroepbaar functie-object voor het prioriteren van beschikbare eenheden op basis van een integer-rang, terwijl CpuSelector, GpuSelector en AcceleratorSelector doelgericht specifieke uitvoeringseenheden adresseren. De actuele bedrijfstoestand van een versneller wordt gerepresenteerd via de enumeratie DeviceStatus ([AP_SWS_SHWA_00103]).
Voor de parallelle uitvoering van rekenbewerkingen is de Queue verantwoordelijk. Rekenopdrachten worden ingekapseld via TaskHandler, waarbij de uitvoeringslocatie via Target ([AP_SWS_SHWA_00102]) naar keuze op de versneller (kDevice) of op de host-CPU (kHostTask) wordt vastgelegd. Geheugengebieden voor invoer- en uitvoergegevens worden gealloceerd via Buffer met gebruikmaking van de dimensieopgave Range. De toegang tot deze buffers wordt geregeld door Accessor-objecten, die de toegangsmodus via AccessMode ([AP_SWS_SHWA_00101]) beperken.
Het resource- en levenscyclusmodel in ara::shwa maakt een strikt onderscheid tussen resourcebezittende objecten, beschrijvende handles en wachtrij-afhankelijke componenten:
Resourcebezittende klassen:Queue, Buffer en Accessor beheren hardwareresources en geheugengebieden exclusief. Ze zijn niet kopieerbaar (not copyable) en moeten verplicht via std::unique_ptr worden beheerd. Doorgifte of overdracht is uitsluitend toegestaan via move-semantiek.
Beschrijvende handles en hulpklassen:Platform, Device, DeviceMonitor, Id, Range en PropertyList bezitten geen hardwareresources exclusief. Ze zijn ontworpen om kopieerbaar te zijn. Een instantie van Device vormt slechts een toegangsinterface tot een apparaat, maar beheert dit niet exclusief. Interpretatie: de initialisatie van een uitvoeringswachtrij (Queue) bindt zich aan een specifiek, vooraf geselecteerd Device, omdat Queue resources exclusief beheert. Vraag Q-c38811a811f133d0 (open)
Afhankelijke componenten: De klassen Event (voor synchronisatie) en TaskHandler (voor taakverwerking) kunnen uitsluitend binnen een Queue worden aangemaakt; buiten de context van een wachtrij hebben zij geen functionele betekenis.
De levenscyclus van een apparaat wordt weerspiegeld in DeviceStatus ([AP_SWS_SHWA_00103]): naast de bedrijfsklare toestand kReady kan een apparaat worden aangeduid als niet toegankelijk (kNotAccesible), defect (kFailure) of onbekend (kUnknown). Interpretatie: toestandswijzigingen van een apparaat tussen kReady, kNotAccesible en kFailure worden tijdens runtime gedetecteerd via hulpklassen zoals de DeviceMonitor resp. het platform. Vraag Q-8fc0dc95534dc8bc (open)
Gebruikspad
Het typische gebruik van ara::shwa voor het uitvoeren van een versnelde berekening is onderverdeeld in vijf stappen:
Platform- en apparaatselectie: De applicatie vraagt via Platform de aanwezige hardwareplatformen en de daaraan gekoppelde Device-instanties op. Een selector (zoals DeviceSelector, GpuSelector of CpuSelector) bepaalt het meest geschikte apparaat waarvan de DeviceStatus ([AP_SWS_SHWA_00103]) de status kReady vertoont.
Wachtrij instantiëren: Voor het geselecteerde Device wordt een Queue aangemaakt en als std::unique_ptr bewaard.
Geheugen alloceren en voorbereiden: Voor invoer- en uitvoergegevens wordt een Buffer met de vereiste dimensies aangemaakt via Range. Voor het vullen of evalueren vraagt de applicatie een Accessor aan, waarbij de toegangsmodus via AccessMode ([AP_SWS_SHWA_00101]) wordt gedeclareerd als kRead, kWrite of kReadWrite.
Taak registreren en uitvoeren: Binnen de Queue wordt een TaskHandler aangemaakt. De uitvoering wordt gestart, waarbij via Target ([AP_SWS_SHWA_00102]) is vastgelegd of de taak op de versneller (kDevice) of op de host (kHostTask) draait.
Synchronisatie: De Queue stelt een Event beschikbaar waarmee de host-applicatie de asynchrone voltooiing van de berekeningen op de hardwareversneller bewaakt en de gegevenssynchronisatie afstemt.
De programmeerinterface van ara::shwa is ontworpen als uitzonderingsvrij (exception-free). Fouttoestanden worden synchroon geretourneerd via ara::core::ErrorCode. Het genereren van foutcodes gebeurt via de factory-functie MakeErrorCode ([AP_SWS_SHWA_01312]) onder verwijzing naar het foutdomein GetShwaDomain ([AP_SWS_SHWA_01311]). Indien de applicatie-architectuur voorziet in een op uitzonderingen gebaseerd foutmodel, kan de foutcode worden geconverteerd naar een ShwaException en worden opgegooid.
De enumeratie ShwaErrorCode ([AP_SWS_SHWA_01301]) specificeert gestandaardiseerde foutoorzaken:
Geheugen- en toegangsproblemen: Mislukt de allocatie van werkgeheugen, dan resulteert dit in kMemoryNotAllocated. Kan de dataconsistentie van een buffer niet worden gehandhaafd, dan wordt kIntegrityCorrupted gemeld. Niet-toegestane toegangsmodi of mislukkende bewerkingen op Accessor-objecten leiden tot respectievelijk kInvalidAccessMode en kAccessorFailure.
Uitvoerings- en synchronisatiefouten: Mislukt de verwerking van een taak op het doelapparaat, dan wordt kTaskExecutionFailure gesignaleerd. Niet-toegestane bewerkingen op synchronisatie-objecten leiden tot kEventInvalidOperation, terwijl geblokkeerde resources kResourceBusy veroorzaken. Bij overschrijding van geconfigureerde uitvoeringstijden wordt kTimedOut geretourneerd.
Ongeldige parameters en objecttoestanden: Het aanroepen van methoden op vernietigde of ongeldige objecten leidt tot kInvalidObject. Ongeldige indices of parameters worden afgewezen via respectievelijk kInvalidIndex en kInvalidParameter. Niet-ondersteunde functies melden kFeatureNotSupported, terwijl algemene fouten worden geregistreerd via kRuntime.
Voor de afhandeling van fouten die optreden tijdens asynchrone berekeningen op de versneller wordt de klasse ErrorHandler ingezet.
Deze handleiding is uitsluitend gebaseerd op de specificatie voor ara::shwa in AUTOSAR R25-11.
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.
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.
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.
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 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
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.
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_
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.
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.
gemini-3.8-flash-low· 2026-10-13 · Duits origineel