NVIDIA/warp

A Python framework for GPU-accelerated simulation, robotics, and machine learning.

NVIDIA Warp – GPU 가속 시뮬레이션 및 미분 가능한 물리를 위한 Python

정의 – Warp는 일반 Python 함수를 작성하고 이를 빠른 GPU(또는 CPU) 커널로 JIT 컴파일할 수 있는 Python 라이브러리입니다. 입자 역학, 유체 흐름, 유한 요소 분석, 기하학 처리와 같은 고성능 시뮬레이션 작업을 대상으로 하며, 커널은 미분 가능하므로 PyTorch, JAX 또는 Paddle 파이프라인에 통합할 수 있습니다.

주요 개념

  • 커널 데코레이터 – @wp.kernel은 함수를 GPU 커널로 표시합니다. 내부에서는 Warp의 배열 및 수학 프리미티브(wp.array, wp.vec3, wp.tid(), wp.length_sq 등)를 사용합니다.
  • 자동 JIT – 실행 시 Warp는 커널을 CUDA(또는 CPU) 코드로 컴파일하여 스레드 인덱싱과 메모리 레이아웃을 처리합니다.
  • 미분 가능 – 기울기가 Warp 커널을 통과하여 물리 시뮬레이션의 엔드투엔드 학습을 가능하게 합니다.
  • 상호 운용성 – Warp 텐서는 NumPy 및 딥러닝 프레임워크와 상호 변환할 수 있어 시뮬레이션을 훈련 루프에 쉽게 통합할 수 있습니다.

일반적인 워크플로우

  1. PyPI에서 warp-lang 패키지를 설치합니다(CUDA-12용 nightly wheel도 사용 가능). wheel에는 최신 NVIDIA GPU용으로 사전 컴파일된 CUDA 커널이 포함되어 있습니다.
  2. @wp.kernel 데코레이터를 사용하여 커널을 작성하고 Warp의 타입화된 배열(wp.array[wp.vec3] 등)을 사용합니다.
  3. wp.launch(kernel, dim=…, inputs=[…])로 커널을 실행합니다.
  4. 결과를 NumPy(.numpy())로 변환하거나 PyTorch 모델에 직접 공급합니다.

중요성

  • 속도 – 네이티브 CUDA 커널로 컴파일함으로써 Warp는 수백만 개의 입자를 시뮬레이션하거나 PDE를 순수 Python이나 NumPy보다 수십 배 빠르게 풀 수 있습니다.
  • 미분 가능한 시뮬레이션 – 연구자는 사용자 정의 CUDA 기울기 코드를 작성하지 않고도 물리를 제어하거나 학습하는 신경망(예: 로봇 제어, 유체 인식)을 훈련할 수 있습니다.
  • 광범위한 도메인 커버리지 – 라이브러리에는 중력, SPH 유체, Navier-Stokes, FEM, 레이마칭, 메시 처리 등의 프리미티브와 즉시 실행 가능한 많은 예제가 포함되어 있습니다.

시작하기

pip install warp-lang          # 핵심 라이브러리
pip install warp-lang[examples]  # 선택적 예제 종속성

그런 다음 README의 20줄 중력 데모를 시도하거나 NVIDIA Accelerated Computing Hub에서 연결된 많은 노트북을 탐색하세요.

더 알아보기

  • 공식 문서: https://nvidia.github.io/warp/stable/
  • GTC 및 SIGGRAPH 강연(README의 링크)에서 미분 가능한 시뮬레이션 구축 방법을 설명합니다.
  • warp/examples 디렉토리에는 입자 시스템부터 FEM 형상 최적화까지의 기성 데모가 포함되어 있습니다.

커뮤니티 – Apache 2.0 라이선스로 오픈소스입니다. GitHub 저장소를 통해 이슈, 기능 요청, 풀 리퀘스트를 환영하며, GitHub 외 문의를 위한 전용 이메일 주소(warp-python@nvidia.com)가 제공됩니다.


위의 모든 세부 사항은 저장소의 README에서 직접 가져온 것이며 외부 가정은 추가되지 않았습니다.

관련

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