36 lines
1012 B
Markdown
36 lines
1012 B
Markdown
|
|
# Driver API 통일 구현 계획
|
||
|
|
|
||
|
|
**날짜**: 2025-10-07
|
||
|
|
**결정**: Hybrid API 실패 → Driver API 통일로 전환
|
||
|
|
|
||
|
|
## 구현 경과
|
||
|
|
|
||
|
|
### 시도 1: Hybrid API (실패)
|
||
|
|
- Runtime API `cudaLaunchKernel()` 사용
|
||
|
|
- 결과: `CUDA_ERROR_INVALID_HANDLE` 여전히 발생
|
||
|
|
- 원인: Driver API 커널이 Runtime API surface를 인식 못함
|
||
|
|
|
||
|
|
## Driver API 통일 구현
|
||
|
|
|
||
|
|
### 수정 파일 목록
|
||
|
|
1. `ExternalMemoryCache.h` - 타입 변경
|
||
|
|
2. `ExternalMemoryCache.cpp` - Surface API 변경
|
||
|
|
3. `D3D12SurfaceHandler.h` - 타입 변경
|
||
|
|
4. `D3D12SurfaceHandler.cpp` - Kernel launch 원복
|
||
|
|
|
||
|
|
### 핵심 변경사항
|
||
|
|
|
||
|
|
**타입 변경**:
|
||
|
|
- `cudaSurfaceObject_t` → `CUsurfObject`
|
||
|
|
- `cudaResourceDesc` → `CUDA_RESOURCE_DESC`
|
||
|
|
|
||
|
|
**API 변경**:
|
||
|
|
- `cudaCreateSurfaceObject()` → `cuSurfObjectCreate()`
|
||
|
|
- `cudaDestroySurfaceObject()` → `cuSurfObjectDestroy()`
|
||
|
|
- `cudaLaunchKernel()` → `cuLaunchKernel()` (원복)
|
||
|
|
|
||
|
|
## 검증 기준
|
||
|
|
- ✅ Surface 생성 성공
|
||
|
|
- ✅ Kernel launch 성공
|
||
|
|
- ✅ 25 프레임 디코딩 성공
|