같은 훈련, 다른 군복
기억해: Metal은 GPU printf 없음. 그래서 Apple Silicon의 configurable-battalion 버전은 thread별 정체성을 buffer에 쓰고 CPU가 print. 미션은 CUDA 버전이랑 동일.
CUDA랑 다른 점 둘이 느껴질 거:
- 'Block size'가 두 곳에 살아 — 커널의 hard-coded 상수랑 host의
threadsPerThreadgroup. 일치해야 하고 mismatch면 Metal이 항상 알려주는 건 아냐. - Host driver가
commandBuffer.waitUntilCompleted()로 명시적 대기; Metal의cudaDeviceSynchronize야.