spilling 분석 + 휴리스틱 할당 순서 조정 + 파이프라인 스톨 제거 + 타이밍 측정 검증
졸업 논문에서 GPU 셰이더 코드 최적화를 주제로 연구했고, 컴파일러 최적화 기법을 직접 분석해봤습니다. 레지스터 할당에서는 레지스터 수가 부족하면 spilling이 발생해서 메모리 접근이 늘어나는 문제를 실험을 통해 확인했습니다. 휴리스틱 접근으로 자주 쓰이는 변수를 레지스터에 오래 유지하는 방향으로 할당 순서를 조정했더니 spilling 횟수가 줄었습니다. 명령 스케줄링에서는 파이프라인 스톨을 줄이기 위해 의존성이 없는 명령어를 앞당기는 방식을 배웠습니다. 최적화 적용 전후 성능은 GPU 타이밍 쿼리로 실제 실행 시간을 측정해서 수치로 검증했습니다.
최적화는 측정 없이 추측으로 시작하면 잘못된 방향으로 가는 자리라는 걸 그때 배웠습니다.