진단
진단은 스케줄 뷰를 검증할 수 있는 병목 가설 하나로 바꾸는 과정입니다. 데이터 의존성과 공유 자원 대기를 구분하십시오. 스케줄 뷰를 살펴보는 것만으로는 속도 향상을 입증할 수 없습니다.
덤프된 스케줄 살펴보기
Schedule Viewer 도구 레퍼런스를 참고하여 JSON을 생성하고 여십시오. Viewer는 스케줄된 타임라인, 연산 컨텍스트, 수명, 연결된 텐서, 연산자 설명을 보여 줍니다. 노드를 선택하여 해당 노드의 입력과 출력을 추적하십시오. 사이클 범위를 확대하여 의심되는 영역을 분리하십시오.
타임라인 읽기
마지막으로 스케줄링된 사이클이 메이크스팬(makespan)을 정하며, 이 메이크스팬을 결정하는 구간이 진단의 근거가 됩니다:
- 마지막 사이클까지 이어지는 구간을 찾으십시오.
- 그 구간의 선행 요소가 메모리 의존성인지, 공유 자원인지, 스케줄링되지 않은 공백인지 확인하십시오.
- 관련 컨텍스트 레인을 비교하여 다른 연산이 겹쳐 실행될 수 있는지 확인하십시오.
- 후보 변경 사항 하나와 그 변경이 해당 구간을 바꿀 것으로 보는 이유를 밝히십시오.
스케줄은 컴파일러의 정적 동작을 보여 줍니다. 스케줄은 값 오라클을 대신하지 않으며, 디바이스 처리량을 입증하지도 않습니다.
비교의 유효성 유지하기
각 후보마다 소스 리비전, 릴리스 프로필, 디바이스 함수 필터, 형태, 요소 타입, 매핑, 스케줄 파일을 기록하십시오. 후보 간에는 선택한 커널 선택 사항만 바꾸십시오. 이러한 입력 중 하나라도 바뀌면 그 결과를 튜닝 비교가 아닌 새로운 기준선으로 취급하십시오.