NVIDIA/cutlass

CUDA Templates and Python DSLs for High-Performance Linear Algebra

해결하는 문제

CUTLASS는 NVIDIA GPU에서 고성능 행렬-행렬 곱셈(GEMM) 및 관련 선형 대수 계산을 구현하기 위한 모듈화된 추상화를 제공합니다. 병렬화 계층 구조와 데이터 이동을 재사용 가능한 소프트웨어 구성 요소로 분해함으로써, 매우 최적화된 CUDA 커널을 작성하는 복잡성을 해결하여, 모든 것을 처음부터 작성하지 않고도 이론적 최적 수준의 처리량에 근접한 성능을 달성할 수 있도록 합니다.

작동 방식

CUTLASS는 C++ 템플릿 추상화와 CuTe라는 핵심 라이브러리를 사용하여 스레드와 데이터의 계층적 다차원 레이아웃을 관리합니다. 사용자 정의 타일 크기, 데이터 유형, 알고리즘 정책을 통해 특화 및 튜닝이 가능합니다. 최근에는 CuTe DSL(처음에는 CuTe DSL)을 포함한 CUTLASS DSL이 도입되어, 고성능 CUDA 커널을 작성할 수 있는 Python 네이티브 인터페이스를 제공함으로써 컴파일 시간을 단축하고 C++에 대한 깊은 전문 지식이 필요 없으면서도 성능을 유지합니다.

대상 사용자

저수준 C++를 사용하는 사용자부터 Python 기반 프로토타이핑 워크플로우를 선호하는 사용자까지, NVIDIA GPU에서 최적화된 선형 대수 연산을 구현해야 하는 성능 엔지니어, 연구자, 학생들을 대상으로 설계되었습니다.

주요 특징

  • 광범위한 하드웨어 지원: Volta부터 Blackwell, Rubin까지의 NVIDIA 아키텍처를 대상으로 합니다.
  • 다양한 데이터 유형 지원: FP64, FP32, TF32, FP16, BF16, FP8, FP4 및 좁은 정수형을 포함한 다양한 정밀도를 지원합니다.
  • CuTe 라이브러리: 레이아웃과 텐서를 통해 스레드와 데이터의 텐서를 기술하고 조작하는 전용 시스템입니다.
  • Python DSL: DL 프레임워크와 통합되며 개발 주기를 가속화하는 CUDA 커널을 작성할 수 있는 네이티브 Python 인터페이스입니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트