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.
Guía del usuarioGENERADO POR IA
Permite la descarga segura de tareas de cómputo intensivo en aceleradores de hardware especializados.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 94872e9e2305ProcedenciaPreguntas abiertas (2)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
Permite la descarga segura de tareas de cómputo intensivo en aceleradores de hardware especializados.
El namespace ara::shwa ofrece interfaces para Safe Hardware Acceleration y permite la descarga selectiva de tareas de cálculo paralelas en dispositivos como GPU o CPU mediante el formato de destino Target ([AP_SWS_SHWA_00102]). Las aplicaciones seleccionan aceleradores a través de selectores, crean colas de ejecución gestionadas en exclusiva y controlan el acceso a la memoria mediante accesores de búfer. Como condición de contorno fundamental rige un modelo estricto de propiedad con recursos no copiables, así como una señalización de errores sin excepciones a través de ShwaErrorCode ([AP_SWS_SHWA_01301]).
Contexto
El namespace ara::shwa (Safe Hardware Acceleration) proporciona interfaces dentro de la AUTOSAR Adaptive Platform para descargar tareas de cómputo intensivo en aceleradores de hardware especializados. El módulo permite la integración de diferentes tipos de aceleradores, como procesadores gráficos (GPU), procesadores de señales digitales o procesadores principales dedicados (CPU).
El reconocimiento del entorno del sistema se lleva a cabo a través de la clase Platform, que determina las plataformas de hardware disponibles en la unidad de control y lista las instancias de Device correspondientes. La selección de un dispositivo adecuado puede gestionarse de forma dinámica o estática mediante selectores especializados: DeviceSelector actúa como objeto de función invocable para priorizar las unidades disponibles en función de un rango entero, mientras que CpuSelector, GpuSelector y AcceleratorSelector direccionan de forma selectiva unidades de ejecución específicas. El estado operativo actual de un acelerador se representa mediante la enumeración DeviceStatus ([AP_SWS_SHWA_00103]).
Queue es responsable de la ejecución paralela de operaciones de cálculo. Las tareas de cálculo se encapsulan mediante TaskHandler, fijándose el lugar de ejecución a través de Target ([AP_SWS_SHWA_00102]) a elegir en el acelerador (kDevice) o en la CPU host (kHostTask). Las áreas de memoria para los datos de entrada y salida se asignan a través de Buffer utilizando la indicación de dimensiones Range. El acceso a estos búferes está regulado por objetos Accessor, que restringen el modo de acceso a través de AccessMode ([AP_SWS_SHWA_00101]).
El modelo de recursos y ciclo de vida en ara::shwa distingue estrictamente entre objetos propietarios de recursos, handles descriptivos y componentes dependientes de la cola:
Clases propietarias de recursos:Queue, Buffer y Accessor gestionan recursos de hardware y áreas de memoria de forma exclusiva. No son copiables (not copyable) y deben gestionarse obligatoriamente a través de std::unique_ptr. Su transferencia o entrega solo está permitida mediante semántica de movimiento (move).
Handles descriptivos y clases auxiliares:Platform, Device, DeviceMonitor, Id, Range y PropertyList no poseen recursos de hardware en exclusiva. Están diseñadas para ser copiables. Una instancia de Device representa únicamente una interfaz de acceso a un dispositivo, pero no lo controla de forma exclusiva. Interpretación: la inicialización de una cola de ejecución (Queue) se vincula a un Device específico seleccionado previamente, ya que Queue gestiona recursos en exclusiva. Pregunta Q-c38811a811f133d0 (abierta)
Componentes dependientes: las clases Event (para sincronización) y TaskHandler (para el procesamiento de tareas) solo pueden crearse dentro de una Queue; fuera del contexto de una cola no tienen ningún significado funcional.
El ciclo de vida de un dispositivo se refleja en DeviceStatus ([AP_SWS_SHWA_00103]): además del estado operativo kReady, un dispositivo puede identificarse como no accesible (kNotAccesible), defectuoso (kFailure) o desconocido (kUnknown). Interpretación: los cambios de estado de un dispositivo entre kReady, kNotAccesible y kFailure se detectan en tiempo de ejecución a través de clases auxiliares como DeviceMonitor o la plataforma. Pregunta Q-8fc0dc95534dc8bc (abierta)
Ruta de uso
El uso típico de ara::shwa para la ejecución de un cálculo acelerado se divide en cinco pasos:
Selección de plataforma y dispositivo: la aplicación consulta mediante Platform las plataformas de hardware disponibles y sus instancias de Device asociadas. Un selector (como DeviceSelector, GpuSelector o CpuSelector) determina el dispositivo más adecuado cuyo DeviceStatus ([AP_SWS_SHWA_00103]) presenta el estado kReady.
Instanciar cola: para el Device seleccionado, se crea una Queue y se mantiene como std::unique_ptr.
Asignar y preparar memoria: para los datos de entrada y salida, se crea un Buffer con las dimensiones requeridas mediante Range. Para el llenado o la evaluación, la aplicación solicita un Accessor, declarándose el modo de acceso a través de AccessMode ([AP_SWS_SHWA_00101]) como kRead, kWrite o kReadWrite.
Registrar y ejecutar tarea: dentro de la Queue se crea un TaskHandler. Se inicia la ejecución, determinándose mediante Target ([AP_SWS_SHWA_00102]) si la tarea se ejecuta en el acelerador (kDevice) o en el host (kHostTask).
Sincronización: la Queue proporciona un Event con el cual la aplicación host supervisa la finalización asíncrona de los cálculos en el acelerador de hardware y sincroniza la alineación de datos.
La interfaz de programación de ara::shwa está diseñada libre de excepciones (exception-free). Los estados de error se devuelven de forma síncrona mediante ara::core::ErrorCode. La generación de los códigos de error se realiza a través de la función de fábrica MakeErrorCode ([AP_SWS_SHWA_01312]) con referencia al dominio de error GetShwaDomain ([AP_SWS_SHWA_01311]). Siempre que la arquitectura de la aplicación prevea un modelo de errores basado en excepciones, el código de error se puede convertir en una ShwaException y lanzarse.
La enumeración ShwaErrorCode ([AP_SWS_SHWA_01301]) especifica causas de error estandarizadas:
Problemas de memoria y acceso: si falla la asignación de memoria de trabajo, esto da como resultado kMemoryNotAllocated. Si no se puede mantener la consistencia de datos de un búfer, se notifica kIntegrityCorrupted. Los modos de acceso no válidos o las operaciones fallidas en objetos Accessor dan lugar a kInvalidAccessMode o kAccessorFailure, respectivamente.
Errores de ejecución y sincronización: si falla el procesamiento de una tarea en el dispositivo de destino, se señala kTaskExecutionFailure. Las operaciones no permitidas en objetos de sincronización dan lugar a kEventInvalidOperation, mientras que los recursos bloqueados desencadenan kResourceBusy. Si se superan los tiempos de ejecución configurados, se devuelve kTimedOut.
Parámetros y estados de objeto no válidos: la invocación de métodos en objetos destruidos o no válidos provoca kInvalidObject. Los índices o parámetros no válidos se rechazan mediante kInvalidIndex o kInvalidParameter, respectivamente. Las funciones no compatibles notifican kFeatureNotSupported, mientras que los errores generales se registran a través de kRuntime.
Para el tratamiento de errores que se producen durante cálculos asíncronos en el acelerador, se utiliza la clase ErrorHandler.
Esta guía se basa exclusivamente en la especificación para ara::shwa en 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 · Original en alemán