DEENESPTFRRUARHIKOZHNL

모듈 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.

모듈 가이드AI 생성

데이터 병렬 연산을 위해 이기종 하드웨어 가속기의 안전하고 표준화된 사용을 가능하게 합니다.
AI 생성 미검증 모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: cc6d229c7f27 출처 열린 질문 (1)
인과 앵커: R25-11 R25-11부터 유효 이 사양 릴리스용으로 새로 합성되었습니다.
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문

데이터 병렬 연산을 위해 이기종 하드웨어 가속기의 안전하고 표준화된 사용을 가능하게 합니다.

Adaptive 클러스터 shwa은 GPU 및 NPU와 같은 이기종 연산 가속기의 기능 안전 제어를 위한 프로세스 로컬 라이브러리를 제공합니다(AUTOSAR_AP_EXP_SWArchitecture 127쪽). 이는 장치 애그노스틱한 실행 장치 선택, n차원 메모리 버퍼 관리, 실행 큐를 통한 병렬 연산 태스크의 비동기 큐잉을 가능하게 합니다([AP_SWS_SHWA_00309], [AP_SWS_SHWA_00912]). 태스크 실행 실패 시 롤백 시맨틱이 존재하지 않으므로 영향을 받는 버퍼 데이터는 확정되지 않은 상태로 변경된 것으로 간주됩니다([AP_SWS_SHWA_00604]).

기능 클러스터 Safe Hardware Acceleration(shwa)은 AUTOSAR Adaptive Platform을 위해 GPU, NPU, DSP 및 FPGA와 같은 이기종 연산 장치에 대한 표준화되고 기능적으로 안전한 실행 모델을 제공합니다(AUTOSAR_AP_EXP_SWArchitecture 132쪽). 프로세스 내(In-Process) 라이브러리로 실행되는 shwa는 Adaptive Applications 및 다른 기능 클러스터가 고성능 연산 리소스를 지연 없이 직접 제어할 수 있도록 지원합니다(AUTOSAR_AP_EXP_SWArchitecture 127쪽, SWS_SafeHardwareAcceleration 23쪽).

하드웨어 플랫폼과 대상 장치는 Platform 및 Device을 통해 추상화됩니다([AP_SWS_SHWA_01107], [AP_SWS_SHWA_00308]). 애플리케이션은 GpuSelector 또는 AcceleratorSelector와 같은 전략 클래스를 사용하여 적합한 연산 대상을 유연하게 선택할 수 있습니다([AP_SWS_SHWA_00407], [AP_SWS_SHWA_00413]). 데이터 버퍼는 N차원 인덱스 공간(Range)에서 Buffer을 통해 할당되는 반면, 구조화된 읽기 및 쓰기 접근은 Accessor 및 Id을 통해 타입 안전하게 수행됩니다([AP_SWS_SHWA_00209], [AP_SWS_SHWA_00007], [AP_SWS_SHWA_00707]).

버퍼 할당, 커널 제출 및 동기화ApplicationBufferQueueTaskHandlerEventUse Case: 버퍼 및 큐 준비Create(bufferRange, propList)Result<unique_ptr<Buffer>>Create(device, errorHandler)Result<unique_ptr<Queue>>Use Case: 태스크 정의 및 제출ParallelFor(bufferSize, cfg)Submit(cfg, handler)Create()Result<Event>Use Case: SynchronisationWait()Result<void>

시퀀스 다이어그램: 버퍼 할당, 커널 제출(Submit) 및 비동기 동기화의 엔드투엔드 흐름. 출처: AP_SWS_SHWA_00209, AP_SWS_SHWA_00909, AP_SWS_SHWA_00912, AP_SWS_SHWA_00604.

