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.
Guia do utilizadorGERADO POR IA
Permite o descarregamento seguro de tarefas computacionalmente intensivas para aceleradores de hardware especializados.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 94872e9e2305ProcedênciaPerguntas em aberto (2)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
Permite o descarregamento seguro de tarefas computacionalmente intensivas para aceleradores de hardware especializados.
O namespace ara::shwa oferece interfaces para aceleração segura de hardware e possibilita o descarregamento direcionado de tarefas computacionais paralelas para dispositivos como GPUs ou CPUs por meio do formato de destino Target ([AP_SWS_SHWA_00102]). As aplicações selecionam aceleradores por meio de seletores, criam filas de execução gerenciadas com exclusividade e controlam o acesso à memória por meio de acessores de buffer. Como requisito fundamental, aplica-se um modelo estrito de posse com recursos não copiáveis, bem como sinalização de erros isenta de exceções via ShwaErrorCode ([AP_SWS_SHWA_01301]).
Contexto
O namespace ara::shwa (Safe Hardware Acceleration) fornece, no âmbito da AUTOSAR Adaptive Platform, interfaces para descarregar tarefas computacionalmente intensivas para aceleradores de hardware especializados. O módulo possibilita a integração de diferentes tipos de aceleradores, tais como processadores gráficos (GPU), processadores digitais de sinal ou processadores centrais dedicados (CPU).
A detecção do ambiente do sistema é realizada por meio da classe Platform, que determina as plataformas de hardware disponíveis na unidade de controle e lista as instâncias correspondentes de Device. A seleção de um dispositivo apropriado pode ser controlada de forma dinâmica ou estática por meio de seletores especializados: DeviceSelector atua como um objeto de função invocável para priorizar as unidades disponíveis com base em uma classificação inteira, enquanto CpuSelector, GpuSelector e AcceleratorSelector endereçam deliberadamente unidades de execução específicas. O estado operacional atual de um acelerador é mapeado por meio da enumeração DeviceStatus ([AP_SWS_SHWA_00103]).
Para a execução paralela de operações de computação, a Queue é a responsável. As tarefas de computação são encapsuladas por meio de TaskHandler, sendo o local de execução definido via Target ([AP_SWS_SHWA_00102]) opcionalmente no acelerador (kDevice) ou na CPU do host (kHostTask). As áreas de memória para dados de entrada e saída são alocadas via Buffer utilizando a especificação de dimensões Range. O acesso a esses buffers é regulado por objetos Accessor, que restringem o modo de acesso por meio de AccessMode ([AP_SWS_SHWA_00101]).
O modelo de recursos e ciclo de vida em ara::shwa distingue estritamente entre objetos proprietários de recursos, identificadores descritivos e componentes dependentes de fila:
Classes proprietárias de recursos:Queue, Buffer e Accessor gerenciam recursos de hardware e áreas de memória com exclusividade. Elas não são copiáveis (not copyable) e devem obrigatoriamente ser gerenciadas via std::unique_ptr. O repasse ou transferência só é permitido através de semântica de movimento (move semantics).
Identificadores descritivos e classes auxiliares:Platform, Device, DeviceMonitor, Id, Range e PropertyList não detêm recursos de hardware com exclusividade. Elas foram projetadas para serem copiáveis. Uma instância de Device representa apenas uma interface de acesso a um dispositivo, mas não o controla de forma exclusiva. Interpretação: a inicialização de uma fila de execução (Queue) vincula-se a um Device específico, previamente selecionado, já que Queue gerencia recursos com exclusividade. Pergunta Q-c38811a811f133d0 (aberta)
Componentes dependentes: as classes Event (para sincronização) e TaskHandler (para processamento de tarefas) só podem ser criadas dentro de uma Queue; fora do contexto de uma fila, elas não possuem qualquer relevância funcional.
O ciclo de vida de um dispositivo reflete-se em DeviceStatus ([AP_SWS_SHWA_00103]): além do estado operacional kReady, um dispositivo pode ser classificado como inacessível (kNotAccesible), com falha (kFailure) ou desconhecido (kUnknown). Interpretação: mudanças de estado de um dispositivo entre kReady, kNotAccesible e kFailure são detectadas em tempo de execução por meio de classes auxiliares, tais como o DeviceMonitor ou a plataforma. Pergunta Q-8fc0dc95534dc8bc (aberta)
Caminho de utilização
O uso típico de ara::shwa para a execução de um cálculo acelerado é dividido em cinco etapas:
Seleção de plataforma e dispositivo: a aplicação obtém, via Platform, as plataformas de hardware existentes e suas instâncias correspondentes de Device. Um seletor (como DeviceSelector, GpuSelector ou CpuSelector) determina o dispositivo mais adequado, cujo DeviceStatus ([AP_SWS_SHWA_00103]) apresenta o status kReady.
Instanciar a fila: para o Device selecionado, uma Queue é criada e mantida como std::unique_ptr.
Alocar e preparar a memória: para os dados de entrada e saída, um Buffer com as dimensões requeridas é criado via Range. Para preenchimento ou avaliação, a aplicação solicita um Accessor, sendo o modo de acesso declarado via AccessMode ([AP_SWS_SHWA_00101]) como kRead, kWrite ou kReadWrite.
Registrar e executar a tarefa: dentro da Queue, uma TaskHandler é criada. A execução é iniciada, definindo-se via Target ([AP_SWS_SHWA_00102]) se a tarefa é executada no acelerador (kDevice) ou no host (kHostTask).
Sincronização: a Queue fornece um Event com o qual a aplicação host monitora o término assíncrono dos cálculos no acelerador de hardware e sincroniza a reconciliação dos dados.
A interface de programação de ara::shwa foi projetada de forma isenta de exceções (exception-free). Os estados de erro são retornados sincronicamente por meio de ara::core::ErrorCode. A geração dos códigos de erro ocorre via função fábrica MakeErrorCode ([AP_SWS_SHWA_01312]), fazendo referência ao domínio de erro GetShwaDomain ([AP_SWS_SHWA_01311]). Se a arquitetura da aplicação previr um modelo de tratamento de erros baseado em exceções, o código de erro pode ser convertido em uma ShwaException e lançado.
A enumeração ShwaErrorCode ([AP_SWS_SHWA_01301]) especifica causas de erro padronizadas:
Problemas de memória e de acesso: se a alocação de memória falhar, isso resulta em kMemoryNotAllocated. Se a consistência dos dados de um buffer não puder ser mantida, kIntegrityCorrupted é reportado. Modos de acesso não permitidos ou operações com falha em objetos Accessor levam a kInvalidAccessMode ou kAccessorFailure.
Erros de execução e de sincronização: se o processamento de uma tarefa no dispositivo de destino falhar, kTaskExecutionFailure é sinalizado. Operações não permitidas em objetos de sincronização resultam em kEventInvalidOperation, enquanto recursos bloqueados acionam kResourceBusy. Em caso de excedência dos tempos de execução configurados, kTimedOut é retornado.
Parâmetros e estados de objeto inválidos: a chamada de métodos em objetos destruídos ou inválidos resulta em kInvalidObject. Índices ou parâmetros inválidos são rejeitados via kInvalidIndex ou kInvalidParameter. Recursos não suportados reportam kFeatureNotSupported, enquanto erros gerais são registrados via kRuntime.
Para o tratamento de erros que ocorrem durante cálculos assíncronos no acelerador, a classe ErrorHandler é utilizada.
Este guia baseia-se exclusivamente na especificação para ara::shwa no 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 em alemão