CUDA: PDL 디스패치(dispatch)를 보호하기 위해 호스트 측에서 PTX 버전 확인 ([#23530](https://github.com
요약
llama.cpp 프로젝트에서 CUDA PDL 디스패치 오류를 해결하기 위해 호스트 측에서 PTX 버전을 확인하는 로직을 추가했습니다. 또한 해시 분포 개선을 위해 MurmurHash3 mixer를 구현하고 코드 품질을 개선했습니다.
핵심 포인트
- CUDA 아키텍처 구분 한계를 극복하기 위해 ptxVersion 확인 로직 도입
- sm_90/sm_120 환경에서의 잘못된 PDL 디스패치 버그 수정
- MurmurHash3 mixer 구현을 통한 더 나은 해시 분포 확보
- 코드 포매팅 및 std::size_t 일관성 유지 작업 수행
CUDA: PDL 디스패치(dispatch)를 보호하기 위해 호스트 측에서 PTX 버전 확인 (#23530)
- CUDA: PDL 디스패치 (dispatch)를 보호하기 위해 호스트 측에서 PTX 버전 확인
__CUDA_ARCH_LIST__만 확인하는 것은 JIT (Just-In-Time) 컴파일에 충분하지 않습니다. 이 변수는 예를 들어 sm_90, sm_90a 또는 sm_90f를 위해 컴파일하는 것을 구분하지 못하기 때문입니다 (즉, forward-jittable PTX와 아키텍처/패밀리 특정 PTX를 구분하지 못함).
따라서 DCMAKE_CUDA_ARCHITECTURES="89;90a"로 컴파일할 때 버그가 발생할 수 있으며, 현재 코드는 forward-JIT 모드에서 sm_90/sm_120 환경의 PDL로 잘못 디스패치(dispatch)하게 됩니다.
이 PR은 런타임에 들어오는 커널의 cudaFuncAttributes::ptxVersion을 확인하여 이 문제를 해결합니다. 디바이스 코드(device-codes)는 항상 ptxVersion보다 크거나 같으므로(이를 위반하는 것은 CUDA/nvcc의 심각한 버그임), ptxVersion만 확인하는 것으로 충분합니다. 참조: https://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/#gpu-code-code-code
- 더 나은 해시 분포를 위해 MurmurHash3 mixer 구현
매직 상수(Magic constants)는 boost에서 가져왔습니다:
https://github.com/boostorg/container_hash/blob/2698b43803c012601e6bb1a6116e83767b97986c/include/boost/container_hash/detail/hash_mix.hpp#L19-L65
- ggml/src/ggml-cuda/common.cuh 업데이트
Co-authored-by: Johannes Gäßler johannesg@5d6.de
-
리뷰 의견 반영, 시드(seed)를 0이 아니게 설정
-
코드 포매팅(code-formatting) 적용
-
일관성을 위해 std::size_t를 size_t로 교체
Co-authored-by: Johannes Gäßler johannesg@5d6.de
macOS/iOS:
macOS/iOS:
- macOS Apple Silicon (arm64)
- macOS Apple Silicon (arm64, KleidiAI 활성화) DISABLED
- macOS Intel (x64)
- iOS XCFramework
Linux:
- Ubuntu x64 (CPU)
- Ubuntu arm64 (CPU)
- Ubuntu s390x (CPU)
- Ubuntu x64 (Vulkan)
- Ubuntu arm64 (Vulkan)
- Ubuntu x64 (ROCm 7.2)
- Ubuntu x64 (OpenVINO)
- Ubuntu x64 (SYCL FP32) DISABLED
Android:
Windows:
Windows:
- Windows x64 (CPU)
- Windows arm64 (CPU)
- Windows x64 (CUDA 12) - CUDA 12.4 DLLs
- Windows x64 (CUDA 13) - CUDA 13.3 DLLs
- Windows x64 (Vulkan)
- Windows x64 (SYCL) DISABLED
- Windows x64 (HIP)
openEuler:
- DISABLED
- openEuler x86 (310p)
- openEuler x86 (910b, ACL Graph)
- openEuler aarch64 (310p)
- openEuler aarch64 (910b, ACL Graph)
UI:
AI 자동 생성 콘텐츠
본 콘텐츠는 llama.cpp Releases의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기