연산 작업은 TaskHandler을(를) 통해 단일 태스크 또는 병렬 루프로 정의되며, 큐(Queue)를 통해 디바이스로 전달됩니다([AP_SWS_SHWA_01203], [AP_SWS_SHWA_00912]). 반환값은 블로킹 또는 제한 시간 기반 동기화를 위한 Event 객체를 제공합니다([AP_SWS_SHWA_00604], [AP_SWS_SHWA_00606]). 런타임 모니터링에는 현재 하드웨어 상태(kReady, kNotAccesible, kFailure, kUnknown)를 매핑하는 DeviceMonitor이(가) 사용됩니다([AP_SWS_SHWA_01407], [AP_SWS_SHWA_00103]).

오류는 ara::core::Result 및 ShwaErrorCode을(를) 통해 결정론적으로 보고됩니다([AP_SWS_SHWA_01301]). 태스크 실행이 실패할 경우 연산에 롤백 시맨틱이 없으므로, 연결된 버퍼는 미결정 상태로 수정된 것으로 분류되어야 합니다([AP_SWS_SHWA_00604], [AP_SWS_SHWA_00914]).

Safe Hardware Acceleration의 아키텍처 역할 및 시스템 경계

Safe Hardware Acceleration(shwa) 기능 클러스터는 AUTOSAR Adaptive Platform 내에서 GPU, DSP, NPU 및 FPGA와 같은 이기종 연산 장치를 위한 표준화되고 기능 안전한 실행 및 추상화 모델을 제공합니다(AUTOSAR_AP_EXP_SWArchitecture 132쪽). Platform Health Management와 같은 데몬 기반 플랫폼 클러스터와 달리, shwa은(는) 비데몬 기반 프로세스 로컬 라이브러리(In-Process 라이브러리)로 설계되었습니다(AUTOSAR_AP_EXP_SWArchitecture 127쪽). 이를 통해 런타임 환경은 소비하는 사용자 프로세스의 POSIX 주소 공간에서 직접 작동하며 IPC 지연 시간 없이 기본 가속기 드라이버로부터 연산 작업을 분리합니다(AUTOSAR_AP_SWS_SafeHardwareAcceleration 23쪽).

