본문 바로가기

GPU Probing Lab

Warp Progress Signature Probing - Chapter 1. Workload Pattern에서 Transient Phase까지

0. 이 문서의 목적

이 문서는 지금까지 진행한 warp scheduler / memory latency 계열 probe의 1차 연구 사이클을 정리한다.

이 연구의 목적은 GPU scheduler의 내부 정책을 단정하는 것이 아니다.  
목적은 synthetic workload를 통해 GPU가 남기는 **warp-level progress signature**를 관찰하고, 그 signature가 어떤 조건에서 유지되거나 변형되는지 단계적으로 읽는 것이다.

따라서 이 연구는 다음 질문에서 출발한다.

  • 같은 cycle budget 안에서,
  • 서로 다른 warp execution pattern은
  • 서로 다른 progress signature를 남기는가?

그리고 이후 질문은 다음처럼 확장되었다.

그 signature는 반복 가능한가?
그 signature는 warp_id가 아니라 workload pattern을 따라가는가?
mixed workload에서도 유지되는가?
global memory dependency는 단순히 느린 memory access로만 설명되는가?
ready warp supply, warm state, composition, launch perturbation은 progress signature를 어떻게 바꾸는가?

1. 전체 흐름 요약

전체 실험 흐름은 다음과 같다.

Same Workload Baseline
        ↓
Warp Execution Signature v0
        ↓
Warp Signature Repeatability
        ↓
Warp Signature Permutation
        ↓
Mixed Workload Probe
        ↓
Global Memory Contention Amplification
        ↓
Latency Hiding Ratio
        ↓
Latency Hiding Warmup Stability
        ↓
Ready Warp Supply
        ↓
Shared Memory Ready Interference
        ↓
Composition Transient
        ↓
Composition Phase Repeatability
        ↓
Scheduler Phase Probe
        ↓
Normalized Window Probe
        ↓
Launch Perturbation Probe

이 흐름은 단순히 실험을 많이 나열한 것이 아니다.

각 실험은 이전 실험에서 남은 해석 오염 요소를 제거하거나, 새로 관찰된 신호를 더 좁히기 위해 설계되었다.


2. 1차 연구의 핵심 결론

가장 압축한 결론은 다음이다.

warp progress는 단순히 ALU, shared memory, global memory 같은 자원 분류만으로 결정되지 않는다. 동일한 cycle budget 안에서 progress signature는 workload dependency structure, ready warp supply, memory locality, warm/cold state, ready-source composition, observation window, launch/memory perturbation이 결합되어 형성된다.

조금 더 구체적으로는 다음과 같다.

1. workload execution pattern은 warp-level progress signature를 남긴다.
2. 그 signature는 반복 가능하며, warp_id보다 workload pattern에 더 강하게 귀속된다.
3. mixed workload 조건에서도 role별 signature ordering은 유지된다.
4. global memory dependent workload는 낮은 progress뿐 아니라 variability signature도 남긴다.
5. global memory signature는 단순 contention보다 ready warp supply, address locality, memory warm state에 의해 크게 변형된다.
6. latency hiding은 ready warp의 존재만으로 끝나는 문제가 아니라, ready source composition과 phase perturbation에 의해 rare transient event를 만들 수 있다.
7. rare transient event는 일부 artifact를 제거한 뒤에도 남았으며, launch boundary 자체보다는 long-duration global memory read perturbation이 핵심 후보로 좁혀졌다.

3. Baseline과 최초 Signature 관찰

3.1 Same Workload Baseline

첫 단계는 동일 workload 기준선을 잡는 것이었다.

모든 warp가 동일한 independent ALU workload를 수행할 때, warp별 progress가 특정 warp_id에 의해 강하게 갈라지는지 확인했다.

이 baseline의 목적은 scheduler 정책을 단정하는 것이 아니다.

목적은 다음이다.

후속 실험에서 관찰되는 progress 차이가
단순 warp_id bias인지,
workload structure 차이인지 해석할 기준선을 확보한다.

즉 이 baseline은 이후 모든 실험의 control case다.


3.2 Warp Execution Signature v0

다음으로 서로 다른 execution pattern을 가진 warp들이 같은 cycle budget 안에서 어떤 progress signature를 남기는지 관찰했다.

사용된 pattern은 다음 계열이다.

fast_independent_alu
dependent_alu_chain
shared_load
dependent_global_load

v0 관찰에서는 다음 ordering이 나왔다.

fast_independent_alu
> shared_load
> dependent_alu_chain
> dependent_global_load

