한 CUDAGraph에 메모리 풀을 여러 개 묶으면 캡처가 풀 경계에서 덜 끊깁니다 | DAKER 커뮤니티
한 줄 요약
PyTorch 2.14부터 하나의 torch.cuda.CUDAGraph가 여러 메모리 풀을 참조할 수 있습니다. 예전처럼 풀 경계에서 캡처가 끊기거나 그래프를 나누지 않아도, 서로 다른 풀에서 나온 할당을 한 그래프에 묶을 여지가 생깁니다.
커스텀 풀·공유 워크스페이스·컴파일 구간 풀이 섞인 캡처에서 “풀마다 그래프를 쪼개야 했던” 조건을 먼저 재현한 뒤, 같은 워크로드를 단일 그래프로 다시 캡처해 보십시오. 노트에는 풀 개수, 캡처 성공 여부, 리플레이 시간, OOM·격리 오류를 남깁니다.
재현해 볼 실험 조건
- 서로 다른 메모리 풀에서 텐서를 만드는 짧은 CUDA 구간을 준비하고, 이전처럼 풀별로 그래프를 나눈 기준선을 측정합니다.
- 같은 구간을 하나의 CUDAGraph로 캡처·리플레이해, 풀 경계 오류 없이 끝나는지 확인합니다.
- 캡처 중 새 풀 할당이 섞이는 경우와, 미리 워밍업한 뒤 캡처하는 경우를 구분해 기록합니다.
어제 다룬 워밍업 연장·핀드 호스트·TunableOp와는 다른 축입니다. 오늘은 다중 풀 그래프만 봅니다.
실무에서 바로 볼 포인트
- 그래프 개수가 늘어 리플레이 오버헤드가 커진 핫 패스부터, 풀을 한 그래프에 합칠 수 있는지 확인합니다.
- 풀 수명·파괴 순서를 리플레이 훅·콜백과 섞어 쓰지 말고, 먼저 캡처 성공만 분리해 검증합니다.
- 컴파일 옵션의 메모리 풀 실험과 겹치면 CUDAGraph 다중 풀 결과만 따로 표에 적습니다.
관련 DAKER 학습
설명용 생성 이미지입니다. 동작은 로컬에서 다중 풀 구간을 단일 그래프와 분할 그래프로 비교해 확인하십시오.