CUDA 플랫폼이 2006년에 등장한 이후 가장 큰 혁신 중 하나로 평가되는 CUDA 13.1이 NVIDIA CUDA Tile을 새롭게 도입합니다. 이 기술은 타일 기반 병렬 프로그래밍을 위한 가상 명령어 집합을 도입해, 텐서 코어와 같은 특수 하드웨어의 세부 구현을 감추고 더 높은 수준에서 알고리즘을 작성할 수 있도록 지원합니다.
왜 GPU를 위한 타일 프로그래밍인가요?
CUDA는 개발자에게 단일 명령어 다중 스레드(SIMT) 하드웨어 및 프로그래밍 모델을 제공합니다. 이는 코드 실행 방식을 세밀하게 제어할 수 있는 최대한의 유연성을 제공하지만, 동시에 여러 GPU 아키텍처 전반에서 높은 성능을 내기 위해서는 상당한 구현 노력이 필요합니다.
NVIDIA CUDA-X, NVIDIA CUTLASS와 같은 라이브러리는 성능 최적화를 돕고 있지만, CUDA Tile은 SIMT보다 높은 수준에서 GPU를 프로그래밍할 수 있는 새로운 접근 방식을 제시합니다.
특히 AI 분야에서 컴퓨팅 워크로드가 진화함에 따라 텐서는 기본적인 데이터 유형이 되었습니다. NVIDIA는 NVIDIA 텐서 코어(TC) 및 NVIDIA 텐서 메모리 가속기(TMA)와 같이 텐서에서 작동하는 전문화된 하드웨어를 개발했으며, 이는 이제 모든 새로운 GPU 아키텍처의 중요한 구성 요소로 자리 잡았습니다.
하드웨어가 더욱 복잡해짐에 따라, 이러한 기능을 활용하는 데 도움이 되는 더 많은 소프트웨어가 필요합니다. CUDA Tile은 텐서 코어와 그 프로그래밍 모델을 추상화하여, CUDA Tile을 사용하는 코드가 현재 및 미래의 텐서 코어 아키텍처와 호환되도록 설계되었습니다.
타일 기반 프로그래밍을 사용하면 데이터 청크, 즉 타일을 지정한 다음 해당 타일에서 수행되는 계산을 정의하여 알고리즘을 프로그래밍할 수 있습니다. 알고리즘이 요소별 수준에서 어떻게 실행될지 설정할 필요가 없으며 컴파일러와 런타임이 그 부분을 대신 처리합니다.
그림 1은 CUDA Tile과 함께 도입하는 타일 모델과 CUDA SIMT 모델 간의 개념적 차이를 보여줍니다.

이러한 프로그래밍 패러다임은 Python과 같은 언어에서 일반적이며, NumPy와 같은 라이브러리가 행렬과 같은 데이터 유형을 지정하고 간단한 코드로 대량 연산을 지정하고 실행할 수 있게 합니다. 내부 구현은 자동으로 처리되며 개발자는 연산 과정에 개입할 필요가 없습니다.
CUDA Tile IR: 타일 프로그래밍의 기반
CUDA Tile의 기반은 CUDA Tile IR (중간 표현)입니다. CUDA Tile IR은 타일 연산으로서 하드웨어를 네이티브로 프로그래밍할 수 있게 하는 가상 명령어 세트를 도입합니다. 개발자는 최소한의 변경으로 여러 세대의 GPU에서 효율적으로 실행되는 더 높은 수준의 코드를 작성할 수 있습니다.
NVIDIA 병렬 스레드 실행(PTX)이 SIMT 프로그램의 이식성을 보장하는 반면, CUDA Tile IR은 타일 기반 프로그램에 대한 네이티브 지원으로 CUDA 플랫폼을 확장합니다. 개발자는 데이터 병렬 프로그램을 타일과 타일 블록으로 분할하는 데 집중하고, CUDA Tile IR이 스레드, 메모리 계층 및 텐서 코어와 같은 하드웨어 리소스에 매핑하는 것을 처리하도록 합니다.
추상화 수준을 높임으로써, CUDA Tile IR은 사용자가 NVIDIA 하드웨어를 위한 더 높은 수준의 하드웨어별 컴파일러, 프레임워크 및 도메인 특정 언어(DSL)를 구축할 수 있도록 합니다. 타일 프로그래밍을 위한 CUDA Tile IR은 SIMT 프로그래밍을 위한 PTX와 유사합니다.
중요한 점은, SIMT와 타일 프로그래밍이 서로를 대체하는 개념이 아니라는 것입니다. GPU에서의 타일 프로그래밍은 GPU 코드를 작성하는 또 다른 접근 방식이지만, SIMT와 타일 프로그래밍 중에서 선택할 필요는 없습니다. SIMT가 필요한 경우에는 기존 방식대로 커널을 작성하면 되고, 텐서 코어 기반 작업을 활용하고 싶을 때는 타일 커널을 작성하면 됩니다.
그림 2는 CUDA Tile이 전체 소프트웨어 스택 내에서 어떤 역할을 하는지, 그리고 타일 경로가 기존 SIMT 경로와 나란히 보완적으로 제공되는 구조를 보여줍니다.

개발자는 CUDA Tile을 사용하여 GPU 애플리케이션을 어떻게 작성할 수 있나요?
CUDA Tile IR은 대부분의 프로그래머가 타일 프로그래밍과 접촉하게 될 계층보다 한 단계 아래에 있습니다. 컴파일러나 라이브러리를 작성하는 경우가 아니라면, CUDA Tile IR 소프트웨어의 세부 사항에 대해 걱정할 필요가 없습니다.
- NVIDIA cuTile Python: 대부분의 개발자는 CUDA Tile IR을 백엔드로 사용하는 NVIDIA cuTile Python과 같은 소프트웨어를 통해 타일 프로그래밍을 사용하게 됩니다. 예제 코드와 문서를 포함한 cuTile Python 사용 방법은 별도 블로그에서 자세히 소개하고 있습니다.
- CUDA Tile IR: 자체 DSL 컴파일러나 라이브러리를 개발하려는 경우, CUDA Tile IR이 직접 다뤄야 하는 영역이 됩니다. 문서와 사양에는 CUDA Tile IR의 프로그래밍 추상화, 문법, 의미 체계가 포함되어 있으며, 기존에 PTX를 대상으로 개발해온 도구·컴파일러·라이브러리는 CUDA Tile IR을 함께 지원하도록 확장할 수 있습니다.
CUDA Tile 소프트웨어 얻는 방법
CUDA Tile은 CUDA 13.1과 함께 출시되었습니다. 문서, GitHub 저장소, 샘플 코드 등 모든 정보는 CUDA Tile 페이지에서 확인할 수 있습니다.