NVIDIA + Apple에서 4096³ GEMM — 숫자가 어떻게 보이는가
BLAS 가치 느끼는 가장 깔끔한 길은 두 생태계에서 같은 논리적 op 돌리고 throughput 숫자 나란히 읽는 거.
| Level | RTX 4090 (FP32) | M3 Ultra (FP32) | M3 Ultra (FP16) |
|---|---|---|---|
| BLAS-1 (AXPY) | 20 GF/s | 5 GF/s | — |
| BLAS-2 (GEMV) | 0.44 GF/s | 279 GF/s (GPU) | 1,136 GF/s |
| BLAS-3 (GEMM) | 2.32 TF/s (non-Tensor-Core) | 13.89 TF/s | 18.15 TF/s |
이 표에서 읽을 거 셋:
- BLAS-1은 GPU에서 끔찍. TF/s 가능한 하드웨어에서 두 자릿수 GF/s — bandwidth-bound, 재사용 0, 가망 없음. cuBLAS가 이거 감지해서 host에서 돌리거나 Tensor Core 스킵.
- 여기 CUDA FP32 GEMM은 fair 비교용 non-tensor path.
CUBLAS_GEMM_DEFAULT_TENSOR_OP로cublasGemmExTensor Core FP16 켜면 4090이 30 TF/s 넘어 점프. - M3 Ultra GEMM이 박살냄 — matrix coprocessor가 거대 unified memory bandwidth로 먹힘. 4096³에서 테스트.
Intensity 추세는 platform-agnostic: BLAS-1 → bandwidth-bound, BLAS-3 → compute-bound. 절대 숫자는 다른데 그림 모양은 동일.