《GPU Mode》
L089
2025
High priority
transcript · failed
cuTile — NVIDIA 의 tile-based GPU programming model
Triton 의 tile 추상이 NVIDIA 안에서 어떻게 다시 정리되었는가. cuTile 은 NVIDIA 의 새 tile-based 프로그래밍 모델 — Python first, MLIR-based, 그리고 NVIDIA 컴파일러 stack(CUTLASS / NVVM / PTX) 와 deeply integrated. Mehdi Amini 와 Jared Roesch 가 깐 cuTile 의 동기, tile abstraction 의 구조, Triton 과의 차이, 컴파일 파이프라인, 그리고 NVIDIA 의 사용자 표면 전략 안에서의 위치를 — 자막 없이 외부 자료로 — 재구성한 학습 노트.
cuTile
tile abstraction
NVIDIA compiler
MLIR
Triton-like
CuTe
PTX
M
Speakers
Mehdi Amini · Jared Roesch
NVIDIA · 컴파일러 / MLIR / TVM · cuTile 디자인 팀
§ 01강의가 풀려는 문제· why cuTile
“NVIDIA 의 자체 Triton-like DSL” 이 왜 이 시점에 등장했는가
2024–2025 시점 GPU programming 의 사용자 표면은 — 한 마디로 — fragmented. CUDA C++ 의 직접 작성, CUTLASS 의 template, CuTe 의 layout algebra, Triton 의 Python DSL, Helion 의 PyTorch-native, JAX 의 Pallas, OpenAI 의 ttgir. 사용자가 매번 “어떤 도구를 어디에 쓸 것인가” 의 결정에 시간을 쓴다.
이 fragmentation 안에서 NVIDIA 가 풀어야 하는 문제는 분명하다 — 새 hardware 의 새 명령을 사용자에게 가장 빨리 노출하는 길. CUTLASS 가 그 자리였지만 진입 장벽이 너무 높다. Triton 이 빠르게 받아주지만 — 그건 OpenAI 가 끄는 프로젝트. NVIDIA 가 자기 컴파일러 stack 위에서 같은 가치를 직접 제공할 수 있어야 한다는 입장.
- cuTile 은 NVIDIA 의 자체 tile-based DSL — Python 표면, MLIR 백엔드, NVIDIA 컴파일러 stack 과 deeply integrated.
- Triton 의 사상은 받되, NVIDIA 의 새 명령 (Hopper TMA, Blackwell tensor memory accelerator, 새 mma 변형) 을 가장 먼저 노출.
- 같은 사용자 표면 위에서 CuTe 와 cuBLAS 까지 seamless 하게 — DSL 로 짠 커널이 cuBLAS 와 같이 잘 도는 자리.
자료 한계 · 확인 필요
강의 자막 실패. 슬라이드 / repo 폴더 미공개. cuTile 자체가 NVIDIA 의 비교적 새 발표 (2024–2025 사이) 라 외부 자료가 제한적. 이 노트는 — Mehdi Amini (LLVM/MLIR 의 핵심 컨트리뷰터), Jared Roesch (TVM 공동저자, Octo / NVIDIA 합류) 의 background, NVIDIA 의 GTC 발표, MLIR 진영의 일반 지식으로 재구성. 정확한 API / 구현 디테일은 NVIDIA 의 공식 release 가 답.
“Triton 이 사용자 표면을 정의했다 — 이제 NVIDIA 가 그 표면을 자기 컴파일러 stack 안에서 다시 푼다.”강의 재구성
§ 02cuTile 의 동기· NVIDIA 의 tile-based 응답
왜 Triton 만으로는 부족한가
새 hardware 명령 노출 속도
Hopper TMA, Blackwell tensor memory 같은 새 명령은 보통 CUTLASS 에 가장 먼저, Triton 은 분기. NVIDIA 가 Triton fork 에 dependency.
컴파일러 stack 통합
Triton 은 자체 backend (TritonGPU dialect). NVIDIA 의 NVVM / PTX 컴파일러와의 deeper integration 이 자기 stack 에서 가능.
디버그 / 프로파일 도구
Nsight Compute / Nsight Systems 가 cuTile 의 source 위치까지 직접 매핑 가능. Triton 보다 한 단계 깊은 통합.
cuBLAS / cuDNN 과의 interop
사용자 작성 cuTile 커널이 cuBLAS / cuDNN 의 함수와 같은 추상 위에서 보이고, 같이 fused / scheduled 가능 — 확인 필요.
AMD / 비-NVIDIA 영향 차단
Triton 은 의도적으로 multi-backend (NVIDIA, AMD, Intel). NVIDIA 의 hardware-specific 최적화가 항상 first-class 가 아님.
생태계 own
사용자 표면을 own 하면 — 새 hardware 의 채택, 새 dtype 의 채택, 새 fusion 패턴의 채택 속도를 NVIDIA 가 통제.
Triton 과의 관계
cuTile 이 Triton 을 대체하려는 건 아니다 — 외부 자료에서 일관되게 확인되는 입장. Triton 은 multi-backend / open-source 의 가치, cuTile 은 NVIDIA-specific deep integration. 두 도구가 산업 안에서 같이 사는 방향.
Mehdi Amini 가 NVIDIA 에 합류하면서 들고 온 자산은 — MLIR 의 깊은 이해. cuTile 은 MLIR-first 디자인이 강조된다 — 즉, 컴파일러 인프라의 한 dialect 으로 시작해서 사용자 표면이 따라온다. Triton 도 결국 MLIR-based 가 됐지만, cuTile 은 그 사상이 더 명시적.
“tile abstraction 자체는 보편적이다 — 그러나 그 abstraction 이 어느 컴파일러 stack 위에서 도는가가 산업의 결정.”강의 재구성
§ 03tile-based 추상· tile · index · loop
tile 이 1급 객체인 프로그래밍 모델
tile-based 추상이 무엇인지 — Triton 과 cuTile 이 공유하는 사상의 핵심을 한 번 정리. 그 위에서 cuTile 의 차이가 보인다.
FIG · tile abstraction 의 의미한 텐서를 tile 의 grid 로
0
1
0
1
0
1
0
1
2
3
2
3
2
3
2
3
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
큰 텐서 (8×4) 가 tile (2×2) 의 grid 로 나뉨. 각 색이 한 program/tile 인스턴스. 사용자는 한 tile 의 일을 짠다 — “여러 tile” 의 분배는 컴파일러/하드웨어.
tile
한 program instance 가 다루는 데이터의 한 chunk. 보통 shape 가 (BLOCK_M, BLOCK_N) 같은 고정 모양.
program_id
한 program/tile 의 식별자. program_id(0) = 0번째 axis 에서의 위치. Triton 의 tl.program_id 와 같은 의미.
tile loop
한 tile 안에서 inner loop. K dim 의 reduction 같은 자리. 컴파일러가 자동 unroll / pipeline.
tile primitives
tile 단위 op — load, store, mma, sum, max. element 단위가 아닌 tile 단위.
layout 의 추상
사용자는 보통 layout 을 직접 안 만짐. 컴파일러가 결정. CuTe DSL 과의 큰 차이.
elasticity
같은 코드가 다른 tile size, 다른 hardware 에서 자동으로 다른 launch shape. tile-based 추상의 본질.
이 모델이 왜 자연스러운가 — GPU 의 SIMT 와 systolic 의 본질이 모두 “같은 일을 여러 element 에 동시에” 다. tile 이 그 단위를 사용자 표현 차원에서 끌어올린 것.
§ 04Triton 과의 차이· where cuTile diverges
같은 사상, 다른 디자인 결정
Triton
- OpenAI 의 open-source 프로젝트
- multi-backend (NVIDIA, AMD, Intel, ...)
- TritonGPU dialect (자체 MLIR layer)
- 사용자 표면이 안정적 (~5년)
- 새 NVIDIA 명령은 분기 (외부 contributor 의존)
- 가장 큰 사용자 base
cuTile
- NVIDIA 의 자체 프로젝트
- NVIDIA-first / NVIDIA-specific 최적화
- NVVM / PTX 와 deep integration
- 사용자 표면이 새것 (개선 중)
- 새 NVIDIA 명령 first-class
- CuTe / cuBLAS interop 이 본질
Helion
- PyTorch Labs (Meta) 의 프로젝트
- NVIDIA-only (현재)
- Triton 위의 layer (Triton 으로 lowering)
- PyTorch-native 가 핵심
- autotune 자동화 강조
- 가장 추상적 사용자 표면
같은 영역의 세 도구. 쟁점 — 사용자가 어디에 묶일 것인가. 산업의 답이 보통 “하나로 통합” 이 아니라 “여러 도구가 같이 산다” 의 형태로 끝나는 게 일반적. 각 도구의 sweet spot 이 다르다.
cuTile 의 sweet spot
NVIDIA-only production stack. 새 hardware 명령의 빠른 채택. cuBLAS / cuDNN 와의 deep integration.
Triton 의 sweet spot
portable 한 ML 커널. 산업 표준 DSL. multi-vendor 지원이 필요한 자리.
Helion 의 sweet spot
PyTorch native 한 자리. autotune 의 비용을 컴파일러로 옮기고 싶을 때.
CuTe DSL 의 sweet spot
layout 을 직접 깎아야 하는 자리. tensor core 의 mma 명령에 정확히 맞추는 영역.
CUTLASS C++ 의 자리
이 모든 위의 production 라이브러리. 새 hardware 의 첫 노출, NVIDIA 의 reference.
사용자가 잡아야 할 것
한 도구가 하나의 답이 아니다. 자기 워크로드의 특성 (portable 한가, NVIDIA-only 인가, layout 통제가 필요한가) 에 따라 선택.
§ 05컴파일 파이프라인· Python → MLIR → PTX
cuTile 의 lowering — MLIR-first 디자인
FIG · cuTile lowering 파이프라인대략적 형태 · 확인 필요
L0
cuTile Pythontile primitives · @cuTile.kernel
사용자 표면
L1
cuTile dialect (MLIR)tile-level ops 가 1급
중간 표현
L2
tile → CTA / warp loweringtile 을 thread-block / warp 에 매핑
scheduling
L3
NVGPU dialectNVIDIA-specific 명령 추상 (TMA, mma, async copy)
arch awareness
L4
NVVM / LLVM IRNVIDIA 의 standard 컴파일 IR
general compiler
L5
PTX → SASSPTX assembler · SASS 생성
실제 명령
각 layer 가 표준 MLIR dialect 의 형태. cuTile dialect → NVGPU dialect → NVVM 의 분리가 핵심 — 각 layer 가 독립적 lowering pass 로 다뤄지고, 다른 dialect (linalg, affine) 와도 자연스럽게 합쳐질 수 있다.
이 디자인의 가치는 — MLIR 의 일반적 가치와 같다. 각 lowering pass 가 독립적으로 작성, 검증, 재사용 가능. 같은 NVGPU dialect 가 cuTile 뿐 아니라 다른 사용자 표면 (linalg, OpenXLA) 에서도 lower 의 target 으로 쓰일 수 있다.
Triton 과의 컴파일러 차이
Triton 도 MLIR 위에서 도는 중 (TritonGPU dialect). 그러나 Triton 의 사용자 표면 → TritonGPU 의 lowering 이 한 step 인 데 비해, cuTile 은 cuTile dialect → NVGPU dialect → NVVM 의 더 명시적 분리. 이게 새 NVIDIA 명령을 빠르게 노출하는 데 유리.
§ 06예시· vector add · GEMM
cuTile 코드의 모양 — 두 가지 표본
실제 API 는 NVIDIA 의 공식 release 가 답. 아래는 외부 자료 + 도메인 지식 기반의 개념적 형태. 강의에서 발표자가 라이브로 보여줬을 가능성이 높은 두 예시.
# 예시 1 — vector add (개념적)
import nvidia.cutile as cutile
@cutile.kernel
def vec_add(x: cutile.Tensor, y: cutile.Tensor,
out: cutile.Tensor, n: int):
pid = cutile.program_id(0)
offs = pid * BLOCK + cutile.arange(0, BLOCK)
mask = offs < n
a = cutile.load(x + offs, mask=mask)
b = cutile.load(y + offs, mask=mask)
cutile.store(out + offs, a + b, mask=mask)
# launch — 사용자 측에서 grid 만 깐다
vec_add[(N // BLOCK,)](x, y, out, N)
# 예시 2 — GEMM (개념적)
@cutile.kernel
def gemm(A, B, C, M, N, K):
pid_m = cutile.program_id(0)
pid_n = cutile.program_id(1)
offs_m = pid_m * BM + cutile.arange(0, BM)
offs_n = pid_n * BN + cutile.arange(0, BN)
acc = cutile.zeros((BM, BN), dtype=cutile.float32)
for k in range(0, K, BK):
offs_k = k + cutile.arange(0, BK)
a = cutile.load(A[offs_m, offs_k]) # tile-level slicing
b = cutile.load(B[offs_k, offs_n])
acc += cutile.mma(a, b) # NVIDIA-specific mma 명령
cutile.store(C[offs_m, offs_n], acc.to(C.dtype))
표면에서는 — 거의 Triton 코드 같다. 차이는 — (1) cutile.mma 같은 NVIDIA-specific primitive 가 first-class, (2) launch grammar 가 NVIDIA 컴파일러와 deep integration, (3) layout / scheduling 의 hint 가 사용자 표면에서 더 정밀하게 노출 가능 — 같은 자리.
“같은 GEMM 코드를 짜더라도, 그 코드가 도착하는 PTX 명령에 차이가 난다 — 그게 NVIDIA-specific 도구의 가치.”학습 노트 · 재구성
§ 07NVIDIA stack 안 위치· CuTe · cuBLAS · TRT
NVIDIA 의 도구 영역 안에서 cuTile 의 자리
cuBLAS / cuDNNvendor library
production-grade 표준 GEMM / conv. NVIDIA 의 reference. cuTile 사용자가 “이 op 는 cuBLAS 부르자” 와 매끄러운 interop.
cuTiletile-based DSL · this lecture
사용자 표면 — Python tile primitives. Triton-like 사상 + NVIDIA-specific 통합. fused 패턴 / 새 dtype / 새 명령의 빠른 채택.
CuTe DSLlayout-first DSL · L086
layout 을 직접 깎는 자리. cuTile 보다 한 단계 아래의 추상. Tensor Core 의 정확한 통제.
CUTLASS C++production library
NVIDIA 의 reference GEMM library. 새 hardware 명령의 첫 구현체. 위의 모든 도구의 정확성/성능 baseline.
CUDA C++raw
가장 낮은 자리. 직접 PTX 까지. CUTLASS 도 결국 이 위.
이 그림에서 cuTile 은 — “사용자 표면” 의 자리에서 새 entrant. 같은 자리에 Triton, Helion 이 있다. NVIDIA 의 입장은 — 자기 hardware 위에서 가장 잘 도는 사용자 표면을 own 한다는 것. Triton / Helion 과 경쟁이 아니라 “NVIDIA-first 사용자에게는 cuTile, cross-vendor 한 사용자에게는 Triton” 의 분담.
PyTorch / JAX 와의 관계
cuTile 은 PyTorch 에 자연스럽게 통합 가능 — 사용자가 cuTile 커널을 짜고 PyTorch op 으로 register. JAX 의 Pallas 같은 다른 tile-DSL 과도 같은 자리. 확인 필요 — 정확한 통합 방식은 release 이후.
§ 08채택· where it teaches
현재 시점 cuTile 의 자리
- NVIDIA 내부의 새 GEMM 변형 prototyping — 새 dtype (FP4/MXFP4), 새 mma 명령의 first-class 노출.
- NVIDIA 의 production AI stack — TensorRT-LLM, NIM 같은 inference engine 의 일부 hot path. 확인 필요.
- partner 협업 — 큰 customer 의 customized 커널 작성. CUTLASS C++ 보다 빠른 iteration.
- 학계 사용자 — MLIR-based 디자인이 학계 컴파일러 연구자의 자연스러운 표면.
- 새 hardware 의 시연 — Blackwell / Rubin 등의 새 명령을 보여줄 때 cuTile 코드가 가장 자연스러움.
발표 시점 (2025) 기준 cuTile 의 release 상태는 — 확인 필요. NVIDIA 내부 도구로 시작해 점차 public release 가 표준 패턴. 사용자 base 형성에 시간이 걸린다.
“새 도구의 가치는 1년 안에는 거의 안 보인다. 3년 안에 산업이 어떻게 도구를 받아쓰는지가 진짜 답.”학습 노트 · 재구성
§ 09다음 단계· roadmap
cuTile 이 풀어야 할 다음 문제들
- public release 와 ecosystem 형성 — repo, 문서, 예시, 튜토리얼. Triton 이 5 년 걸린 길.
- PyTorch 통합 — torch.compile / Inductor 와의 backend 관계. Helion 같은 layer 가 cuTile 을 backend 로 쓸 가능성.
- autotune — Triton 의
@triton.autotune 같은 자동 튜닝 인프라. Helion 의 search space 와 어떻게 합쳐질지.
- CuTe DSL 과의 정확한 분담 — 두 도구가 NVIDIA 안에서 같이 산다. 어디서 cuTile, 어디서 CuTe 의 정확한 가이드.
- 비-NVIDIA backend — 매우 확인 필요. NVIDIA-first 디자인이지만, MLIR 위에 있어 기술적으로는 가능. 정책의 문제.
- 새 hardware 적응 — Rubin / 그 다음 세대의 명령을 가장 먼저 노출하는 게 cuTile 의 전략적 가치.
§ 10기억할 메모· key takeaways
다시 열었을 때 5분 안에 손에 잡혀야 할 것
cuTile 의 위치
NVIDIA 의 자체 tile-based GPU programming DSL. Triton-like 사용자 표면 + NVIDIA 컴파일러 stack 깊은 통합.
tile abstraction
큰 텐서를 tile 의 grid 로. 사용자는 한 tile 의 일을 짠다. 분배는 컴파일러.
MLIR-first 디자인
cuTile dialect → NVGPU dialect → NVVM → PTX. 각 layer 의 분리가 명시적.
Triton 과의 차이
Triton 은 multi-backend / open. cuTile 은 NVIDIA-first / deep integration. 새 hardware 명령의 빠른 노출.
stack 안 위치
cuBLAS — cuTile — CuTe — CUTLASS — CUDA. 사용자 표면의 한 자리.
Mehdi Amini · Jared Roesch
MLIR + TVM 의 background. NVIDIA 가 컴파일러 stack 위에서 사용자 표면을 own 한다는 신호.
PyTorch 통합
torch.compile / Inductor / Helion 과의 관계는 발표 시점 기준 미확정. 자연스러운 다음.
생태계 시간
새 도구의 채택은 보통 3 년 단위. 1 년 안에는 NVIDIA 내부 + 큰 partner 가 사용자.
Slides
official repo 에 미공개
손에 새기기 — 학습 시퀀스
- cuTile 공식 release 추적 — NVIDIA Developer Blog, GTC 발표, github.com/NVIDIA 의 새 repo 모니터링.
- 같은 vector add 세 도구로 비교 — 같은 vector add 를 Triton, Helion, cuTile 로 짜고 PTX 까지 dump. 어떤 명령이 다른지 추적.
- 같은 GEMM 비교 — 위와 같은 비교 실험을 GEMM 으로. 작은 / 큰 GEMM 모두에 대해 측정.
- MLIR dialect 펼치기 — cuTile 의 lowering pass 를 한 번 dump 해서 본다. 같은 source 가 어떤 IR 을 거쳐 PTX 가 되는지.
- 의사결정 사다리 — 자기 워크로드에 대해 “이 hot path 는 어떤 도구가 답인가” 의 결정 framework 작성. portable 인가, NVIDIA-only 인가, layout 통제 필요한가, autotune 자동 원하는가.
§ 11다른 강의로 이어지는 길· connections
cuTile 의 자리에 등장하는 다른 강의들
§ 12열린 질문· open questions
다음에 다시 들었을 때 직접 검증해야 할 것들
- cuTile 의 정확한 API — 노트의 코드 예시는 외부 자료 + Triton 의 일반적 형태를 기반으로 한 개념적 형태. 정확한 함수명 / namespace / decorator 는 NVIDIA 공식 release 이후 확인.
- release 상태 — public release 인지, NVIDIA 내부 도구인지. 발표 시점 (2025) 기준의 정확한 상태.
- Triton 과의 정확한 성능 비교 — 같은 GEMM / attention 의 cuTile vs Triton. NVIDIA 가 발표한 벤치마크 추적.
- PyTorch 통합 방식 — torch.compile backend 로 등장하는지, custom op 으로 register 하는지.
- Helion 과의 관계 — Helion 이 cuTile 을 backend 로 쓸 수 있는지. NVIDIA-first 와 PyTorch-native 의 합쳐짐.
- 비-NVIDIA backend 의 정책 — 기술적으로는 MLIR 위라 가능. NVIDIA 의 입장이 무엇인지.
- CuTe DSL 과의 분담 — 같은 NVIDIA 안의 두 사용자 표면이 어떻게 같이 사는지. 공식 가이드라인.
검증 메모
이 노트는 자막 실패 + slide / repo 부재 + cuTile 자체가 새 도구라는 상태에서 — Mehdi Amini / Jared Roesch 의 background, NVIDIA 의 GTC 발표, MLIR / Triton 진영의 일반 지식으로 재구성. § 06 의 코드 예시는 정확한 API 가 아니라 개념적 형태. § 07 의 stack 위치, § 09 의 roadmap 도 외부 자료 기반의 추정. 정확한 답은 NVIDIA 의 공식 release 이후.