본문 바로가기

SASS_Probe

(35)
소스 코드에서 하드웨어 실행까지 이어지는 추적 가능한 분석 모델의 구축 이 표현은 단순히 소스 코드와 SASS를 나란히 보여준다는 뜻이 아니다.핵심은 고수준 코드가 어떤 변환을 거쳐 실제 GPU 명령이 되고, 그 명령이 실행 과정에서 어떤 현상을 만들었는지를 연속적으로 추적할 수 있는 분석 구조를 만든다는 데 있다.전체 흐름은 다음과 같다.CUDA 소스 코드 ↓ 컴파일PTX 중간 표현 ↓ 아키텍처별 코드 생성SASS 기계어 ↓ GPU 실행실행 cycle, stall, pipeline, memory, register metric기존 분석은 이 단계들을 따로 보는 경우가 많았다.소스 코드는 소스 코드대로 확인SASS는 디스어셈블 결과로 따로 확인성능은 실행 시간이나 NCU metric으로 따로 확인이 방식에서는 성능 문제가 발견되어도 그것이 어느 코드 구조에서 ..
SASS 기반 GPU 하드웨어 프로빙 방법론 1. 목적SASS 프로브의 목적은 단순히 GPU 기계어를 출력해 보는 것이 아니다.핵심 목적은 다음과 같다.통제된 CUDA 프로그램을 작성하고, 실제 생성된 SASS와 실행 결과를 함께 분석해 GPU의 명령어 latency, throughput, 자원 충돌, 메모리 구조와 같은 실행 특성을 추론한다.전체 과정은 다음과 같다.하드웨어 가설 설정 ↓프로브 코드 작성 ↓컴파일 ↓PTX·SASS 검증 ↓실제 GPU 실행 ↓cycle·성능 지표 수집 ↓대조 실험과 변수 sweep ↓하드웨어 행동 모델 작성SASS는 이 과정의 중간 결과다.SASS→ 어떤 기계어가 생성됐는지 확인실행 결과→ 그 기계어가 실제로 어떻게 동작했는지 ..
SASS 만으로 명령어 latency 를 확정할 수 없는 이유 - ffma 실험 기준 1. 문제의 핵심현재 FFMA 프로브의 SASS를 확인하면 두 커널이 서로 다른 데이터 의존 구조로 생성됐다는 사실을 알 수 있다.의존 커널에서는 모든 FFMA가 동일한 레지스터 R9를 입력과 출력으로 사용한다.FFMA R9, R9, R0, ...FFMA R9, R9, R0, ...FFMA R9, R9, R0, ...따라서 각 명령은 이전 FFMA가 만든 R9 값을 기다려야 한다.R9₀ ↓FFMA ↓R9₁ ↓FFMA ↓R9₂반면 독립 커널은 여러 accumulator를 번갈아 사용한다.FFMA R12, R12, R7, ...FFMA R11, R11, R7, ...FFMA R10, R10, R7, ...FFMA R9, R9, R7, ......R12를 사용하는 FFMA가 실행된 뒤, 다음 R12 FFM..
공개되지 않은 하드웨어 특성을 실행으로 추론하는 방법 1. 문제의 출발점CPU와 GPU 내부에는 덧셈기, 곱셈기, 부동소수점 연산기, 메모리 접근 장치, 명령어 스케줄러처럼 서로 다른 기능을 수행하는 회로 조합이 존재한다.하지만 소프트웨어 개발자에게 공개되는 정보는 대부분 다음 수준에 머문다.코어 수클럭캐시 용량메모리 대역폭지원 명령어 집합이론적 최대 연산량실제 성능을 결정하는 더 세부적인 마이크로아키텍처 정보는 전부 공개되지 않는 경우가 많다.예를 들면 다음과 같다.특정 명령어의 실제 지연시간한 사이클에 시작할 수 있는 명령어 수두 명령어가 같은 실행 파이프라인을 공유하는지명령어 발행과 실행 유닛의 대응 관계레지스터 읽기 포트의 제한캐시 교체 정책메모리 주소와 캐시·메모리 뱅크의 대응 관계warp 스케줄러의 구체적인 발행 조건uops.info 역시 공식 ..