[CUDA] ggml_cuda_cpy에 cudaMemcpy2DAsync 패스트 패스(fast path) 추가 ([#25057](https://g
요약
llama.cpp의 CUDA 구현에서 ggml_cuda_cpy에 cudaMemcpy2DAsync 패스트 패스를 추가하여 성능을 최적화했습니다. 텐서가 완전히 연속적이지 않은 경우에도 요소별 스칼라 복사 대신 비동기 2D 복사를 사용하여 효율성을 높였습니다.
핵심 포인트
- cudaMemcpy2DAsync를 활용한 2D 피치 블록 복사 최적화
- 비연속적 텐서의 행 단위 연속성을 활용한 복사 속도 개선
- 특정 환경(-np 4)에서의 GDN 순환 스냅샷 업데이트 문제 해결
- 새로운 스트라이드 복사 경로에 대한 테스트 케이스 추가
[CUDA] ggml_cuda_cpy에 cudaMemcpy2DAsync 패스트 패스(fast path) 추가 (#25057)
- [CUDA] ggml_cuda_cpy에 cudaMemcpy2DAsync 패스트 패스 (fast path) 추가
단순한 2D 피치 블록 복사(pitched block copies)인 동일 유형, 동일 형태의 스트라이드 복사(strided copies)를 위한 CUDA ggml_cpy 패스트 패스 (fast path)를 추가합니다.
텐서가 완전히 연속적(contiguous)이지는 않지만 각 행이 연속적인 경우, 이제 느린 요소별 스칼라 복사 커널(element-wise scalar copy kernel) 대신 cudaMemcpy2DAsync를 사용합니다.
이는 롤백 슬롯(rollback slots)이 캐시 스트라이드 간격(cache stride gaps)에 의해 분리되는 -np 4 환경에서의 GDN 순환 스냅샷 업데이트(recurrent snapshot update) 문제를 해결합니다.
-
새로운 최적화된 스트라이드 복사 경로를 실행하는 새로운 테스트 추가
-
새로운 테스트가 실패함에 따라, OpenVINO에서의 스트라이드 복사(strided copy)에 대해 지원되지 않음(unsupported)을 반환
macOS/iOS:
- macOS Apple Silicon (arm64)
- macOS Apple Silicon (arm64, KleidiAI 활성화) 비활성화(DISABLED)
- macOS Intel (x64)
- iOS XCFramework
Linux:
<strong>Linux:</strong>
- 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)
- Ubuntu x64 (SYCL FP16)
<strong>Android:</strong>
<strong>Windows:</strong>
<strong>Windows:</strong>
- Windows x64 (CPU)
- Windows arm64 (CPU)
- Windows arm64 (OpenCL Adreno)
- Windows x64 (CUDA 12) - CUDA 12.4 DLLs
- Windows x64 (CUDA 13) - CUDA 13.3 DLLs
- Windows x64 (Vulkan)
- Windows x64 (OpenVINO)
- Windows x64 (SYCL)
- 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가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기