Schedule Viewer
Schedule Viewer는 스케줄 컴파일을 지원하며, 고정된 후보 간의 makespan 비교도 지원합니다. Viewer는 정적 실행 계획을 보여 줄 뿐, 값이나 처리량을 검증하지는 않습니다.
Schedule Viewer는 cargo furiosa-opt가 생성한 스케줄 JSON 파일을 불러와 대화형 실행 타임라인으로 표시합니다. 빠른 시작에서는 Viewer를 개발 도구의 일부로 소개했으며, 이 절에서는 Viewer를 설치하고 스케줄을 살펴보는 방법을 설명합니다. 뷰어를 사용하면 어떤 연산이 병렬로 실행되는지, 각 연산이 어떤 컨텍스트나 자원을 점유하는지, 어떤 연산이 파이프라인 진행을 막는지 살펴볼 수 있습니다.
스케줄 검토
고정된 커널 워크로드를 비교하려면 최종 스케줄 사이클인 스케줄 makespan을 사용하십시오. 후보 간에 릴리스, 형태, 데이터 타입, 매핑을 동일하게 유지하십시오. 타임라인을 사용하여 중첩, 의존성, 자원 점유의 차이를 설명하십시오.
시작하기
Viewer 설치 및 실행
crates.io에서 furiosa-schedule-viewer 바이너리를 설치하십시오:
cargo install furiosa-schedule-viewer
Viewer를 실행하여 로컬 웹 UI를 시작하십시오:
furiosa-schedule-viewer
기본적으로 서버는 127.0.0.1:9254에 바인딩되며 기본 브라우저에서 페이지를 엽니다. 서버가 수신 대기하는 주소를 변경하려면 --host와 --port를 사용하십시오:
furiosa-schedule-viewer --host 127.0.0.1 --port 9254
스케줄 JSON 파일 생성
--dump-schedule은 컴파일된 스케줄을 JSON 파일로 기록합니다. 이 옵션은 cargo furiosa-opt compile로 단일 커널을 컴파일할 때 사용할 수 있습니다:
cargo furiosa-opt compile <device-function> \
--dump-schedule <path-to-json-file>
함수 이름을 위치 인자 필터로 지정하십시오. 함수 이름이 모호하면 kernel::gemm_kernel::gemm_kernel과 같이 전체 Rust 경로를 사용하십시오. 이 명령은 일반 커널 산출물도 그대로 생성합니다. 이 JSON 파일이 Schedule Viewer의 입력입니다.
사용법
드롭 영역을 클릭하거나 스케줄 JSON 파일을 페이지로 끌어다 놓아 시각화하십시오.
텐서와 연산자 살펴보기
노드를 클릭하면 해당 노드를 살펴볼 수 있습니다. 왼쪽 사이드바에는 이름, 수명, 컨텍스트, 연결된 노드 등의 세부 정보가 표시됩니다.
노드 위에 마우스를 올리거나 노드를 선택하면 관련 노드가 강조 표시됩니다. 예를 들어 연산자를 선택하면 해당 연산자의 입력 텐서와 출력 텐서가 강조 표시됩니다. 텐서를 선택하면 해당 텐서에 연결된 연산자가 강조 표시됩니다.
텐서와 연산자는 실제 하드웨어 명령어를 기반으로 하므로 vISA에 정의된 텐서 및 연산자와 다를 수 있습니다. Schedule Viewer는 가능한 경우 vISA 텐서의 이름과 형태, 그리고 연산자 설명을 표시합니다.
스케줄 확대하기
스케줄을 확대하여 특정 영역을 살펴볼 수 있습니다.
사이클 범위만 조정하려면 상단의 타임라인을 드래그하거나 오른쪽 상단의 Cycle Range 입력란을 사용하십시오. 메모리 주소 범위를 조정하려면 Enable Brush를 클릭한 다음 스케줄 뷰를 드래그하십시오. 브러시는 사이클 범위와 메모리 주소 범위를 모두 설정합니다.
전체 스케줄 뷰로 되돌리려면 타임라인 배경을 클릭하거나 오른쪽 상단의 Reset을 클릭하십시오.