0. 전체 연구의 목적
이 연구의 목적은 GPU warp scheduler의 내부 구현을 직접 알아내는 것이 아니다.
직접적인 목표는 다음이다.
> 서로 다른 warp execution pattern이 GPU 실행 중 어떤 progress signature를 남기는지 관찰하고, 그 signature가 어떤 조건에서 유지되거나 변형되는지 단계적으로 검증한다.
따라서 이 연구는 단순 성능 측정이 아니다.
다음과 같은 질문을 다룬다.
```text
- 같은 cycle budget 안에서 workload별 progress 차이가 생기는가?
- 그 차이는 반복 실행에서도 유지되는가?
- 그 차이는 warp_id에 고정되는가, workload pattern을 따라가는가?
- isolated workload에서 보인 signature가 mixed workload에서도 유지되는가?
- global memory dependency가 만든 낮은 progress와 variability는 어떤 조건에서 증폭되거나 완화되는가?
현재까지의 연구 흐름은 다음과 같다.
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
1. Same Workload Baseline
역할
same_workload_baseline은 가장 기본적인 control 실험이다.
모든 warp가 동일한 workload를 수행할 때, warp별 progress가 장기적으로 특정 warp_id에 유리하게 치우치는지 확인한다.
핵심 질문
모든 warp가 같은 작업을 수행할 때도 특정 warp_id가 지속적으로 더 많이 진행되는가?
의미
이 실험은 이후 모든 signature 실험의 기준점이다.
만약 동일 workload 조건에서도 특정 warp_id가 항상 압도적으로 높은 progress를 보인다면, 이후 실험에서 관찰되는 progress 차이를 workload pattern 때문이라고 해석하기 어렵다.
해석
동일 task baseline은 scheduler의 세부 정책을 직접 드러내지는 않는다.
다만 다음을 확인하는 출발점이다.
- 동일 workload 조건에서 장기적 warp_id bias가 강하게 나타나는가?
- 이후 workload별 progress 차이를 해석할 최소 기준선이 존재하는가?
2. Warp Execution Signature v0
역할
warp_execution_signature_v0는 최초의 핵심 observation node다.
이 실험은 동일한 cycle budget 안에서 서로 다른 execution pattern을 가진 warp들이 서로 다른 progress signature를 남기는지 관찰한다.
사용된 role은 다음과 같다.
fast_independent_alu
dependent_alu_chain
shared_load
dependent_global_load
핵심 관찰
관찰된 ordering은 다음과 같다.
fast_independent_alu
> shared_load
> dependent_alu_chain
> dependent_global_load
v0 객체에서도 이 결과는 단순 속도 비교가 아니라, dependency structure와 memory hierarchy가 warp-level progress에 남기는 상대적 흔적을 해석하기 위한 observation으로 정의되어 있다. 또한 progress 차이는 dependency structure, memory hierarchy, address dependency, latency hiding 가능성이 결합된 결과로 해석해야 하며, 절대적인 operation speed ratio로 보면 안 된다는 caveat가 붙어 있다.
이 실험이 말하는 것
이 실험이 보여준 것은 다음이다.
서로 다른 execution pattern은 같은 cycle budget 안에서도 구분 가능한 progress signature를 남긴다.
특히 중요한 지점은 다음이다.
shared_load > dependent_alu_chain
이 결과는 성능 병목을 단순히 다음처럼 나누면 안 된다는 것을 보여준다.
ALU = 빠름
Memory = 느림
실제로는 memory 접근 여부보다 더 중요한 요소가 있다.
dependency chain
address dependency
memory hierarchy
latency hiding 가능성
instruction-level parallelism
v0의 한계
하지만 v0는 아직 단일 observation이다.
남아 있는 해석 오염 요소는 다음과 같다.
- 단일 run noise
- warp_id bias
- role이 warp_id에 고정된 문제
- compiler optimization 가능성
- final progress만 있고 progress curve가 없음
- iter당 instruction mix 차이
따라서 v0는 최종 결론이 아니라 다음과 같이 봐야 한다.
v0 = workload execution pattern별 progress signature 후보 발견 단계
3. Warp Signature Repeatability
역할
warp_signature_repeatability는 v0에서 관찰된 signature가 반복 가능한지 확인하는 validation node다.
핵심 질문
v0에서 관찰된 progress signature는 단일 run의 우연인가?
아니면 동일 조건에서 반복 실행해도 유지되는가?
관찰 결과
동일한 launch shape, 동일한 cycle budget, 동일한 workload pattern 조건에서 64회 반복 실행한 결과, warp별 progress signature가 동일하게 재현되었다.
의미
이 실험이 제거한 의심은 다음이다.
단일 run noise
즉, repeatability 실험 이후에는 v0 signature를 다음처럼 볼 수 있다.
단일 관찰값
↓
반복 가능한 관찰값
해석 경계
하지만 repeatability만으로는 아직 충분하지 않다.
반복된다는 것은 알았지만, 반복되는 원인이 무엇인지는 아직 분리되지 않았다.
남은 질문은 다음이다.
반복되는 signature가 workload 때문인가?
아니면 특정 warp_id 또는 warp position 때문인가?
이 질문을 해결하는 단계가 permutation이다.
4. Warp Signature Permutation
역할
warp_signature_permutation은 반복 가능한 signature의 귀속 대상을 확인하는 attribution node다.
핵심 질문
progress signature는 특정 warp_id에 고정되는가?
아니면 workload pattern assignment를 따라 이동하는가?
실험 방식
workload pattern을 warp_id에 회전 배치한다.
즉, 같은 pattern을 다른 warp_id에 배치했을 때 높은 progress와 낮은 progress도 함께 이동하는지 확인한다.
관찰 결과
높은 progress와 낮은 progress의 위치가 특정 warp_id에 고정되지 않았다.
대신 workload pattern assignment를 따라 이동했다.
의미
이 실험이 제거한 의심은 다음이다.
warp_id 고정 bias
따라서 permutation 이후에는 다음처럼 말할 수 있다.
progress signature는 warp_id 자체보다 workload execution pattern에 더 강하게 귀속된다.
현재까지의 중간 결론
여기까지의 흐름은 다음과 같다.
v0:
execution pattern별 progress signature 후보 발견
repeatability:
signature가 반복 가능한지 확인
permutation:
signature가 warp_id가 아니라 workload pattern을 따라가는지 확인
즉, 이 시점까지는 새로운 scheduler law를 발견한 것이 아니다.
정확히는 다음이다.
v0 observation을 validation과 attribution을 통해 더 신뢰 가능한 evidence로 정제한 상태
5. Mixed Workload Probe
역할
mixed_workload_probe는 검증된 workload signature를 혼합 workload composition으로 확장한 첫 번째 main follow-up probe다.
이전 단계들이 signature 자체의 신뢰성을 검증했다면, 이 실험은 다음을 본다.
isolated workload에서 보인 signature가
heterogeneous workload composition에서도 유지되는가?
핵심 질문
서로 다른 workload가 같은 block 안에서 공존할 때,
role별 warp progress signature는 유지되는가?
아니면 mixed composition에 의해 변형되는가?
추가 질문은 다음이다.
memory-dependent workload는 run-to-run variability를 증가시키는가?
관찰 결과
혼합 workload 조건에서도 role별 progress ordering은 유지되었다.
light_alu
> dependent_alu
> shared_load
> dependent_global_load
특히 dependent_global_load는 두 가지 특징을 동시에 보였다.
- 가장 낮은 평균 progress
- 가장 큰 run-to-run variability
의미
이 실험은 signature가 isolated condition에만 묶인 현상이 아니라는 점을 보여준다.
즉, 현재 조건에서는 다음처럼 말할 수 있다.
workload execution pattern이 남기는 progress signature는
혼합 workload composition에서도 role별 ordering을 유지한다.
중요한 해석
Mixed Workload Probe의 의미는 다음 구조로 잡는 것이 좋다.
isolated signature
↓
validated signature
↓
attributed signature
↓
composition-resilient signature
즉, mixed workload는 단순히 여러 workload를 섞은 실험이 아니다.
앞선 검증을 통과한 signature가 더 복잡한 composition에서도 유지되는지 확인한 단계다.
남은 질문
Mixed Workload에서 가장 중요한 다음 신호는 이것이다.
dependent_global_load가 낮은 progress뿐 아니라 높은 variability도 보인다.
따라서 다음 질문이 생긴다.
global memory dependency가 만든 낮은 progress와 variability는
단순히 global-load warp 수 때문인가?
아니면 ready warp supply, address locality, latency hiding 조건에 따라 달라지는가?
이 질문이 global_memory_contention_amplification_probe로 이어진다.
6. Global Memory Contention Amplification Probe
역할
global_memory_contention_amplification_probe는 Mixed Workload에서 관찰된 dependent_global_load의 낮은 progress와 높은 variability를 더 깊게 파고든 실험이다.
이 실험의 이름에는 contention amplification이 들어가지만, 실제 핵심은 단순 contention 증가가 아니다.
정확한 질문은 다음이다.
global memory dependent workload의 progress signature는
global-load warp 수, ready warp supply, address locality에 따라 어떻게 변형되는가?
실험 축
이 실험은 크게 두 축을 본다.
1. global-load warp 수 변화
2. address access mode 변화
global-load warp 수 변화:
1 global + 7 light
2 global + 6 light
4 global + 4 light
8 global
address mode 변화:
4 global overlap address
4 global dispersed address
6.1 global-load warp 수 결과
관찰값은 다음과 같다.
1 global + 7 light → 158.792
2 global + 6 light → 182.521
4 global + 4 light → 198.104
8 global → 97.370
단순 예상은 다음과 같을 수 있다.
global-load warp 수 증가
→ global memory contention 증가
→ progress 단순 감소
하지만 실제 결과는 그렇지 않았다.
1개에서 4개의 global-load warp가 light_alu warp와 공존할 때는 global progress가 오히려 증가했다.
반대로 모든 warp가 global-load로 채워진 8 global 조건에서는 progress가 크게 하락했다.
해석
이 결과는 global-load warp 수 자체보다 ready warp supply가 중요하다는 것을 보여준다.
global-load warp는 dependent memory chain 때문에 자주 stall된다.
dependent global load
→ load 결과를 기다림
→ 다음 address 계산 불가
→ scoreboard stall
그런데 block 안에 light_alu warp가 함께 있으면, global-load warp가 stall되는 동안 scheduler가 선택할 수 있는 ready warp가 남아 있다.
global warp stall
→ light_alu warp ready
→ issue slot이 완전히 비지 않음
→ latency hiding 가능
반면 8 global 조건에서는 모든 warp가 memory dependency에 묶인다.
모든 warp가 dependent global load
→ 대부분 memory wait 상태
→ ready warp supply 부족
→ progress 급락
따라서 이 부분의 결론은 다음이다.
global memory progress signature는 global-load warp 수에 단순 비례해 악화되지 않는다.
ready warp supply가 남아 있는지 여부가 progress를 크게 바꾼다.
6.2 address mode 결과
주소 접근 방식에 따른 결과는 더 선명하다.
4 global overlap address → 274.250
4 global dispersed address → 95.667
overlap address
overlap address 조건에서는 여러 global-load warp가 겹치거나 가까운 주소 영역을 접근한다.
이 경우 다음 가능성이 생긴다.
- cache locality
- L1/L2 reuse
- 같은 cache line 재사용
- memory transaction 효율 증가
결과적으로 높은 progress와 낮은 variability가 관찰되었다.
overlap address
→ locality/reuse 가능성 증가
→ progress 증가
→ variability 감소
dispersed address
dispersed address 조건에서는 각 warp가 서로 멀리 떨어진 주소 영역을 접근한다.
이 경우 다음 문제가 생긴다.
- locality 약화
- cache reuse 감소
- memory transaction 분산
- memory latency 흔들림 증가
결과적으로 낮은 progress와 초기 run의 큰 variability가 나타났다.
dispersed address
→ locality 약화
→ progress 감소
→ variability 증가
핵심 결론
이 실험의 핵심은 다음이다.
global memory signature는 단순 contention의 양보다
ready warp supply와 address locality에 의해 더 크게 변형된다.
더 정확히 말하면 다음이다.
dependent global memory workload의 낮은 progress와 variability는
global-load warp 수만으로 설명되지 않는다.
memory stall을 숨길 수 있는 ready warp가 남아 있는지,
주소 접근이 cache/locality에 유리한지에 따라
progress signature가 완화되거나 증폭된다.
7. 지금까지의 단계별 의미
전체 빌드업은 다음 표로 정리할 수 있다.
단계실험핵심 질문확인한 것제거한 의심
| 1 | Same Workload Baseline | 동일 workload에서도 warp_id bias가 있는가? | 기준 조건 설정 | 해석 기준 부재 |
| 2 | Warp Execution Signature v0 | workload별 progress signature가 생기는가? | execution pattern별 progress 차이 관찰 | 없음. 최초 observation |
| 3 | Repeatability | signature가 반복되는가? | 동일 조건에서 signature 재현 | 단일 run noise |
| 4 | Permutation | signature가 warp_id에 고정되는가? | workload pattern을 따라 signature 이동 | warp_id 고정 bias |
| 5 | Mixed Workload | mixed composition에서도 signature가 유지되는가? | role별 ordering 유지 | isolated condition 한계 |
| 6 | Global Memory Contention Amplification | global memory signature는 무엇에 의해 변형되는가? | ready warp supply와 address locality의 영향 | 단순 contention 해석 |
8. 현재까지의 가장 안전한 결론
현재까지의 결과를 가장 안전하게 정리하면 다음이다.
동일 block, 고정 launch shape, synthetic workload 조건에서 warp-level progress signature는 workload execution pattern에 따라 안정적으로 나타났고, 반복성 및 permutation 검증을 통해 단일 run noise나 단순 warp_id bias 가능성이 낮아졌다. 또한 이 signature는 mixed workload composition에서도 role별 ordering을 유지했으며, global memory dependent signature는 단순 contention보다 ready warp supply와 address locality 조건에 의해 크게 변형되었다.
짧게 줄이면 다음이다.
warp progress signature는 workload pattern에 귀속되며,
mixed composition에서도 유지된다.
global memory signature는 단순히 global-load warp 수로 결정되지 않고,
ready warp supply와 address locality에 의해 완화되거나 증폭된다.
9. 아직 말하면 안 되는 것
현재 결과로 다음을 단정하면 안 된다.
- GPU warp scheduler의 일반 법칙을 발견했다
- 모든 GPU에서 같은 ordering이 나온다
- 모든 SM에서 같은 behavior가 나온다
- 실제 application workload에서도 동일한 결과가 나온다
- global memory bandwidth 자체를 측정했다
- scheduler가 특정 warp_id를 어떤 정책으로 issue한다
- latency hiding ratio를 이미 정량화했다
현재 결과는 다음 범위 안에서만 해석해야 한다.
- 단일 block
- 고정 launch shape
- synthetic workload
- 지정된 cycle budget
- 특정 address mode
- 특정 role assignment
- progress counter 기반 관찰
따라서 표현은 다음처럼 제한하는 게 좋다.
관찰되었다
시사한다
가능성을 보여준다
signature로 해석할 수 있다
후속 실험의 근거가 된다
반대로 다음 표현은 피하는 게 좋다.
증명했다
일반 법칙이다
스케줄러 정책을 밝혀냈다
항상 그렇다
10. 다음 실험: Latency Hiding Ratio Probe
왜 필요한가?
Global Memory Contention Amplification Probe는 중요한 신호를 보여줬다.
light_alu warp가 함께 있을 때,
dependent_global_load progress가 단순히 나빠지지만은 않는다.
이는 다음 가능성을 시사한다.
global-load warp가 memory stall에 묶여 있는 동안,
ready light_alu warp가 issue slot을 채워 latency를 일부 숨겼을 수 있다.
하지만 아직 이걸 직접 정량화하지는 않았다.
즉, 현재까지는 다음 단계다.
ready warp supply가 중요해 보인다.
아직 다음은 아니다.
latency hiding ratio를 측정했다.
그래서 다음 실험이 필요하다.
핵심 질문
memory-stalled warp가 존재할 때,
ready warp가 그 빈 issue 기회를 얼마나 채우는가?
또는 더 짧게:
ready warp supply는 global memory latency를 얼마나 숨기는가?
측정해야 할 것
다음 실험에서는 단순 final progress만 보면 부족하다.
필요한 항목은 다음이다.
- global-load warp progress
- light_alu warp progress
- global-load warp의 stall 구간 추정
- light_alu warp의 progress 증가량
- all_global 조건 대비 mixed 조건의 progress 회복량
- all_light baseline 대비 mixed light_alu progress 유지율
가능한 ratio 정의
예시로 다음과 같은 지표를 만들 수 있다.
latency_hiding_recovery_ratio
= (mixed_global_progress - all_global_progress)
/ (overlap_or_best_case_global_progress - all_global_progress)
또는 light warp 기준으로:
ready_warp_preservation_ratio
= mixed_light_progress / all_light_progress
이 둘은 다른 의미를 가진다.
latency_hiding_recovery_ratio:
global memory workload가 ready warp 공급으로 얼마나 회복되는지
ready_warp_preservation_ratio:
memory-stalled warp와 공존해도 light_alu warp가 baseline 대비 얼마나 진행을 유지하는지
예상되는 다음 결론
Latency Hiding Ratio Probe가 성공하면 다음처럼 말할 수 있다.
global memory dependent workload의 progress 저하는
ready warp supply가 충분할 때 일부 숨겨지며,
모든 warp가 memory dependency에 묶일 때 급격히 악화된다.
11. Graph Canvas 구조 제안
현재 그래프 구조는 다음처럼 잡는 것이 좋다.
warp
└─ 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
└─ cache_locality
12. Atlas 페이지용 요약 문장
짧은 요약
Warp Signature 계열 실험은 서로 다른 execution pattern이 warp-level progress에 남기는 signature를 관찰하고, 그 signature가 반복 가능하며 workload pattern에 귀속됨을 검증한 뒤, mixed workload와 global memory contention 조건에서 어떻게 유지되거나 변형되는지 추적한다.
조금 긴 요약
이 실험 흐름은 warp scheduler 정책을 직접 단정하기보다, synthetic workload를 통해 warp-level progress signature를 단계적으로 읽는 probing 과정이다. v0에서는 execution pattern별 progress 차이를 관찰했고, repeatability와 permutation을 통해 단일 run noise와 warp_id bias 가능성을 줄였다. 이후 mixed workload probe에서는 signature가 heterogeneous composition에서도 유지됨을 확인했으며, global memory contention amplification probe에서는 dependent global memory signature가 단순 contention보다 ready warp supply와 address locality에 의해 크게 변형됨을 관찰했다.
가장 압축한 결론
workload execution pattern은 warp-level progress signature를 남기며, 이 signature는 반복 가능하고 workload pattern에 귀속된다. mixed composition에서도 role별 ordering은 유지되지만, global memory dependent signature는 ready warp supply와 address locality에 의해 강하게 변형된다.
13. 현재 연구 상태 정의
현재 상태는 다음처럼 정의하는 것이 가장 정확하다.
현재 연구는 warp progress signature의 존재 여부를 넘어서,
그 signature가 어떤 조건에서 유지되고,
global memory dependency 조건에서 어떤 요인에 의해 변형되는지 추적하는 단계에 들어갔다.
즉, 이제 질문은 더 이상 이것이 아니다.
workload별 progress 차이가 있는가?
현재 질문은 이것이다.
그 progress signature는 어떤 실행 조건에서 유지되고,
어떤 자원 조건에서 변형되는가?
다음 단계는 자연스럽게 다음이다.
latency hiding ratio를 직접 분리해 정량화한다.
정리하면, 지금 전체 연구의 제목은 이렇게 잡으면 됩니다.
Warp Progress Signature Probing
그리고 현재 단계의 핵심 문장은 이것입니다.
workload별 warp progress signature는 반복 가능하고 workload pattern에 귀속되며, mixed composition에서도 유지된다. 그러나 global memory dependent signature는 ready warp supply와 address locality에 의해 강하게 변형된다.
'GPU Probing Lab' 카테고리의 다른 글
| Warp Progress Signature Probing - Chapter 1. Workload Pattern에서 Transient Phase까지 (0) | 2026.05.13 |
|---|---|
| GPU Warp Scheduling / Latency Hiding 실험 진행 문서 (0) | 2026.05.11 |
| Mixed Workload Probe 까지의 빌드업 문서 (0) | 2026.05.08 |
| Same Workload Baseline 에 이은 후속 실험 설계 : Scheduler Policy Probing (0) | 2026.05.07 |
| Warp Progress Divergence Probe (0) | 2026.05.03 |