이 결과의 핵심은 “ALU가 빠르고 memory가 느리다”가 아니다.

오히려 중요한 것은 다음이다.

shared_load > dependent_alu_chain

즉 memory access가 있다는 사실보다, dependency chain이 instruction-level progress를 얼마나 막는지가 더 중요할 수 있다. v0 파일에서도 이 결과는 단순 속도 비교가 아니라 dependency structure와 memory hierarchy가 warp-level progress에 남기는 상대적 흔적을 해석하기 위한 observation으로 정의되어 있다.

따라서 v0의 의미는 다음과 같다.

서로 다른 workload execution pattern은
warp-level progress에 구분 가능한 signature를 남긴다.

다만 v0는 단일 observation이었다.

그래서 다음 의심이 남았다.

단일 run noise인가?
warp_id bias인가?
role assignment artifact인가?

4. Signature 검증: Repeatability와 Permutation

4.1 Repeatability

Repeatability 실험은 v0 signature가 단일 run의 우연인지 확인했다.

동일 조건에서 여러 번 실행했을 때 signature가 유지된다면, v0 결과는 단순 noise가 아니라 구조적 관찰값에 가까워진다.

이 단계의 역할은 다음이다.

v0 observation
  ↓
reproducible signature

즉 새로운 workload를 추가한 실험이 아니라, 기존 observation의 신뢰도를 높인 validation 단계다.


4.2 Permutation

Repeatability 이후에도 질문은 남았다.

반복되는 signature가 workload 때문인가?
아니면 특정 warp_id 때문인가?

Permutation 실험은 workload pattern assignment를 warp_id에 회전 배치해, progress signature가 warp_id에 고정되는지 workload assignment를 따라 이동하는지 확인했다.

결론은 다음이다.

높은 progress와 낮은 progress는 warp_id에 고정되지 않고,
workload pattern assignment를 따라 이동했다.

따라서 v0에서 관찰된 signature는 특정 warp_id bias보다 workload execution pattern에 더 강하게 귀속된다고 해석할 수 있다.

이 시점까지의 결론은 다음이다.

workload별 progress signature는
반복 가능하며,
warp_id보다 workload pattern에 더 강하게 귀속된다.

5. Mixed Workload와 Global Memory Signature

5.1 Mixed Workload Probe

Permutation 이후 질문은 다음으로 바뀐다.

isolated condition에서 보인 signature가
mixed workload composition에서도 유지되는가?

Mixed Workload Probe에서는 서로 다른 workload가 같은 block 안에서 공존할 때 role별 signature ordering이 유지되는지 확인했다.

결론은 다음이다.

light_alu
> dependent_alu
> shared_load
> dependent_global_load

즉 isolated workload에서 확인한 signature ordering은 mixed composition에서도 유지되었다.

하지만 여기서 새 신호가 나왔다.

dependent_global_load는 평균 progress가 가장 낮을 뿐 아니라,
run-to-run variability도 가장 컸다.

이 신호가 이후 global memory 계열 실험의 출발점이 되었다.


5.2 Global Memory Contention Amplification

다음 질문은 이렇다.

dependent_global_load의 낮은 progress와 variability는
단순히 global-load warp 수가 많아져서 생기는가?

결과는 단순하지 않았다.

global-load warp 수가 1개에서 4개까지 늘어날 때 progress가 단순 감소하지 않았고, 모든 warp가 global-load에 묶였을 때 크게 하락했다.

이 결과는 다음 해석을 낳았다.

global memory progress signature는
global-load warp 수에 단순 비례해 악화되지 않는다.

memory-stalled warp가 있을 때
scheduler가 선택할 ready warp supply가 남아 있는지가 중요하다.

또한 address overlap과 dispersed address 조건의 차이는 address locality / reuse 가능성이 global memory signature를 크게 바꾼다는 점을 보여주었다.

따라서 global memory signature는 다음 요소의 결합으로 봐야 한다.

global-load warp 수
ready warp supply
address locality
cache/TLB warm state
latency hiding 가능성

6. Latency Hiding 분석

6.1 Latency Hiding Ratio

Latency Hiding Ratio Probe는 ready warp supply를 직접 분리했다.

질문은 다음이었다.

global memory warp가 stall될 때,
ready light_alu warp가 그 빈 실행 기회를 얼마나 유지하는가?

결과는 분명했다.

ready light_alu warp는 stalled global warp가 많아져도
progress signature를 거의 유지했다.

반면 dependent_global_stalled progress는 stalled warp 비율이 증가할 때 다른 regime으로 이동했다.

