CUDA: im2col (2D 및 3D)에서 OW > 65535 처리 (#22944)
요약
본 기술 기사는 CUDA 기반의 im2col(2D 및 3D) 구현에서 출력 너비(OW)가 GPU 그리드 크기 제한인 65535를 초과할 때 발생하는 문제를 해결하는 방법을 설명합니다. 특히, 긴 오디오 데이터(예: 11초/16kHz)를 처리하는 Conv1d 인코더의 경우 OW가 이 한계를 넘어 '유효하지 않은 구성 인수' 오류를 발생시켰습니다. 이를 해결하기 위해 `block_nums.y`를 실제 OW와 GPU 최대 그리드 크기(`MAX_GRIDDIM_Y`) 중 작은 값으로 클램프하고, 커널 내부에서 스트라이드를 사용하여 나머지 영역을 루프 처리하도록 수정했습니다.
핵심 포인트
- CUDA의 im2col 함수는 출력 너비(OW)가 65535를 초과할 경우 그리드 크기 제한으로 인해 오류가 발생합니다.
- 이 문제는 특히 긴 시퀀스 데이터(예: 오디오 임베딩)를 처리하는 3D/1D 컨볼루션 레이어에서 두드러지게 나타납니다.
- 해결책은 `block_nums.y`를 GPU 최대 그리드 크기로 제한하고, 커널 내부 루프를 통해 초과된 영역을 순차적으로 계산하도록 수정하는 것입니다.
- 이 수정 사항은 2D 및 3D im2col 커널 모두에 적용되었으며, 기존의 테스트 케이스는 영향을 받지 않습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 llama.cpp Releases의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기