sched : 분할 계산 (split compute) 중 동기화(synchronizations) 감소 재도입 ([#20793](https://g
요약
llama.cpp 프로젝트에서 분할 계산(split compute) 시 발생하는 동기화(synchronization)를 줄이기 위한 최적화 작업이 도입되었습니다. CUDA 백엔드에서 비동기 복사 기능을 강화하여 토큰 간 동기화 오버헤드를 감소시키고 성능을 향상시킵니다.
핵심 포인트
- CUDA 백엔드에서 비동기 복사(async copy) 도입을 통한 성능 향상
- CPU-to-CUDA 복사 기능 추가 및 동기화 요구 사항 완화
- Vulkan 등 다른 백엔드에서도 적용 가능한 동기화 단순화 구조 채택
- hip/MUSA 백엔드 관련 스케줄러 강화 및 버그 수정
sched : 분할 계산 (split compute) 중 동기화(synchronizations) 감소 재도입 (#20793)
-
CUDA: 토큰 간 동기화 감소를 통해 성능 향상 (#17795)
-
ggml_backend_cuda_cpy_tensor_async()에 CPU-to-CUDA 복사 기능 추가
-
지원되는 백엔드(현재는 CUDA)에서 입력 복사 간의 동기화 요구 사항을 완화하는 함수 추가
-
동기식 복사(synchronous copy)를 비동기식 복사(async copy) 함수로 교체
-
비-CUDA 빌드에서도 컴파일이 가능하도록 매크로 가드(macro guards) 추가
-
링크 충돌(linking conflicts)을 방지하기 위해 ggml-backend.cpp의 백엔드 감지 로직 재작업
-
링크 문제를 피하기 위해 백엔드 및 버퍼 유형에 대한 비동기 CUDA 복사 시의 체크 요구 사항을 버퍼 유형만 확인하도록 완화
-
기타 소규모 정리
-
명시적 동기화(explicit syncs) 완화에 대한 선택적 적용(opt-in)을 더 일반화함. HtoD 복사와 그래프 실행 간의 동기화가 필요한 Vulkan과 같은 백엔드도 이제 이 변경 사항을 채택할 수 있음.
-
GGML_DEVICE_TYPE_CPU를 통한 CPU->CUDA 백엔드 비동기 복사에 대해 더 엄격한 체크를 재도입
-
ggml_backend_sched_split 초기화 시 ggml_backend_sync_mode의 초기화 수정
-
saaasg패턴을 준수하도록 동기화 단순화 -
@ggerganov의 제안 적용 (src->buffer를 buf_src로 변경)
Co-authored-by: Georgi Gerganov ggerganov@gmail.com
- @ggerganov의 제안 적용 (src->buffer를 buf_src로 변경) v2
Co-authored-by: Georgi Gerganov ggerganov@gmail.com
Co-authored-by: Georgi Gerganov ggerganov@gmail.com
- @JohannesGaessler의 코드 리뷰 제안 적용
Co-authored-by: Johannes Gäßler johannesg@5d6.de
-
hip 백엔드 파이프라인 병렬화 (pipeline parallel) 버그를 수정하기 위해 멀티 GPU (multi-GPU) 설정에 싱글 GPU (single-GPU) 동기화 (synchronizations)를 추가합니다.
-
스케줄러 강화 (Scheduler Hardening): copy_from_host CPU 분할(split) -> GPU 분할 (split) 최적화에서 hip/MUSA를 제외합니다.
-
스케줄러 강화 (Scheduler Hardening): 비동기(non-async) 백엔드를 위해 기존의 추가 동기화 (synchronizations)를 다시 추가합니다.
-
copy_from_host의 hip/musa 제외에 대한 면책 조항을 추가합니다. 이는 예방 차원이며, 눈에 보이는 성능 영향 (perf-impact)은 없으며, 언제든 별도로 재검토될 수 있음을 강조합니다.
Co-authored-by: Georgi Gerganov ggerganov@gmail.com
Co-authored-by: Johannes Gäßler johannesg@5d6.de
macOS/iOS:
- macOS Apple Silicon (arm64)
- macOS Apple Silicon (arm64, KleidiAI 활성화) 비활성화됨 (DISABLED)
- macOS Intel (x64)
- iOS XCFramework
Linux:
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)
- Ubuntu x64 (SYCL FP16)
Android:
Windows:
Windows:
- 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가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기