NVlabs/CuTe

Reference implementation and examples of the CuTe Layout representation and algebra.

무엇을 해결하는가

PyCuTe는 NVIDIA의 CUTLASS 3.x에서 사용되는 계층적 레이아웃 및 텐서 대수의 순수 Python 참조 구현을 제공합니다. 이를 통해 개발자는 GPU 없이도 복잡한 대수를 학습하고, 새로운 데이터 변환을 프로토타이핑하며, C++ 및 DSL 구현을 위한 테스트 벡터를 생성할 수 있습니다.

작동 방식

PyCuTe의 핵심은 LayoutShape(도메인)와 Stride(매핑 로직)를 사용하여 좌표를 오프셋으로 매핑하는 함수로 정의하는 것입니다. 이는 다음과 같은 레이아웃 조작을 위한 일련의 대수적 연산을 구현합니다:

  • Coalesce: 레이아웃을 최소한의 모드 수로 단순화합니다.
  • Composition: 하나의 레이아웃을 다른 레이아웃을 통해 인덱싱합니다.
  • Complement: 공역을 채우기 위해 누락된 모드를 식별합니다.
  • Logical Divide/Product: 패턴의 타일링 및 반복을 처리합니다.
  • Inversion/Nullspace: 맵을 분석하고 반전시킵니다.

또한, 공유 메모리 뱅크 충돌(bank conflicts)을 시각화하고 관리하는 데 도움이 되는 F2 (XOR-swizzle) 스트라이드를 지원합니다. 얇은 Tensor 레이어는 이러한 레이아웃을 Accessor와 결합하여 데이터 모델을 제공합니다.

대상 사용자

  • CUTLASS 3.x 또는 CuTe DSL을 사용하는 개발자.
  • GPU 텐서 연산 및 메모리 레이아웃을 프로토타이핑하는 엔지니어.
  • 계층적 레이아웃 대수를 연구하는 연구자.

주요 특징

  • GPU-Independent: 하드웨어 요구 사항 없이 일반 Python (3.10+)에서 실행됩니다.
  • Visualization Tools: 레이아웃을 ASCII 테이블, 색상이 있는 SVG, 또는 TikZ/PDF로 렌더링하는 유틸리티를 포함합니다.
  • Comprehensive Algebra: CuTe Whitepaper에 설명된 전체 레이아웃 대수를 구현합니다.
  • Swizzle Support: 뱅크 충돌을 시각화하기 위해 XOR-swizzling을 특별히 처리합니다.

관련

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