즉 latency hiding은 단순히 global memory latency를 보는 문제가 아니라, scheduler가 선택할 수 있는 ready warp가 남아 있는지의 문제였다.


6.2 Warmup Stability

Latency Hiding Ratio에서 관찰된 초기 low progress가 steady-state behavior인지 확인하기 위해 warmup stability 실험을 수행했다.

결론은 다음이다.

초기 low progress 일부는 steady-state latency hiding이 아니라
memory hierarchy warm/cold state에 민감한 transient signature에 가깝다.

특히 eviction 조건에서는 global progress가 약 49~50 수준으로 낮아졌고, reuse / reinitialize / measured-after-global-chain-warmup 조건에서는 약 81~82 수준으로 안정화되었다. 이 결과는 global memory dependent workload의 progress가 cache/TLB/memory warm state에 민감하다는 해석을 지지한다.

따라서 이후 latency hiding 실험에서는 다음 원칙이 필요해졌다.

raw run의 초기 low sample을 steady-state behavior로 바로 해석하지 않는다.
warmup/control 조건을 명시한다.
mean뿐 아니라 min, CV, raw event pattern을 함께 본다.

7. Ready Warp Source와 Shared Memory Interference

7.1 Ready Warp Supply Probe

다음 질문은 ready warp의 “수”가 아니라 “종류”였다.

ready warp가 light_alu인지,
dependent_alu인지,
shared_load인지에 따라
global stalled progress가 달라지는가?

결과는 다음과 같았다.

ready source 종류는 ready-side progress signature를 크게 바꾼다.
하지만 dependent_global_stalled의 steady-state progress는 대부분 유지된다.

즉 light_alu_ready, dependent_alu_ready, mixed_ready_sources 조건에서는 global stalled progress가 거의 비슷하게 유지되었다.

예외는 shared_load_ready였다.

shared_load_ready 조건에서
global stalled progress가 특정 run에서 크게 낮아지는 transient가 발생했다.

해당 결과는 ready source의 instruction stream 차이가 ready warp 자신의 progress에는 강하게 드러나지만, 같은 4 ready / 4 stalled 조건에서는 global stalled steady-state를 크게 바꾸지 않았다는 점을 보여준다. 다만 shared_load_ready 조건은 global variability를 키웠다.


7.2 Shared Memory Ready Interference

shared_load_ready 조건의 이상 신호를 분해하기 위해 shared memory ready source를 세분화했다.

조건은 다음 계열이었다.

shared_no_conflict_ready
shared_bank_conflict_ready
shared_dependent_chain_ready

결론은 다음이다.

shared memory access 자체가 항상 global stalled variability를 키우는 것은 아니다.
bank conflict도 큰 transient를 만들지는 않았다.
문제는 shared_dependent_chain_ready 조건에서 강하게 나타났다.

shared dependent-chain 조건에서는 global stalled warp 전체가 특정 run에서 크게 낮아지는 transient가 나타났고, bank conflict는 shared ready progress를 낮추지만 큰 run-to-run transient를 만들지는 않았다.

따라서 원인은 다음처럼 좁혀졌다.

shared memory 자체 X
단순 bank conflict X
shared dependent-chain ready source와 global stalled workload의 특정 composition O

8. Composition Transient와 Phase Repeatability

8.1 Composition Transient

다음 질문은 shared dependent-chain ready warp의 개수였다.

shared dependent-chain ready가 몇 개일 때
global transient가 발생하는가?

결과는 단조적이지 않았다.

0 shared-chain + 4 light + 4 global → 안정
1 shared-chain + 3 light + 4 global → 약한 transient
2 shared-chain + 2 light + 4 global → 완전 안정
3 shared-chain + 1 light + 4 global → 강한 transient
4 shared-chain + 0 light + 4 global → 안정

즉 문제는 shared-chain ready warp가 많다는 사실 자체가 아니었다.

핵심은 다음이다.

3 shared-chain + 1 light + 4 global

이 비대칭 ready-source composition에서 가장 강한 transient가 발생했다.

이 결과는 global stalled variability가 ready source composition의 균형, role 비대칭성, run ordering 또는 scheduling phase가 결합되어 나타나는 composition-level transient임을 시사한다.


8.2 Composition Phase Repeatability

다음 질문은 이 transient가 단발성 artifact인지 여부였다.

3 shared-chain + 1 light + 4 global 조건의 transient는
우연히 한 번 나온 것인가?

결론은 다음이다.

단발성 우연은 아니다.
여러 batch와 조건에서 희박하게 반복된다.
하지만 특정 run index에 고정된 deterministic phase도 아니다.

