병렬 스레드 구성·메모리 대역폭 분석·점유율 프로파일링으로 GPU 성능 최적화 결
GPU 병렬 처리 아키텍처를 이해한 뒤 성능 최적화에 접근하는 방식이 달라졌습니다. 워프 단위로 스레드가 묶여 실행되기 때문에, 분기 조건이 스레드마다 다르면 직렬화가 발생해 성능이 크게 떨어지는 구조를 이해하고 나서 커널 설계 방향이 바뀌었습니다.
메모리 대역폭이 병목인 경우가 많았습니다. 연산 집약적인 커널보다 메모리 접근이 많은 커널이 더 느린 경우도 있어, 접근 패턴을 분석해 공유 메모리를 중간 버퍼로 활용하는 방식으로 전역 메모리 접근을 줄였습니다.
Nsight 같은 프로파일러로 점유율과 메모리 트랜잭션 효율을 측정하는 것이 핵심이었습니다. 추측으로 최적화하는 것보다 측정 먼저, 최적화 다음의 순서를 지켜야 실질적인 개선이 이뤄진다는 것을 배웠습니다.