아키텍처 인터페이스 설계는 SYCL 및 OpenCL과 같은 이기종 컴퓨팅을 위한 최신 표준을 지향하지만, 이러한 패러다임을 AUTOSAR Adaptive Platform의 결정론적이고 안전 지향적인 요구 사항에 맞게 엄격하게 적용합니다(AUTOSAR_AP_EXP_SafeHardwareAccelerationAPI 15쪽). 모든 기본 인터페이스 클래스의 생성자는 private으로 선언되며, 인스턴스는 Create() 타입의 이름이 지정된 정적 팩토리 메서드를 통해서만 생성할 수 있습니다(EXP_SafeHardwareAccelerationAPI 15쪽). 거의 모든 작업은 반환 타입 ara::core::Result을(를) 통해 성공 여부 또는 시스템별 오류 상태를 알립니다([AP_SWS_SHWA_00308], EXP_SafeHardwareAccelerationAPI 15쪽). 일반 Adaptive Applications 외에도 다른 기능 클러스터(예: 이미지 처리 또는 인지 클러스터)가 대규모 병렬 HPC 워크로드를 위해 shwa의 C++ 인터페이스를 직접 통합할 수 있습니다(SWS_SafeHardwareAcceleration 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

컨텍스트 다이어그램: 이기종 가속기 제어를 위해 POSIX 프로세스 공간에 In-Process 라이브러리로 임베딩된 ara::shwa. 출처: AUTOSAR_AP_EXP_SWArchitecture 127쪽, SWS_SafeHardwareAcceleration 22쪽.

하드웨어 토폴로지, 플랫폼 검색 및 디바이스 선택

전체 시스템에 통합된 연산 가속기의 토폴로지는 인터페이스 Platform을(를) 통해 추상화됩니다([AP_SWS_SHWA_01107]). 애플리케이션은 먼저 정적 작업 Platform::GetPlatforms()을(를) 통해 등록된 모든 실행 플랫폼을 확인한 다음, Platform::GetDevices()을(를) 사용하여 각각 할당된 연산 장치를 쿼리합니다([AP_SWS_SHWA_01108], AUTOSAR_AP_EXP_SWArchitecture 132쪽). 각 물리적 또는 논리적 실행 대상은 시스템에서 Device 객체로 표현됩니다([AP_SWS_SHWA_00302]). Device은(는) IsCpu()([AP_SWS_SHWA_00310]), IsGpu()([AP_SWS_SHWA_00311]), IsAccelerator()([AP_SWS_SHWA_00312])을 포함하여 하드웨어 유형을 분류하기 위한 검사 메서드와 함수 템플릿 GetInfo()을(를) 통한 일반 세부 쿼리를 제공합니다([AP_SWS_SHWA_00313]).

적합한 연산 장치를 타겟팅하여 선택할 수 있도록 shwa은(는) 다형성 선택 패턴 DeviceSelector을(를) 제공합니다([AP_SWS_SHWA_00402], [AP_SWS_SHWA_00403]). 표준 구현인 GpuSelector([AP_SWS_SHWA_00406], [AP_SWS_SHWA_00407]), CpuSelector([AP_SWS_SHWA_00409], [AP_SWS_SHWA_00410]), AcceleratorSelector([AP_SWS_SHWA_00412], [AP_SWS_SHWA_00413])을 통해 시스템은 사전 정의된 우선순위나 휴리스틱 적합성 평가에 따라 연산 대상을 필터링할 수 있습니다. 팩토리 메서드 Device::Create(deviceSelector)은(는) 이 선택 메커니즘을 디바이스 인스턴스화에 직접 바인딩합니다([AP_SWS_SHWA_00309]).

토폴로지 쿼리 및 연산 장치 생성ApplicationPlatformDeviceSelectorDeviceGetPlatforms()Result<Vector<Platform>>GetDevices()Result<Vector<Device>>Use Case: 선택 및 인스턴스화SelectDevice()Result<Device>Create(deviceSelector)Result<Device>

시퀀스 다이어그램: 토폴로지 검색, 연산 대상 선택 및 논리적 디바이스 인스턴스화. 출처: AP_SWS_SHWA_01107, AP_SWS_SHWA_01108, AP_SWS_SHWA_00407, AP_SWS_SHWA_00309.

Buffer 및 Accessor를 통한 메모리 관리 및 다차원 데이터 접근

이기종 아키텍처에서의 병렬 연산 작업을 위해 shwa은(는) 물리적 데이터 스토리지와 논리적 접근을 엄격히 분리합니다(AUTOSAR_AP_EXP_SafeHardwareAccelerationAPI 15쪽). 메모리 영역은 템플릿 Buffer<DataT, Dimensions, AllocatorT>을(를) 통해 캡슐화됩니다([AP_SWS_SHWA_00202]). 1차원, 2차원 또는 3차원 공간에서 메모리의 확장은 구조체 Range<Dimensions>에 의해 지정되며([AP_SWS_SHWA_01007], [AP_SWS_SHWA_01008], [AP_SWS_SHWA_01009]), 해당 차원은 GetDimension0(), GetDimension1(), GetDimension2()을(를) 통해 쿼리할 수 있습니다([AP_SWS_SHWA_01010], [AP_SWS_SHWA_01011], [AP_SWS_SHWA_01012]). 버퍼는 자체 메모리 또는 할당자를 사용하여 새로 생성되거나([AP_SWS_SHWA_00209], [AP_SWS_SHWA_00210]), 기존 호스트 메모리 포인터(hostData)를 입력 또는 출력 데이터로 바인딩할 수 있습니다([AP_SWS_SHWA_00211], [AP_SWS_SHWA_00213], [AP_SWS_SHWA_00214]). 소유 버퍼는 Buffer::Create()에서 일반적으로 std::unique_ptr(으)로 반환됩니다(EXP_SafeHardwareAccelerationAPI 15쪽).

버퍼 데이터에 대한 실제 읽기 및 쓰기 접근은 포인터를 통해 직접 수행되지 않고, 타입화된 Accessor 객체를 통해 수행됩니다([AP_SWS_SHWA_00007], [AP_SWS_SHWA_00008]). 접근 모드는 열거형 AccessMode에 의해 결정되며, 이는 kRead, kWrite, kReadWrite 값을 포함합니다([AP_SWS_SHWA_00101]). N차원 공간의 불연속 인덱스 포인트 주소 지정은 해당 좌표 getter 및 setter([AP_SWS_SHWA_00710], [AP_SWS_SHWA_00711])가 포함된 Id<Dimensions> 타입을 통해 이루어집니다([AP_SWS_SHWA_00707], [AP_SWS_SHWA_00708], [AP_SWS_SHWA_00709]). 개별 배열 요소를 조작하기 위해 Accessor은(는) 인덱스 연산자 operator[]([AP_SWS_SHWA_00009], [AP_SWS_SHWA_00010])와 동기화 메서드 Get()([AP_SWS_SHWA_00012]) 및 Set()([AP_SWS_SHWA_00011])을 제공합니다. PropertyList 인스턴스를 전달하여 특정 메모리 속성 및 접근 속성을 선언적으로 추가할 수 있습니다([AP_SWS_SHWA_00802], [AP_SWS_SHWA_00015], [AP_SWS_SHWA_00215]).

Queue를 통한 태스크 정의, 작업 스케줄링 및 실행

가속기 디바이스에서의 연산 실행은 Queue 타입의 명령 큐를 통해 조정됩니다([AP_SWS_SHWA_00902]). Queue은(는) 팩토리 메서드 Create()을(를) 통해 특정 Device 또는 DeviceSelector에 바인딩되며, 선택적으로 ErrorHandler 및 PropertyList과(와) 함께 구성됩니다([AP_SWS_SHWA_00908], [AP_SWS_SHWA_00909]). 메서드 GetDevice()은(는) 큐에 결합된 연산 디바이스를 반환합니다([AP_SWS_SHWA_00910]). 큐의 실행 동작은 IsInOrder()을(를) 통해 확인할 수 있습니다([AP_SWS_SHWA_00911]). 인오더(In-Order) 큐에서는 큐에 추가된 연산 태스크가 엄격하게 순차적으로 처리됩니다(AUTOSAR_AP_EXP_SWArchitecture 133쪽).

구체적인 워크로드의 정의는 TaskHandler을(를) 사용하여 수행됩니다([AP_SWS_SHWA_01202]). 태스크 핸들러는 원자적 단일 작업(SingleTask(), [AP_SWS_SHWA_01203])과 데이터 병렬 연산 그리드(ParallelFor(), [AP_SWS_SHWA_01204])를 구별합니다. 이때 실행 대상은 열거형 Target을(를) 통해 가속기(kDevice) 또는 CPU 호스트 작업(kHostTask)으로 지정될 수 있습니다([AP_SWS_SHWA_00102]). 큐 제출은 메서드 Queue::Submit()을(를) 통해 이루어집니다([AP_SWS_SHWA_00912]). 더 복잡한 파이프라인의 경우, Submit()은(는) 서로 다른 하드웨어 파이프라인 간의 종속성을 매핑하기 위해 보조 큐 지정을 지원합니다([AP_SWS_SHWA_00913], AUTOSAR_AP_SWS_SafeHardwareAcceleration 23쪽).

버퍼 할당, 커널 제출 및 동기화ApplicationBufferQueueTaskHandlerEventUse Case: 버퍼 및 큐 준비Create(bufferRange, propList)Result<unique_ptr<Buffer>>Create(device, errorHandler)Result<unique_ptr<Queue>>Use Case: 태스크 정의 및 제출ParallelFor(bufferSize, cfg)Submit(cfg, handler)Create()Result<Event>Use Case: SynchronisationWait()Result<void>

시퀀스 다이어그램: 버퍼 할당, 커널 제출(Submit) 및 비동기 동기화의 엔드투엔드 흐름. 출처: AP_SWS_SHWA_00209, AP_SWS_SHWA_00909, AP_SWS_SHWA_00912, AP_SWS_SHWA_00604.

이벤트 기반 동기화 및 하드웨어 상태 모니터링

Queue::Submit()을(를) 통한 각 제출은 비동기 동기화 앵커 역할을 하는 Event 객체를 반환합니다([AP_SWS_SHWA_00912], [AP_SWS_SHWA_00602]). 호출자는 Event::Wait()을(를) 사용하여 하드웨어 연산 완료를 블로킹 방식으로 대기하거나([AP_SWS_SHWA_00604]), WaitFor(ms)을(를) 통해 제한 시간 기반 동기화를 수행할 수 있습니다([AP_SWS_SHWA_00606]). 여러 이벤트를 Event::Wait(const Vector<Event>&)을(를) 통해 집계하여 모니터링할 수 있습니다([AP_SWS_SHWA_00605]). 대안으로 큐 자체가 집합적 동기화 메서드를 제공합니다. Queue::Wait()은(는) 지금까지 큐에 들어간 모든 태스크가 처리될 때까지 블로킹되며([AP_SWS_SHWA_00914]), Queue::WaitFor(ms)은(는) 지정된 타임아웃으로 대기를 제한합니다([AP_SWS_SHWA_00917]).

런타임에 하드웨어 가속기의 신뢰성과 기능 안전을 보장하기 위해 shwa은(는) 모니터링 컴포넌트 DeviceMonitor을(를) 정의합니다([AP_SWS_SHWA_01402]). 인스턴스는 Device 또는 DeviceSelector에 관련된 정적 Create() 메서드를 통해 생성됩니다([AP_SWS_SHWA_01407], [AP_SWS_SHWA_01408]). 메서드 DeviceMonitor::Status()을(를) 통해 현재 하드웨어 상태가 쿼리됩니다([AP_SWS_SHWA_01409]). 열거형 DeviceStatus은(는) 4가지 표준화된 상태를 포함합니다: kReady(0, 작동 준비 완료), kNotAccesible(1, 접근 불가), kFailure(2, 오류 상태), kUnknown(255, 상태 확인 불가)([AP_SWS_SHWA_00103]). 이 모니터링 메커니즘은 ISO 26262에 따른 안전 분석 및 상태 모니터링(Health-Monitoring)의 기반을 형성합니다(AUTOSAR_AP_EXP_SafeHardwareAccelerationAPI 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

상태 다이어그램: ara::shwa::DeviceMonitor에 따른 DeviceStatus의 수명 주기 및 상태 전이. 출처: AP_SWS_SHWA_00103, AP_SWS_SHWA_01409.

오류 발생 시 동작 및 진단

shwa의 오류 처리 개념은 GetShwaDomain()을(를) 통해 획득할 수 있는 AUTOSAR 특정 오류 도메인 ShwaErrorDomain([AP_SWS_SHWA_01307])을(를) 기반으로 합니다([AP_SWS_SHWA_01311]). 특정 오류 코드는 표준화된 열거형 ShwaErrorCode에 의해 매핑됩니다([AP_SWS_SHWA_01301]). 여기에는 kRuntime과(와) 같은 근본적인 런타임 오류, kTaskExecutionFailure과(와) 같은 가속기에서의 연산 중단, kMemoryNotAllocated와(과) 같은 메모리 할당 오류, kIntegrityCorrupted와(과) 같은 메모리 무결성 위반, kResourceBusy와(과) 같은 일시적인 리소스 충돌, kInvalidAccessMode와(과) 같은 유효하지 않은 접근 모드가 포함됩니다([AP_SWS_SHWA_01301]). 오류 코드는 MakeErrorCode()을(를) 통해 타입 안전하게 구성되며([AP_SWS_SHWA_01312]), Name() 및 Message()을(를) 통해 텍스트 설명을 제공합니다([AP_SWS_SHWA_01308], [AP_SWS_SHWA_01309]).

비동기 실행 또는 이벤트 대기(Event::Wait() 또는 Queue::Wait()) 중 발생하는 오류는 데이터 일관성에 심각한 영향을 미칩니다. 연산 중에 kTaskExecutionFailure 또는 kRuntime이(가) 발생하는 경우, 영향을 받는 작업은 롤백 시맨틱을 갖지 않으며 연결된 버퍼의 데이터는 미결정 상태로 수정된 것으로 간주됩니다([AP_SWS_SHWA_00604], [AP_SWS_SHWA_00914]). 비동기 알림에는 ErrorHandler 클래스가 사용되며, 해당 콜백은 HandleError()을(를) 통해 트리거됩니다([AP_SWS_SHWA_00507], [AP_SWS_SHWA_00508]). 애플리케이션에 예외 처리가 필요한 경우, 오류는 ThrowAsException()을(를) 통해 ShwaException(으)로 변환될 수 있습니다([AP_SWS_SHWA_01303], [AP_SWS_SHWA_01310]).

추가 상세 근거 및 규격 참조

shwa 클러스터의 아키텍처 및 요구 사항은 규범적 요구 사항(Requirements)과 관련 설명 문서를 통해 완벽하게 입증되었습니다. 표 1은 핵심 개념과 주요 출처를 요약합니다.

주제 영역주요 규격 요소근거 위치
아키텍처 & 제공In-Process 라이브러리, Safety 카테고리의 기능적 분류AUTOSAR_AP_EXP_SWArchitecture S. 127, AUTOSAR_AP_EXP_SWArchitecture S. 132
토폴로지 & 선택Platform, Device, DeviceSelector, GpuSelector, CpuSelector[AP_SWS_SHWA_01107], [AP_SWS_SHWA_00308], [AP_SWS_SHWA_00403]
메모리 & 데이터 접근Buffer, Accessor, Range, Id, AccessMode[AP_SWS_SHWA_00209], [AP_SWS_SHWA_00007], [AP_SWS_SHWA_01007], [AP_SWS_SHWA_00101]
작업 스케줄링 & 동기화Queue, TaskHandler, Event[AP_SWS_SHWA_00908], [AP_SWS_SHWA_01202], [AP_SWS_SHWA_00604]
하드웨어 모니터링 & 오류DeviceMonitor, DeviceStatus, ShwaErrorCode, ErrorHandler[AP_SWS_SHWA_01407], [AP_SWS_SHWA_00103], [AP_SWS_SHWA_01301], [AP_SWS_SHWA_00507]

애플리케이션 내에서 일반적인 파이프라인 인스턴스화 및 여러 큐의 분리는 규격에 자세히 설명되어 있습니다(SWS_SafeHardwareAcceleration 22쪽, AUTOSAR_AP_SWS_SafeHardwareAcceleration 23쪽). 메모리와 연산 리소스의 엄격한 분리는 안전 필수 차량용 애플리케이션 분야에서 결정론적 동작을 보장합니다(AUTOSAR_AP_EXP_SafeHardwareAccelerationAPI 15쪽).

이 가이드는 AUTOSAR Adaptive 규격 R25-11을 기반으로 AI 큐레이션 어시스턴트에 의해 생성되었습니다.

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 클래스

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 클래스

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 클래스

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 클래스

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

DeviceMonitor 클래스

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

DeviceSelector 클래스

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 클래스

ErrorHandler manages asynchronous error handling for operations on HWA.

Event 클래스

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 클래스

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 클래스

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

Platform 클래스

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.

PropertyList 클래스

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 클래스

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 클래스

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

ShwaErrorDomain 클래스

Defines the error domain for Safe Hardware Acceleration.

ShwaException 클래스

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.

TaskHandler 클래스

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

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

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

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 열거형

Die Enumeration definiert die folgenden standardisierten Werte.

enum class AccessMode : std::uint32_t {...};
DeviceStatus 열거형

Die Enumeration definiert die folgenden standardisierten Werte.

enum class DeviceStatus : std::uint32_t {...};
ShwaErrorCode 열거형

Die Enumeration definiert die folgenden standardisierten Werte.

enum class ShwaErrorCode : ara::core::ErrorDomain::CodeType {...};
Target 열거형

Die Enumeration definiert die folgenden standardisierten Werte.

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

네임스페이스

아키텍처 협력

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.

헤더 파일(8장)