prewarm 횟수, light warp placement, seed 방식을 바꿔도 transient가 사라지지 않았고, light warp placement에 따라 transient 강도와 빈도가 달라졌다. 이 실험은 latency hiding 분석을 steady-state mean이 아니라 transient event structure와 role placement sensitivity 분석으로 확장했다.

따라서 이 현상은 다음처럼 정의할 수 있다.

3 shared-chain + 1 light + 4 global composition에서
희박하게 반복되는 placement-sensitive phase event

9. Scheduler/Grid Phase와 Observation Window

9.1 Scheduler Phase Probe

다음 질문은 transient가 block-local인지 grid-level인지였다.

block 수를 늘리고 dummy kernel을 삽입해 event localization을 확인했다.

결론은 다음이다.

transient는 특정 block 하나의 문제가 아니라,
여러 block이 같은 run에서 함께 흔들리는 grid-level phase event에 가깝다.

blocks=8 조건에서는 transient rate 자체가 증가했고, 여러 run에서 모든 block 또는 다수 block이 동시에 low-progress 상태로 들어갔다. 또한 dummy kernel 삽입은 transient를 제거하지 않고 event 위치와 빈도를 바꾸었다.

단, cycle budget 조건에서는 문제가 있었다.

cycle=50k인데 threshold=60 유지
→ 정상 progress도 threshold 아래로 잡힘

cycle=200k인데 threshold=60 유지
→ threshold가 너무 낮아짐

따라서 observation window와 threshold를 정규화해야 했다.


9.2 Normalized Window Probe

Normalized Window Probe는 fixed threshold artifact를 제거했다.

cycle budget에 맞춰 threshold를 scaling하자 no-dummy 조건에서는 transient가 검출되지 않았다.

50k / 100k / 200k / 400k no-dummy
→ transient 0

따라서 이전 scheduler phase probe에서 cycle50k 조건이 전부 transient로 잡힌 것은 fixed threshold artifact였음이 확인되었다. 반면 dummy_before 조건에서는 global stalled normalized progress가 낮아졌고, 200k dummy 조건에서 명확한 low-progress event가 1회 관찰되었다.

이 결과는 다음을 보여준다.

window 길이 자체가 transient를 만든 것은 아니다.
threshold를 정규화하면 no-dummy window들은 안정적이다.
문제는 dummy perturbation이 들어갈 때 나타난다.

10. Launch Perturbation

마지막으로 dummy perturbation의 원인을 분해했다.

조건은 다음이었다.

no dummy
empty dummy launch
light ALU dummy
short global read dummy
short global write dummy
long global read dummy
many-block global read dummy
same-block-count global read dummy

결론은 매우 중요하다.

launch boundary 자체가 강한 transient의 원인은 아니다.

empty dummy launch와 light ALU dummy는 global progress를 낮추긴 했지만 threshold 아래 event를 만들지 않았다.

short global read/write도 steady progress를 낮췄지만 event를 만들지 않았다.

강한 event는 long global read dummy에서만 발생했다.

즉 현재까지의 핵심 후보는 다음이다.

충분히 긴 global memory read perturbation이 만든
memory hierarchy / phase state 변화

launch perturbation 실험은 empty launch, compute-only perturbation, short memory perturbation은 충분조건이 아니며, long-duration global memory read perturbation이 dependent_global_stalled drop을 유도하는 핵심 후보임을 보여준다. 다만 duration 효과와 total memory traffic 효과는 아직 완전히 분리되지 않았다.


11. 1차 연구의 최종 해석

현재까지의 1차 연구는 다음 결론으로 닫을 수 있다.

warp-level progress signature는 workload execution pattern에 따라 형성된다.
이 signature는 반복 가능하고, warp_id보다 workload pattern에 더 강하게 귀속된다.

mixed workload에서도 role별 signature ordering은 유지된다.
하지만 global memory dependent workload는 단순히 낮은 progress만 보이는 것이 아니라,
ready warp supply, address locality, warm/cold state, composition 비대칭성,
observation window, launch/memory perturbation에 따라 변형되는 signature를 남긴다.

특히 latency hiding 계열에서는 ready warp가 존재할 때 ready-side progress는 안정적으로 유지되지만,
dependent_global_stalled progress는 특정 composition과 phase perturbation 조건에서
rare low-progress transient를 보일 수 있다.

이 연구가 보여준 핵심은 다음이다.

GPU 실행을 이해할 때,
“global memory는 느리다”, “shared memory는 빠르다” 같은 자원 분류만으로는 부족하다.

