좋아. 사실 SASS를 보기 시작하면 가장 먼저 해야 할 일은 명령어를 기능별로 분류하는 것이야.
처음에는 개별 명령어 의미를 외우기보다,
1. Memory
2. Arithmetic
3. Special Function
4. Data Movement
5. Control Flow
6. Tensor Core
로 나누는 게 훨씬 이해가 쉽다.
1. Memory 계열
GPU 메모리와 레지스터 사이의 데이터 이동
LDG
LDG.E R4, [R2]
의미
R4 = *R2;
즉
Global Memory
↓
Register
로드
예를 들어
float x = input[i];
를 컴파일하면
대부분
LDG
가 나온다.
STG
STG.E [R2], R4
의미
*R2 = R4;
즉
Register
↓
Global Memory
저장
예시
output[i] = x;
↓
STG
LDS
Shared Memory → Register
예시
float x = smem[tid];
↓
LDS
STS
Register → Shared Memory
예시
smem[tid] = x;
↓
STS
2. Arithmetic 계열
FADD
Float Add
FADD R1, R2, R3
의미
R1 = R2 + R3;
FMUL
Float Multiply
FMUL R1, R2, R3
의미
R1 = R2 * R3;
FFMA
Fused Multiply Add
FFMA R1, R2, R3, R4
의미
R1 = R2 * R3 + R4;
딥러닝에서 가장 많이 보이는 명령어 중 하나
왜냐면
sum += a*b;
가
FFMA
하나로 바뀐다.
GEMM 내부 대부분이
FFMA
FFMA
FFMA
FFMA
또는
HMMA
HMMA
HMMA
로 구성됨
3. Comparison 계열
FMAX
FMAX R1, R2, R3
의미
R1 = max(R2,R3);
ReLU
y=max(x,0);
↓
FMAX
FMNMX
Min/Max
최댓값
최솟값
선택
Reduction Max에서 자주 등장
4. Warp Communication
이게 GPU에서 매우 중요
SHFL
Shuffle
SHFL
다른 쓰레드 레지스터 읽기
예를 들어
x += __shfl_down_sync(mask,x,16);
↓
SHFL
Warp Reduction 핵심
sum
max
mean
거의 다 SHFL 등장
예시
for(offset=16;offset>0;offset/=2)
x+=__shfl_down_sync(...);
↓
SHFL
FADD
SHFL
FADD
SHFL
FADD
이 패턴 보이면
Reduce Sum
가능성 높음
5. Special Function Unit
SFU
MUFU.EX2
MUFU.EX2
의미
2^x
exp(x)
계산 시
exp(x)
=
2^(x/log(2))
변환해서 사용
Softmax
Sigmoid
GELU
전부 등장
MUFU.RSQ
MUFU.RSQ
의미
1/sqrt(x)
LayerNorm
RMSNorm
BatchNorm
에서 거의 반드시 등장
패턴
sum
variance
RSQ
mul
보이면
Normalization
후보
6. Branch
BRA
Branch
BRA label
CPU의
goto
비슷
if문
loop
switch
전부 여기서 구현
ISETP
Set Predicate
ISETP
조건 계산
x<y
↓
ISETP
그 다음
@P0 BRA
형태
7. Tensor Core
딥러닝에서 제일 중요
HMMA
Hopper/Ampere MMA
HMMA
의미
D += A×B
Tensor Core 연산
만약
HMMA
HMMA
HMMA
HMMA
HMMA
수백줄
나온다
↓
거의 확실하게
GEMM
Attention
Conv
Linear
중 하나
실제로 SASS 읽을 때
처음엔 명령어 하나씩 보지 말고
이렇게 본다.
LDG
LDG
FFMA
FFMA
FFMA
STG
↓
데이터 읽음
곱셈누적
결과 저장
=
GEMM 후보
LDG
FMAX
SHFL
FMAX
SHFL
↓
최댓값 reduction
=
ReduceMax 후보
LDG
MUFU.EX2
SHFL
FADD
RCP
FMUL
↓
exp
sum
normalize
=
Softmax 후보
'SASS_Probe' 카테고리의 다른 글
| fma_f32 분석 (0) | 2026.06.13 |
|---|---|
| mul_f32 분석 (0) | 2026.06.13 |
| SASS 분석을 통한 연산 구조 해석과 최적화 (0) | 2026.06.13 |
| add_f32 분석 (0) | 2026.06.11 |
| copy_global 분석 (0) | 2026.06.08 |