중요한 것은 각 warp가 언제 ready 상태로 남고,
언제 dependency나 memory wait에 묶이며,
그 순간 scheduler가 어떤 실행 후보를 갖고 있는가이다.

12. 해석 경계

이 문서의 결론은 다음 범위 안에서만 유효하다.

단일 또는 제한된 block 수
synthetic workload
progress counter 기반 관찰
특정 cycle budget
특정 role composition
특정 GPU 실행 환경

따라서 다음을 단정하면 안 된다.

GPU scheduler의 일반 정책을 밝혔다.
모든 NVIDIA GPU에서 같은 현상이 나온다.
SM 내부 issue policy를 증명했다.
latency hiding ratio를 하드웨어 카운터 수준으로 정확히 측정했다.
global memory bandwidth를 측정했다.

대신 이렇게 표현해야 한다.

관찰되었다.
시사한다.
가능성이 높다.
progress signature로 해석할 수 있다.
후속 실험의 근거가 된다.

이 연구는 scheduler policy의 직접 역공학이 아니라, hardware response probing이다.


13. 그래프/Atlas 구조 제안

1차 마무리 후 그래프는 다음 구조로 정리하는 것이 좋다.

warp_progress_signature_chapter_1
 ├─ same_workload_baseline
 ├─ warp_execution_signature_v0
 ├─ warp_signature_repeatability
 ├─ warp_signature_permutation
 ├─ mixed_workload_probe
 ├─ global_memory_contention_amplification_probe
 ├─ latency_hiding_ratio_probe
 ├─ latency_hiding_warmup_stability_probe
 ├─ ready_warp_supply_probe
 ├─ shared_memory_ready_interference_probe
 ├─ composition_transient_probe
 ├─ composition_phase_repeatability_probe
 ├─ scheduler_phase_probe
 ├─ normalized_window_probe
 └─ launch_perturbation_probe

각 노드의 layer는 다음처럼 정리할 수 있다.

const layers = {
  baseline: "baseline-result",
  observation: "observation-result",
  validation: "signature-validation",
  attribution: "signature-attribution",
  composition: "composition-result",
  memory: "memory-signature-result",
  latency: "latency-analysis",
  stability: "stability-validation",
  readySource: "ready-source-analysis",
  interference: "shared-memory-interference",
  transient: "composition-transient-analysis",
  phase: "phase-repeatability-analysis",
  schedulerPhase: "scheduler-phase-analysis",
  window: "window-normalization",
  launch: "launch-perturbation-analysis",
};

14. Atlas 페이지용 요약 문장

짧은 소개

Warp Progress Signature Probing은 synthetic workload를 통해 warp-level progress가 workload pattern, dependency structure, ready warp supply, memory hierarchy, composition, phase perturbation에 의해 어떻게 형성되고 변형되는지 관찰한 실험 흐름입니다.

핵심 요약

이 실험 흐름은 동일 workload baseline에서 출발해, 서로 다른 execution pattern이 남기는 progress signature를 관찰하고, 반복성 및 permutation 검증을 통해 signature가 workload pattern에 귀속됨을 확인했습니다. 이후 mixed workload와 global memory 계열 실험을 통해 global memory dependent signature가 단순 contention보다 ready warp supply, address locality, warm/cold state, ready-source composition, launch/memory perturbation에 의해 변형됨을 관찰했습니다.

최종 한 문장

warp progress signature는 개별 자원의 빠르고 느림이 아니라, workload dependency, ready warp supply, memory hierarchy state, composition 비대칭성, launch/memory phase가 결합되어 나타나는 실행 흔적이다.

15. 다음 사이클로 넘길 질문

1차 연구는 여기서 닫을 수 있다.

다음 사이클은 별도 chapter로 분리하는 것이 좋다.

Chapter 2. Rare Transient Event Localization

다음 질문은 이것이다.

long global read perturbation이 rare transient를 유도하는 직접 원인은 무엇인가?

후속 실험 후보:

memory_perturbation_duration_probe

분리해야 할 변수:

1. dummy duration
2. total global memory traffic
3. same buffer vs separate buffer
4. L2/cache/TLB state perturbation
5. split dummy launches vs single long dummy
6. multi-block normalized event reproduction

하지만 이것은 2차 연구 주제다.

1차 연구는 다음 결론으로 마무리한다.

workload pattern이 warp progress signature를 만들고,
global memory / latency hiding 계열 signature는 ready warp supply와 memory hierarchy state,
composition, observation window, launch perturbation에 의해 변형된다.